@@ -7,12 +7,17 @@ import {
77 Param ,
88 Delete ,
99 UploadedFiles ,
10+ UseInterceptors ,
1011} from '@nestjs/common' ;
12+ import { FilesInterceptor } from '@nestjs/platform-express' ;
13+ import { diskStorage } from 'multer' ;
14+ import { extname } from 'path' ;
1115import { TreatmentsService } from '@modules/treatments' ;
1216import { Treatments } from '@modules/treatments' ;
1317import { CreateServiceDto as CreateTreatmentDto } from '@modules/treatments' ;
1418import { UpdateServiceDto as UpdateTreatmentDto } from '@modules/treatments' ;
1519import { title } from 'process' ;
20+ import { deleteProperties } from '@common/utils' ;
1621
1722@Controller ( 'treatments' )
1823export class TreatmentsController {
@@ -29,29 +34,70 @@ export class TreatmentsController {
2934 }
3035
3136 @Post ( )
37+ @UseInterceptors (
38+ FilesInterceptor ( 'image' , 10 , {
39+ storage : diskStorage ( {
40+ destination : './uploads/treatments' ,
41+ filename : ( req , file , callback ) => {
42+ const uniqueSuffix =
43+ Date . now ( ) + '-' + Math . round ( Math . random ( ) * 1e9 ) ;
44+ const ext = extname ( file . originalname ) ;
45+ callback ( null , `${ file . fieldname } -${ uniqueSuffix } ${ ext } ` ) ;
46+ } ,
47+ } ) ,
48+ } ) ,
49+ )
3250 async create (
33- @Body ( ) createTreatmentDto : any ,
51+ @Body ( ) createTreatmentDto : CreateTreatmentDto ,
3452 @UploadedFiles ( ) files : Array < Express . Multer . File > ,
3553 ) : Promise < any > {
36- console . log ( 'Create Treatments' ) ;
37- console . log ( createTreatmentDto ) ;
38-
39- const treatment = createTreatmentDto as unknown as Omit <
40- Treatments ,
41- 'id' | 'createdAt'
42- > ;
43- return { title : 'string' } ;
54+ const imagePath =
55+ files && files . length > 0
56+ ? `/uploads/treatments/${ files [ 0 ] . filename } `
57+ : '' ;
58+
59+ const treatment = {
60+ ...createTreatmentDto ,
61+ imageUrl : imagePath ,
62+ } as unknown as Omit < Treatments , 'id' | 'createdAt' > ;
4463 return this . treatmentsService . create ( treatment ) ;
4564 }
4665
4766 @Put ( ':id' )
67+ @UseInterceptors (
68+ FilesInterceptor ( 'files' , 10 , {
69+ storage : diskStorage ( {
70+ destination : './uploads/treatments' ,
71+ filename : ( req , file , callback ) => {
72+ const uniqueSuffix =
73+ Date . now ( ) + '-' + Math . round ( Math . random ( ) * 1e9 ) ;
74+ const ext = extname ( file . originalname ) ;
75+ callback ( null , `${ file . fieldname } -${ uniqueSuffix } ${ ext } ` ) ;
76+ } ,
77+ } ) ,
78+ } ) ,
79+ )
4880 async update (
4981 @Param ( 'id' ) id : string ,
5082 @Body ( ) updateTreatmentDto : UpdateTreatmentDto ,
83+ @UploadedFiles ( ) files : Array < Express . Multer . File > ,
5184 ) : Promise < Treatments > {
85+ const imagePath =
86+ files && files . length > 0
87+ ? `/uploads/treatments/${ files [ 0 ] . filename } `
88+ : null ;
89+
90+ const treatmentData = {
91+ ...updateTreatmentDto ,
92+ } ;
93+
94+ if ( imagePath ) {
95+ ( treatmentData as any ) . imageUrl = imagePath ;
96+ }
97+
5298 return this . treatmentsService . update (
5399 id ,
54- updateTreatmentDto as unknown as Partial < Treatments > ,
100+ treatmentData as unknown as Partial < Treatments > ,
55101 ) ;
56102 }
57103
0 commit comments