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,10 +78,27 @@ 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 } ;
8486 }
87+
88+ if ( ( userCreated || userVoted ) && query . worldID ) {
89+ const user = await this . databaseService . user . findUnique ( {
90+ where : { worldID : query . worldID } ,
91+ select : { id : true } ,
92+ } ) ;
93+
94+ if ( ! user ) {
95+ throw new Error ( 'User not found' ) ;
96+ }
97+ userId = user . id ;
98+ } else if ( userCreated || userVoted ) {
99+ throw new Error ( 'worldId Not Provided' ) ;
100+ }
101+
85102 if ( userCreated ) {
86103 filters . authorUserId = userId ;
87104 }
@@ -135,15 +152,24 @@ export class PollService {
135152 return { user, poll, isActive } ;
136153 }
137154
138- async deletePoll ( userId : number , pollId : number ) {
155+ async deletePoll ( pollId : number , query : DeletePollDto ) {
156+ const user = await this . databaseService . user . findUnique ( {
157+ where : { worldID : query . worldID } ,
158+ select : { id : true } ,
159+ } ) ;
160+
161+ if ( ! user ) {
162+ throw new Error ( 'User not found' ) ;
163+ }
164+
139165 const poll = await this . databaseService . poll . findUnique ( {
140166 where : { pollId } ,
141167 } ) ;
142168
143169 if ( ! poll ) {
144170 throw new Error ( 'Poll not found' ) ;
145171 }
146- if ( poll . authorUserId !== userId ) {
172+ if ( poll . authorUserId !== user . id ) {
147173 throw new Error ( 'User Not Authorized' ) ;
148174 }
149175
0 commit comments