11import { BadRequestException , Injectable } from '@nestjs/common' ;
22import { ActionType , Prisma } from '@prisma/client' ;
33import { DatabaseService } from 'src/database/database.service' ;
4- import { CreatePollDto , GetPollsDto } from './Poll.dto' ;
4+ import { CreatePollDto , DeletePollDto , GetPollsDto } from './Poll.dto' ;
55
66@Injectable ( )
77export class PollService {
88 constructor ( private readonly databaseService : DatabaseService ) { }
99
10- async createPoll ( userId : number , createPollDto : CreatePollDto ) {
10+ async createPoll ( createPollDto : CreatePollDto ) {
1111 const user = await this . databaseService . user . findUnique ( {
12- where : { id : userId } ,
12+ where : { worldID : createPollDto . worldID } ,
1313 } ) ;
1414 if ( ! user ) {
1515 throw new BadRequestException ( 'User does not exist' ) ;
@@ -30,7 +30,7 @@ export class PollService {
3030 // Create the poll
3131 const newPoll = await tx . poll . create ( {
3232 data : {
33- authorUserId : userId ,
33+ authorUserId : user . id ,
3434 title : createPollDto . title ,
3535 description : createPollDto . description ,
3636 options : createPollDto . options ,
@@ -45,15 +45,15 @@ export class PollService {
4545 // Create user action for CREATED
4646 await tx . userAction . create ( {
4747 data : {
48- userId,
48+ userId : user . id ,
4949 pollId : newPoll . pollId ,
5050 type : ActionType . CREATED ,
5151 } ,
5252 } ) ;
5353
5454 // Update user's pollsCreatedCount
5555 await tx . user . update ( {
56- where : { id : userId } ,
56+ where : { worldID : createPollDto . worldID } ,
5757 data : {
5858 pollsCreatedCount : {
5959 increment : 1 ,
@@ -65,7 +65,7 @@ export class PollService {
6565 } ) ;
6666 }
6767
68- async getPolls ( userId : number , query : GetPollsDto ) {
68+ async getPolls ( query : GetPollsDto ) {
6969 const {
7070 page = 1 ,
7171 limit = 10 ,
@@ -78,6 +78,8 @@ export class PollService {
7878 const skip = ( page - 1 ) * limit ;
7979 const now = new Date ( ) ;
8080 const filters : any = { } ;
81+ let userId : number | undefined ;
82+
8183 if ( isActive ) {
8284 filters . startDate = { lte : now } ;
8385 filters . endDate = { gt : now } ;
@@ -86,6 +88,20 @@ export class PollService {
8688 if ( isActive === false ) {
8789 filters . OR = [ { startDate : { gt : now } } , { endDate : { lte : now } } ] ;
8890 }
91+ if ( ( userCreated || userVoted ) && query . worldID ) {
92+ const user = await this . databaseService . user . findUnique ( {
93+ where : { worldID : query . worldID } ,
94+ select : { id : true } ,
95+ } ) ;
96+
97+ if ( ! user ) {
98+ throw new Error ( 'User not found' ) ;
99+ }
100+ userId = user . id ;
101+ } else if ( userCreated || userVoted ) {
102+ throw new Error ( 'worldId Not Provided' ) ;
103+ }
104+
89105 if ( userCreated ) {
90106 filters . authorUserId = userId ;
91107 }
@@ -139,15 +155,24 @@ export class PollService {
139155 return { user, poll, isActive } ;
140156 }
141157
142- async deletePoll ( userId : number , pollId : number ) {
158+ async deletePoll ( pollId : number , query : DeletePollDto ) {
159+ const user = await this . databaseService . user . findUnique ( {
160+ where : { worldID : query . worldID } ,
161+ select : { id : true } ,
162+ } ) ;
163+
164+ if ( ! user ) {
165+ throw new Error ( 'User not found' ) ;
166+ }
167+
143168 const poll = await this . databaseService . poll . findUnique ( {
144169 where : { pollId } ,
145170 } ) ;
146171
147172 if ( ! poll ) {
148173 throw new Error ( 'Poll not found' ) ;
149174 }
150- if ( poll . authorUserId !== userId ) {
175+ if ( poll . authorUserId !== user . id ) {
151176 throw new Error ( 'User Not Authorized' ) ;
152177 }
153178
0 commit comments