import { Injectable } from '@nestjs/common'; import { PrismaService } from '../../common/prisma/prisma.module'; import { serializeBigInt } from '../../common/decorators/current-user.decorator'; @Injectable() export class CatalogService { constructor(private readonly prisma: PrismaService) {} async listCities() { const cities = await this.prisma.city.findMany({ where: { status: 'ACTIVE' }, include: { partner: { select: { companyName: true } } }, }); return serializeBigInt(cities); } async listProducts(aromaType?: string) { const products = await this.prisma.product.findMany({ where: { status: 'ON_SALE', ...(aromaType ? { aromaType: aromaType as never } : {}) }, orderBy: { sortOrder: 'asc' }, }); return serializeBigInt( products.map((p) => ({ ...p, benefitAmount: p.benefitAmount ?? p.price, price: Number(p.price), benefitDisplay: Number(p.benefitAmount ?? p.price), })), ); } async getProduct(id: bigint) { const product = await this.prisma.product.findUnique({ where: { id } }); if (!product) return null; return serializeBigInt({ ...product, benefitAmount: product.benefitAmount ?? product.price, price: Number(product.price), }); } }