Files
psp_api/src/modules/admin/partners/licenses/licenses.service.ts
T

197 lines
5.3 KiB
TypeScript

import { PrismaService } from '@/prisma/prisma.service'
import { Injectable } from '@nestjs/common'
import { ResponseMapper } from 'common/response/response-mapper'
import { CreatePartnerLicenseDto, UpdateLicenseDto } from './dto/license.dto'
@Injectable()
export class PartnerLicensesService {
constructor(private readonly prisma: PrismaService) {}
async findAll(partnerId: string) {
// const licenses = await this.prisma.license.findMany({
// where: { partner_id: partnerId },
// include: {
// pos: {
// include: {
// complex: true,
// provider: true,
// accounts: {
// include: {
// user: true,
// },
// omit: {
// business_id: true,
// partner_id: true,
// provider_id: true,
// pos_id: true,
// },
// },
// device: {
// include: {
// brand: true,
// },
// omit: {
// brand_id: true,
// },
// },
// },
// },
// },
// omit: {
// pos_id: true,
// partner_id: true,
// },
// })
// return ResponseMapper.list(
// licenses.map(license => {
// const { pos, ...rest } = license
// const { accounts, ...posRest } = pos
// return {
// account: accounts[0],
// pos: posRest,
// ...rest,
// }
// }),
// )
}
async findOne(partnerId: string, id: string) {
// const license = await this.prisma.license.findFirst({
// where: { id, partner_id: partnerId },
// include: {
// pos: {
// include: {
// complex: true,
// provider: true,
// accounts: {
// include: {
// user: true,
// },
// omit: {
// business_id: true,
// partner_id: true,
// provider_id: true,
// pos_id: true,
// },
// },
// device: {
// include: {
// brand: true,
// },
// omit: {
// brand_id: true,
// },
// },
// },
// },
// },
// omit: {
// pos_id: true,
// partner_id: true,
// },
// })
// if (license) {
// const { pos, ...rest } = license
// const { accounts, ...posRest } = pos
// return ResponseMapper.single({
// account: accounts[0],
// pos: posRest,
// ...rest,
// })
// }
return ResponseMapper.single({})
}
async create(partnerId: string, data: CreatePartnerLicenseDto) {
// const license = await this.prisma.$transaction(async tx => {
// const user = await tx.user.upsert({
// where: {
// mobile_number: data.mobile_number,
// },
// update: {},
// create: {
// first_name: data.first_name,
// last_name: data.last_name,
// mobile_number: data.mobile_number,
// national_code: data.national_code,
// },
// })
// const business = await tx.businessActivity.create({
// data: {
// name: data.business_activity_name,
// guild_id: data.guild,
// user: {
// connect: {
// id: user.id,
// },
// },
// },
// })
// const complex = await tx.complex.create({
// data: {
// name: data.complex_name,
// tax_id: data.tax_id,
// business_activity_id: business.id,
// },
// })
// const pos = await tx.pos.create({
// data: {
// pos_type: data.pos_type,
// serial: data.pos_serial,
// device_id: data.pos_device,
// complex_id: complex.id,
// },
// })
// const date = new Date()
// const expiresAt = new Date(date.setFullYear(date.getFullYear() + 1))
// const license = await tx.license.create({
// data: {
// partner_id: partnerId,
// pos_id: pos.id,
// starts_at: data.starts_at || new Date(),
// expires_at: data.expires_at || expiresAt,
// status: LicenseStatus.ACTIVE,
// },
// })
// const hashedPassword = await PasswordUtil.hash(data.password)
// const account = await tx.account.create({
// data: {
// username: data.username,
// password: hashedPassword,
// type: AccountType.POS,
// user_id: user.id,
// pos_id: pos.id,
// status: data.account_status,
// },
// })
// return {
// license,
// }
// })
return ResponseMapper.create('license')
}
async update(partnerId: string, id: string, data: UpdateLicenseDto) {
const license = await this.prisma.license.update({
where: { id },
data: { ...data, partner_id: partnerId },
})
return ResponseMapper.update(license)
}
async delete(partnerId: string, id: string) {
await this.prisma.license.delete({ where: { id } })
return ResponseMapper.delete()
}
}