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,13 +1,19 @@
|
||||
import { QUERY_CONSTANTS } from '@/common/queryConstants'
|
||||
import mapConsumerWithLicenseUtil from '@/common/utils/mappers/consumer_mappers.util'
|
||||
import { PasswordUtil } from '@/common/utils/password.util'
|
||||
import {
|
||||
AccountStatus,
|
||||
AccountType,
|
||||
ConsumerRole,
|
||||
ConsumerStatus,
|
||||
ConsumerType,
|
||||
PartnerStatus,
|
||||
} from '@/generated/prisma/enums'
|
||||
import { ConsumerSelect, ConsumerWhereInput } from '@/generated/prisma/models'
|
||||
import mapConsumerWithLicenseUtil from '@/modules/consumer/utils/mapConsumerWithLicense.util'
|
||||
import {
|
||||
ConsumerCreateInput,
|
||||
ConsumerSelect,
|
||||
ConsumerWhereInput,
|
||||
} from '@/generated/prisma/models'
|
||||
import { PrismaService } from '@/prisma/prisma.service'
|
||||
import { BadRequestException, Injectable } from '@nestjs/common'
|
||||
import { ResponseMapper } from 'common/response/response-mapper'
|
||||
@@ -25,16 +31,24 @@ export class PartnerConsumersService {
|
||||
|
||||
defaultSelect: ConsumerSelect = {
|
||||
id: true,
|
||||
first_name: true,
|
||||
last_name: true,
|
||||
mobile_number: true,
|
||||
national_code: true,
|
||||
...QUERY_CONSTANTS.CONSUMER.infoSelect,
|
||||
status: true,
|
||||
created_at: true,
|
||||
}
|
||||
|
||||
private defaultWhere = (partner_id: string): ConsumerWhereInput => ({
|
||||
partner_id,
|
||||
OR: [
|
||||
{
|
||||
legal: {
|
||||
partner_id,
|
||||
},
|
||||
},
|
||||
{
|
||||
individual: {
|
||||
partner_id,
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
async findAll(partner_id: string, page = 1, perPage = 10) {
|
||||
@@ -105,48 +119,102 @@ export class PartnerConsumersService {
|
||||
throw new BadRequestException(`تعداد لایسنسهای فعلی شما به پایان رسیده است.`)
|
||||
}
|
||||
|
||||
const { username, password, license_starts_at, ...rest } = data
|
||||
const { username, password, customer, ...rest } = data
|
||||
const { individual, legal } = customer
|
||||
|
||||
const existingConsumer = await tx.consumer.findFirst({
|
||||
where: {
|
||||
partner_id,
|
||||
OR: [
|
||||
{ mobile_number: data.mobile_number },
|
||||
{ national_code: data.national_code },
|
||||
],
|
||||
},
|
||||
select: { id: true, first_name: true, last_name: true },
|
||||
})
|
||||
|
||||
if (existingConsumer) {
|
||||
throw new BadRequestException(
|
||||
`مصرف کنندهی ${existingConsumer.first_name} ${existingConsumer.last_name} با شماره موبایل یا کد ملی وارد شده از قبل ثبت شده است.`,
|
||||
)
|
||||
}
|
||||
|
||||
return await tx.consumer.create({
|
||||
data: {
|
||||
...rest,
|
||||
partner: {
|
||||
connect: {
|
||||
id: partner_id,
|
||||
},
|
||||
},
|
||||
consumer_accounts: {
|
||||
create: {
|
||||
role: ConsumerRole.OWNER,
|
||||
account: {
|
||||
create: {
|
||||
username,
|
||||
password: await PasswordUtil.hash(password),
|
||||
type: AccountType.CONSUMER,
|
||||
status: AccountStatus.ACTIVE,
|
||||
},
|
||||
const createConsumerData: ConsumerCreateInput = {
|
||||
...rest,
|
||||
accounts: {
|
||||
create: {
|
||||
role: ConsumerRole.OWNER,
|
||||
account: {
|
||||
create: {
|
||||
username,
|
||||
password: await PasswordUtil.hash(password),
|
||||
type: AccountType.CONSUMER,
|
||||
status: AccountStatus.ACTIVE,
|
||||
},
|
||||
},
|
||||
},
|
||||
status: ConsumerStatus.ACTIVE,
|
||||
},
|
||||
status: ConsumerStatus.ACTIVE,
|
||||
}
|
||||
|
||||
const partner = {
|
||||
partner: { connect: { id: partner_id } },
|
||||
}
|
||||
|
||||
if (!legal && !individual) {
|
||||
throw new BadRequestException(
|
||||
`برای ایجاد مصرف کننده باید یکی از اطلاعات فردی یا حقوقی وارد شود.`,
|
||||
)
|
||||
}
|
||||
if (data.type === ConsumerType.INDIVIDUAL && !individual) {
|
||||
throw new BadRequestException(
|
||||
`برای ایجاد مصرف کننده با نوع حقیقی باید اطلاعات فردی وارد شود.`,
|
||||
)
|
||||
}
|
||||
if (data.type === ConsumerType.LEGAL && !legal) {
|
||||
throw new BadRequestException(
|
||||
`برای ایجاد مصرف کننده با نوع حقوقی باید اطلاعات حقوقی وارد شود.`,
|
||||
)
|
||||
}
|
||||
|
||||
let consumerExistError = ''
|
||||
|
||||
if (legal) {
|
||||
const existingConsumer = await tx.consumer.findFirst({
|
||||
where: {
|
||||
legal: { registration_code: legal.registration_code, partner_id },
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
legal: {
|
||||
select: {
|
||||
name: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
createConsumerData.legal = {
|
||||
create: {
|
||||
...legal,
|
||||
...partner,
|
||||
},
|
||||
}
|
||||
|
||||
if (existingConsumer) {
|
||||
consumerExistError = `مشتری با نام ${existingConsumer.legal!.name} با این شماره ثبت، از قبل توسط شما ایجاد شده است.`
|
||||
}
|
||||
} else if (individual) {
|
||||
const existingConsumer = await tx.consumer.findFirst({
|
||||
where: {
|
||||
individual: { national_code: individual.national_code, partner_id },
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
individual: {
|
||||
select: {
|
||||
first_name: true,
|
||||
last_name: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
createConsumerData.individual = {
|
||||
create: {
|
||||
...individual,
|
||||
...partner,
|
||||
},
|
||||
}
|
||||
|
||||
if (existingConsumer) {
|
||||
;`مشتری با نام ${existingConsumer.individual!.first_name} ${existingConsumer.individual!.last_name} یا این کد ملی، از قبل توسط شما ایجاد شده است.`
|
||||
}
|
||||
}
|
||||
|
||||
return await tx.consumer.create({
|
||||
data: createConsumerData,
|
||||
select: this.defaultSelect,
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user