8
8
Body ,
9
9
Param ,
10
10
Query ,
11
- NotFoundException ,
12
- InternalServerErrorException ,
13
11
HttpCode ,
14
12
HttpStatus ,
15
13
} from '@nestjs/common' ;
@@ -32,24 +30,15 @@ import {
32
30
ReviewTypeRequestDto ,
33
31
ReviewTypeUpdateRequestDto ,
34
32
} from 'src/dto/reviewType.dto' ;
35
- import { PrismaService } from '../../shared/modules/global/prisma.service' ;
36
- import { LoggerService } from '../../shared/modules/global/logger.service' ;
37
33
import { PaginationDto } from '../../dto/pagination.dto' ;
38
34
import { SortDto } from '../../dto/sort.dto' ;
39
- import { PrismaErrorService } from '../../shared/modules/global/prisma-error .service' ;
35
+ import { ReviewTypeService } from './review-type .service' ;
40
36
41
37
@ApiTags ( 'ReviewTypes' )
42
38
@ApiBearerAuth ( )
43
39
@Controller ( '/reviewTypes' )
44
40
export class ReviewTypeController {
45
- private readonly logger : LoggerService ;
46
-
47
- constructor (
48
- private readonly prisma : PrismaService ,
49
- private readonly prismaErrorService : PrismaErrorService ,
50
- ) {
51
- this . logger = LoggerService . forRoot ( 'ReviewTypeController' ) ;
52
- }
41
+ constructor ( private readonly reviewTypeService : ReviewTypeService ) { }
53
42
54
43
@Post ( )
55
44
@Roles ( UserRole . Admin , UserRole . Copilot )
@@ -67,25 +56,7 @@ export class ReviewTypeController {
67
56
async createReviewType (
68
57
@Body ( ) body : ReviewTypeRequestDto ,
69
58
) : Promise < ReviewTypeResponseDto > {
70
- this . logger . log (
71
- `Creating review type with request boy: ${ JSON . stringify ( body ) } ` ,
72
- ) ;
73
- try {
74
- const data = await this . prisma . reviewType . create ( {
75
- data : body ,
76
- } ) ;
77
- this . logger . log ( `Review type created with ID: ${ data . id } ` ) ;
78
- return data as ReviewTypeResponseDto ;
79
- } catch ( error ) {
80
- const errorResponse = this . prismaErrorService . handleError (
81
- error ,
82
- 'creating review type' ,
83
- ) ;
84
- throw new InternalServerErrorException ( {
85
- message : errorResponse . message ,
86
- code : errorResponse . code ,
87
- } ) ;
88
- }
59
+ return this . reviewTypeService . createReviewType ( body ) ;
89
60
}
90
61
91
62
@Patch ( '/:reviewTypeId' )
@@ -113,7 +84,7 @@ export class ReviewTypeController {
113
84
@Param ( 'reviewTypeId' ) reviewTypeId : string ,
114
85
@Body ( ) body : ReviewTypeUpdateRequestDto ,
115
86
) : Promise < ReviewTypeResponseDto > {
116
- return this . _updateReviewType ( reviewTypeId , body ) ;
87
+ return this . reviewTypeService . updateReviewType ( reviewTypeId , body ) ;
117
88
}
118
89
119
90
@Put ( '/:reviewTypeId' )
@@ -138,31 +109,7 @@ export class ReviewTypeController {
138
109
@Param ( 'reviewTypeId' ) reviewTypeId : string ,
139
110
@Body ( ) body : ReviewTypeRequestDto ,
140
111
) : Promise < ReviewTypeResponseDto > {
141
- return this . _updateReviewType ( reviewTypeId , body ) ;
142
- }
143
-
144
- /**
145
- * The inner update method for entity
146
- */
147
- async _updateReviewType (
148
- reviewTypeId : string ,
149
- body : ReviewTypeUpdateRequestDto ,
150
- ) : Promise < ReviewTypeResponseDto > {
151
- this . logger . log ( `Updating review type with ID: ${ reviewTypeId } ` ) ;
152
- try {
153
- const data = await this . prisma . reviewType . update ( {
154
- where : { id : reviewTypeId } ,
155
- data : body ,
156
- } ) ;
157
- this . logger . log ( `Review type updated successfully: ${ reviewTypeId } ` ) ;
158
- return data as ReviewTypeResponseDto ;
159
- } catch ( error ) {
160
- throw this . _rethrowError (
161
- error ,
162
- reviewTypeId ,
163
- `updating review type ${ reviewTypeId } ` ,
164
- ) ;
165
- }
112
+ return this . reviewTypeService . updateReviewType ( reviewTypeId , body ) ;
166
113
}
167
114
168
115
@Get ( )
@@ -183,63 +130,11 @@ export class ReviewTypeController {
183
130
@Query ( ) paginationDto ?: PaginationDto ,
184
131
@Query ( ) sortDto ?: SortDto ,
185
132
) : Promise < ReviewTypeResponseDto [ ] > {
186
- this . logger . log (
187
- `Getting review types with filters - ${ JSON . stringify ( queryDto ) } ` ,
133
+ return this . reviewTypeService . listReviewTypes (
134
+ queryDto ,
135
+ paginationDto ,
136
+ sortDto ,
188
137
) ;
189
-
190
- const { page = 1 , perPage = 10 } = paginationDto || { } ;
191
- const skip = ( page - 1 ) * perPage ;
192
- let orderBy ;
193
-
194
- if ( sortDto && sortDto . orderBy && sortDto . sortBy ) {
195
- orderBy = {
196
- [ sortDto . sortBy ] : sortDto . orderBy . toLowerCase ( ) ,
197
- } ;
198
- }
199
-
200
- try {
201
- // Build the where clause for review types based on available filter parameters
202
- const reviewTypeWhereClause : any = { } ;
203
- if ( queryDto . name ) {
204
- reviewTypeWhereClause . name = queryDto . name ;
205
- }
206
- if ( queryDto . isActive !== undefined ) {
207
- reviewTypeWhereClause . isActive =
208
- queryDto . isActive . toLowerCase ( ) === 'true' ;
209
- }
210
-
211
- // find entities by filters
212
- const reviewTypes = await this . prisma . reviewType . findMany ( {
213
- where : {
214
- ...reviewTypeWhereClause ,
215
- } ,
216
- skip,
217
- take : perPage ,
218
- orderBy,
219
- } ) ;
220
-
221
- // Count total entities matching the filter for pagination metadata
222
- const totalCount = await this . prisma . reviewType . count ( {
223
- where : {
224
- ...reviewTypeWhereClause ,
225
- } ,
226
- } ) ;
227
-
228
- this . logger . log (
229
- `Found ${ reviewTypes . length } review types (page ${ page } of ${ Math . ceil ( totalCount / perPage ) } )` ,
230
- ) ;
231
-
232
- return reviewTypes as ReviewTypeResponseDto [ ] ;
233
- } catch ( error ) {
234
- const errorResponse = this . prismaErrorService . handleError (
235
- error ,
236
- 'fetching review types' ,
237
- ) ;
238
- throw new InternalServerErrorException ( {
239
- message : errorResponse . message ,
240
- code : errorResponse . code ,
241
- } ) ;
242
- }
243
138
}
244
139
245
140
@Get ( '/:reviewTypeId' )
@@ -262,21 +157,7 @@ export class ReviewTypeController {
262
157
async getReviewType (
263
158
@Param ( 'reviewTypeId' ) reviewTypeId : string ,
264
159
) : Promise < ReviewTypeResponseDto > {
265
- this . logger . log ( `Getting review type with ID: ${ reviewTypeId } ` ) ;
266
- try {
267
- const data = await this . prisma . reviewType . findUniqueOrThrow ( {
268
- where : { id : reviewTypeId } ,
269
- } ) ;
270
-
271
- this . logger . log ( `Review type found: ${ reviewTypeId } ` ) ;
272
- return data as ReviewTypeResponseDto ;
273
- } catch ( error ) {
274
- throw this . _rethrowError (
275
- error ,
276
- reviewTypeId ,
277
- `fetching review type ${ reviewTypeId } ` ,
278
- ) ;
279
- }
160
+ return this . reviewTypeService . getReviewType ( reviewTypeId ) ;
280
161
}
281
162
282
163
@Delete ( '/:reviewTypeId' )
@@ -298,38 +179,6 @@ export class ReviewTypeController {
298
179
@ApiResponse ( { status : 403 , description : 'Forbidden.' } )
299
180
@ApiResponse ( { status : 404 , description : 'Review not found.' } )
300
181
async deleteReviewType ( @Param ( 'reviewTypeId' ) reviewTypeId : string ) {
301
- this . logger . log ( `Deleting review type with ID: ${ reviewTypeId } ` ) ;
302
- try {
303
- await this . prisma . reviewType . delete ( {
304
- where : { id : reviewTypeId } ,
305
- } ) ;
306
- this . logger . log ( `Review type deleted successfully: ${ reviewTypeId } ` ) ;
307
- return { message : `Review type ${ reviewTypeId } deleted successfully.` } ;
308
- } catch ( error ) {
309
- throw this . _rethrowError (
310
- error ,
311
- reviewTypeId ,
312
- `deleting review type ${ reviewTypeId } ` ,
313
- ) ;
314
- }
315
- }
316
-
317
- /**
318
- * Build exception by error code
319
- */
320
- _rethrowError ( error : any , reviewTypeId : string , message : string ) {
321
- const errorResponse = this . prismaErrorService . handleError ( error , message ) ;
322
-
323
- if ( errorResponse . code === 'RECORD_NOT_FOUND' ) {
324
- return new NotFoundException ( {
325
- message : `Review type with ID ${ reviewTypeId } was not found` ,
326
- code : errorResponse . code ,
327
- } ) ;
328
- }
329
-
330
- return new InternalServerErrorException ( {
331
- message : errorResponse . message ,
332
- code : errorResponse . code ,
333
- } ) ;
182
+ return this . reviewTypeService . deleteReviewType ( reviewTypeId ) ;
334
183
}
335
184
}
0 commit comments