import { ComplexSelect, ComplexWhereInput } from '@/generated/prisma/models' import { PrismaService } from '@/prisma/prisma.service' import { Injectable } from '@nestjs/common' import { ResponseMapper } from 'common/response/response-mapper' import { CreateComplexDto, UpdateComplexDto } from './dto/complex.dto' @Injectable() export class BusinessActivityComplexesService { constructor(private readonly prisma: PrismaService) {} private readonly defaultSelect: ComplexSelect = { id: true, name: true, address: true, branch_code: true, created_at: true, } private readonly defaultWhere = ( partner_id, consumer_id, business_activity_id, ): ComplexWhereInput => ({ business_activity: { id: business_activity_id, consumer: { id: consumer_id, partner_id, }, }, }) async findAll(partner_id: string, consumer_id: string, business_activity_id: string) { const accounts = await this.prisma.complex.findMany({ where: this.defaultWhere(partner_id, consumer_id, business_activity_id), select: this.defaultSelect, }) return ResponseMapper.list(accounts) } async findOne( partner_id: string, consumer_id: string, business_activity_id: string, id: string, ) { const account = await this.prisma.complex.findUnique({ where: { ...this.defaultWhere(partner_id, consumer_id, business_activity_id), id, }, select: this.defaultSelect, }) return ResponseMapper.single(account) } async create(business_id: string, data: CreateComplexDto) { const account = await this.prisma.complex.create({ data: { ...data, business_activity: { connect: { id: business_id, }, }, }, }) return ResponseMapper.create(account) } async update( partner_id: string, consumer_id: string, business_activity_id: string, id: string, data: UpdateComplexDto, ) { const account = await this.prisma.complex.update({ where: { ...this.defaultWhere(partner_id, consumer_id, business_activity_id), id }, data, }) return ResponseMapper.update(account) } // async delete(id: string) { // await this.prisma.complex.delete({ where: { id } }) // return ResponseMapper.delete() // } }