From c5c334692d638516d5f5118a07b7226503fee2a5 Mon Sep 17 00:00:00 2001 From: nicekid1 <86746988+nicekid1@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:46:48 +0330 Subject: [PATCH] Debug issue with creating multiple invoices for carts --- src/cart/cart.module.ts | 3 ++- src/cart/cart.service.ts | 24 +++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/cart/cart.module.ts b/src/cart/cart.module.ts index 44e5a85..ecb9bab 100644 --- a/src/cart/cart.module.ts +++ b/src/cart/cart.module.ts @@ -9,10 +9,11 @@ import { JwtModule } from "@nestjs/jwt"; import { JwtAuthGuard } from "src/guard/auth.guard"; import { WalletModule } from "src/wallet/wallet.module"; import { InvoiceModule } from "src/invoice/invoice.module"; +import { Invoice } from "src/invoice/entities/invoice.entity"; @Module({ imports: [ - SequelizeModule.forFeature([Cart, User, Product]), + SequelizeModule.forFeature([Cart, User, Product,Invoice]), JwtModule.register({ secret: process.env.JWT_SECRET, signOptions: { expiresIn: "1h" }, diff --git a/src/cart/cart.service.ts b/src/cart/cart.service.ts index b24a488..9e5c447 100644 --- a/src/cart/cart.service.ts +++ b/src/cart/cart.service.ts @@ -10,6 +10,7 @@ import { Invoice } from "src/invoice/entities/invoice.entity"; export class CartService { constructor( @InjectModel(Cart) private readonly cartModel: typeof Cart, + @InjectModel(Invoice) private readonly invoiceModel: typeof Invoice, @InjectModel(Product) private readonly productModel: typeof Product, private readonly walletService: WalletService, @Inject(forwardRef(() => InvoiceService)) @@ -31,6 +32,7 @@ export class CartService { let cart = await this.cartModel.findOne({ where: { userId, productId, status: "open" } }); if (!cart) { + // اگر کارتی برای کاربر و محصول وجود ندارد، ایجاد کنید cart = await this.cartModel.create({ userId, productId, @@ -38,18 +40,30 @@ export class CartService { productPrice: product.price, status: "open", }); - - const invoice = await this.invoiceService.createInvoiceFromCart(userId); + + // بررسی وجود فاکتور در انتظار + let invoice = await this.invoiceModel.findOne({ where: { userId, status: "pending" } }); + + // اگر فاکتور وجود ندارد، ایجاد کنید + if (!invoice) { + invoice = await this.invoiceService.createInvoiceFromCart(userId); + } + + // تنظیم `invoiceId` برای کارت و ذخیره cart.invoiceId = invoice.id; await cart.save(); } else { - const invoice = await this.invoiceService.getInvoiceByUserAndCart(userId); + // اگر کارت وجود دارد، بررسی وجود فاکتور مرتبط + let invoice = await this.invoiceService.getInvoiceByUserAndCart(userId); + + // اگر فاکتور وجود ندارد، ایجاد کنید if (!invoice) { - const newInvoice = await this.invoiceService.createInvoiceFromCart(userId); - cart.invoiceId = newInvoice.id; + invoice = await this.invoiceService.createInvoiceFromCart(userId); + cart.invoiceId = invoice.id; await cart.save(); } } + const invoiceId = cart.invoiceId;