示例#1
0
        public async Task <ActionResult <IEnumerable <ResponseInvoice> > > Put(InvoiceFullDto invoiceFullDto)
        {
            var result = new ResponseInvoice();

            try
            {
                using (var tran = _facturaContexto.Database.BeginTransaction())
                {
                    try
                    {
                        var rs_invoice = await _facturaContexto.Invoices.Where(x => x.Id == invoiceFullDto.Id).FirstOrDefaultAsync();

                        if (rs_invoice == null)
                        {
                            return(BadRequest());
                        }
                        rs_invoice.ClientId       = invoiceFullDto.ClientId;
                        rs_invoice.NameShopkeeper = invoiceFullDto.NameShopkeeper;
                        rs_invoice.Date           = rs_invoice.Date;

                        _facturaContexto.Entry(rs_invoice).State = EntityState.Modified;
                        _facturaContexto.SaveChanges();

                        foreach (var item in invoiceFullDto.DetailInvoiceDto)
                        {
                            var detailp     = _facturaContexto.DetailInvoices.Find(item.ProductId);
                            var listProduct = new DetailInvoiceDto();
                            if (detailp == null)
                            {
                                return(BadRequest());
                            }
                            listProduct.ProductId  = item.ProductId;
                            listProduct.Precio_Pro = detailp.Precio_Pro;
                            listProduct.Cantidad   = item.Cantidad;
                            listProduct.Total      = detailp.Precio_Pro * item.Cantidad;

                            _facturaContexto.Entry(listProduct).State = EntityState.Modified;
                            _facturaContexto.SaveChanges();
                        }


                        await tran.CommitAsync();
                    }
                    catch (Exception)
                    {
                        await tran.RollbackAsync();

                        throw;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(Ok(result));
        }
示例#2
0
        public async Task <ActionResult <ResponseInvoice> > Post(InvoiceFullDto invoiceFullDto)
        {
            var result = new ResponseInvoice();

            try
            {
                using (var tran = _facturaContexto.Database.BeginTransaction())
                {
                    try
                    {
                        var Invoice = new Invoice();
                        Invoice.ClientId       = invoiceFullDto.ClientId;
                        Invoice.NameShopkeeper = invoiceFullDto.NameShopkeeper;
                        Invoice.Date           = DateTime.Now;

                        _facturaContexto.Invoices.Add(Invoice);
                        _facturaContexto.SaveChanges();

                        foreach (var item in invoiceFullDto.DetailInvoiceDto)
                        {
                            var listProduct = new DetailInvoice();
                            var prod        = _facturaContexto.Products.Where(x => x.Id == item.ProductId).FirstOrDefault();
                            if (prod == null)
                            {
                                return(new BadRequestResult());
                            }

                            listProduct.ProductId  = item.ProductId;
                            listProduct.Precio_Pro = prod.Price;
                            listProduct.Cantidad   = item.Cantidad;
                            listProduct.Total      = prod.Price * item.Cantidad;
                            listProduct.InvoiceId  = Invoice.Id;

                            _facturaContexto.DetailInvoices.Add(listProduct);
                            _facturaContexto.SaveChanges();
                        }


                        await tran.CommitAsync();
                    }
                    catch (Exception)
                    {
                        await tran.RollbackAsync();

                        throw;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(Ok(result));
        }