Untitled

 avatar
unknown
plain_text
a year ago
3.1 kB
8
Indexable
public async Task AddProductAsync(int productId, int receiptId, int quantity)
        {
            Product prod = new();
            try { var prod2 = await uow.ProductRepository.GetByIdAsync(productId);
                prod = prod2;
                var a = await uow.ReceiptRepository.GetByIdWithDetailsAsync(receiptId);
                validateForProduct(prod);
                validateForReceipt(a);
                var filtered = a.ReceiptDetails?.FirstOrDefault(x => x.ProductId == productId);
                if (filtered == null)
                {


                    var customerDiscountValue = a.Customer.DiscountValue;
                    var newRDR = new ReceiptDetailModel()
                    {
                        ReceiptId = receiptId,
                        ProductId = productId,
                        DiscountUnitPrice = prod.Price * (100 - customerDiscountValue) / 100,
                        Quantity = quantity,
                        UnitPrice = prod.Price
                    };
                    await uow.ReceiptDetailRepository.AddAsync(mapper.Map<ReceiptDetail>(newRDR));
                }
                else
                {
                    filtered.Quantity += quantity;
                    var newRDR = new ReceiptDetail()
                    {

                        ReceiptId = receiptId,
                        ProductId = productId,

                        Quantity = filtered.Quantity,

                    };
                    uow.ReceiptDetailRepository.Update(newRDR);
                }
            }
            catch (NullReferenceException) {
                var a = await uow.ReceiptRepository.GetByIdWithDetailsAsync(receiptId);

                validateForProduct(prod);
                validateForReceipt(a);

                var filtered = a.ReceiptDetails?.FirstOrDefault(x => x.ProductId == productId);


                if (filtered == null)
                {


                    var customerDiscountValue = a.Customer.DiscountValue;
                    var newRDR = new ReceiptDetailModel()
                    {
                        ReceiptId = receiptId,
                        ProductId = productId,
                        DiscountUnitPrice = prod.Price * (100 - customerDiscountValue) / 100,
                        Quantity = quantity,
                        UnitPrice = prod.Price
                    };
                    await uow.ReceiptDetailRepository.AddAsync(mapper.Map<ReceiptDetail>(newRDR));
                }
                else
                {
                    filtered.Quantity += quantity;
                    var newRDR = new ReceiptDetail()
                    {

                        ReceiptId = receiptId,
                        ProductId = productId,

                        Quantity = filtered.Quantity,

                    };
                    uow.ReceiptDetailRepository.Update(newRDR);
                }





            }
                 
                await uow.SaveAsync();

        }
Editor is loading...