56 lines
2.5 KiB
TypeScript
56 lines
2.5 KiB
TypeScript
import { Controller, Delete, Inject, Param, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
|
|
import { FileInterceptor } from '@nestjs/platform-express';
|
|
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
|
|
import { Logger } from 'winston';
|
|
import { FileService } from '../file/file.service.js';
|
|
import { CommercialPropertyService } from '../listings/commercial-property.service.js';
|
|
import { SelectOptionsService } from '../select-options/select-options.service.js';
|
|
|
|
@Controller('image')
|
|
export class ImageController {
|
|
constructor(
|
|
private fileService: FileService,
|
|
private listingService: CommercialPropertyService,
|
|
@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
|
|
private selectOptions: SelectOptionsService,
|
|
) {}
|
|
// ############
|
|
// Property
|
|
// ############
|
|
@Post('uploadPropertyPicture/:imagePath/:serial')
|
|
@UseInterceptors(FileInterceptor('file'))
|
|
async uploadPropertyPicture(@UploadedFile() file: Express.Multer.File, @Param('imagePath') imagePath: string, @Param('serial') serial: string) {
|
|
const imagename = await this.fileService.storePropertyPicture(file, imagePath, serial);
|
|
await this.listingService.addImage(imagePath, serial, imagename);
|
|
}
|
|
@Delete('propertyPicture/:imagePath/:serial/:imagename')
|
|
async deletePropertyImagesById(@Param('imagePath') imagePath: string, @Param('serial') serial: string, @Param('imagename') imagename: string): Promise<any> {
|
|
this.fileService.deleteImage(`pictures/property/${imagePath}/${serial}/${imagename}`);
|
|
await this.listingService.deleteImage(imagePath, serial, imagename);
|
|
}
|
|
// ############
|
|
// Profile
|
|
// ############
|
|
@Post('uploadProfile/:email')
|
|
@UseInterceptors(FileInterceptor('file'))
|
|
async uploadProfile(@UploadedFile() file: Express.Multer.File, @Param('email') adjustedEmail: string) {
|
|
await this.fileService.storeProfilePicture(file, adjustedEmail);
|
|
}
|
|
@Delete('profile/:email/')
|
|
async deleteProfileImagesById(@Param('email') email: string): Promise<any> {
|
|
this.fileService.deleteImage(`pictures/profile/${email}.avif`);
|
|
}
|
|
// ############
|
|
// Logo
|
|
// ############
|
|
@Post('uploadCompanyLogo/:email')
|
|
@UseInterceptors(FileInterceptor('file'))
|
|
async uploadCompanyLogo(@UploadedFile() file: Express.Multer.File, @Param('email') adjustedEmail: string) {
|
|
await this.fileService.storeCompanyLogo(file, adjustedEmail);
|
|
}
|
|
@Delete('logo/:email/')
|
|
async deleteLogoImagesById(@Param('email') adjustedEmail: string): Promise<any> {
|
|
this.fileService.deleteImage(`pictures/logo/${adjustedEmail}.avif`);
|
|
}
|
|
}
|