feat: add response DTOs for various services across modules
- Created response DTOs for ConfigService, AppService, AuthService, CatalogsService, AccountsService, BusinessActivityComplexesService, ComplexPosesService, SalesInvoicesService, BusinessActivitiesService, ConsumerBusinessActivityGoodsService, and others. - Implemented Create, FindAll, FindOne, and Update response types for services in consumer, partners, and POS modules. - Added request DTOs for creating and updating goods in the consumer business activities module. - Introduced filtering DTO for partner licenses. - Enhanced response mapping for partner license activations.
This commit is contained in:
@@ -1,12 +1,17 @@
|
||||
import { UploadedFileTypes } from '@/common/enums/enums'
|
||||
import { ResponseMapper } from '@/common/response/response-mapper'
|
||||
import { PartnerAccountSelect } from '@/generated/prisma/models'
|
||||
import { UploaderService } from '@/modules/uploader/uploader.service'
|
||||
import { PrismaService } from '@/prisma/prisma.service'
|
||||
import { Injectable } from '@nestjs/common'
|
||||
import { UpdatePartnerProfileDto } from './dto/partner.dto'
|
||||
|
||||
@Injectable()
|
||||
export class PartnerService {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
constructor(
|
||||
private readonly prisma: PrismaService,
|
||||
private readonly uploaderService: UploaderService,
|
||||
) {}
|
||||
|
||||
private readonly defaultSelect: PartnerAccountSelect = {}
|
||||
|
||||
@@ -45,6 +50,7 @@ export class PartnerService {
|
||||
id: true,
|
||||
name: true,
|
||||
code: true,
|
||||
logo_url: true,
|
||||
created_at: true,
|
||||
license_charge_transactions: {
|
||||
select: {
|
||||
@@ -193,13 +199,43 @@ export class PartnerService {
|
||||
})
|
||||
}
|
||||
|
||||
async updateInfo(partner_id: string, data: UpdatePartnerProfileDto) {
|
||||
const updatedPartner = await this.prisma.partner.update({
|
||||
where: {
|
||||
id: partner_id,
|
||||
},
|
||||
data,
|
||||
select: this.defaultSelect,
|
||||
async updateInfo(
|
||||
partner_id: string,
|
||||
data: UpdatePartnerProfileDto,
|
||||
logo?: Express.Multer.File,
|
||||
) {
|
||||
const rest = { ...(data as any) }
|
||||
delete rest.logo
|
||||
|
||||
const updatedPartner = await this.prisma.$transaction(async tx => {
|
||||
let logo_url = ''
|
||||
if (logo) {
|
||||
const uploadedUrl = await this.uploaderService.uploadFile(
|
||||
logo,
|
||||
UploadedFileTypes.PARTNER_LOGO,
|
||||
)
|
||||
logo_url = uploadedUrl || ''
|
||||
}
|
||||
|
||||
const prevLogo = await tx.partner.findUnique({
|
||||
where: { id: partner_id },
|
||||
select: { logo_url: true },
|
||||
})
|
||||
|
||||
if (logo_url && prevLogo?.logo_url) {
|
||||
this.uploaderService.deleteFile(prevLogo.logo_url, UploadedFileTypes.PARTNER_LOGO)
|
||||
}
|
||||
|
||||
return tx.partner.update({
|
||||
where: {
|
||||
id: partner_id,
|
||||
},
|
||||
data: {
|
||||
...rest,
|
||||
...(logo_url ? { logo_url } : {}),
|
||||
},
|
||||
select: this.defaultSelect,
|
||||
})
|
||||
})
|
||||
|
||||
return ResponseMapper.single(updatedPartner)
|
||||
|
||||
Reference in New Issue
Block a user