Esempio n. 1
0
        public ActionResult CancelConfirmed(int id)
        {
            #region CANCEL
            Sale sale      = db.Sale.Find(id);
            int  idUser    = (int)Session["idUser"];
            int  companyId = sale.CompanyId;

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    sale.CancelSale();
                    db.SaveChanges();

                    Log log = new Log
                    {
                        Who       = idUser,
                        CompanyId = companyId,
                        SaleId    = sale.IdSale,
                        New       = "Canceled",
                        Old       = sale.Status.ToString().ToUpper()
                    };

                    db.Log.Add(log);
                    db.SaveChanges();

                    List <Payment> payments = db.Payment.Where(p => p.SaleId == sale.IdSale).ToList();
                    List <Log>     logs     = new List <Log>();

                    if (payments != null && payments.Count > 0)
                    {
                        for (int i = 0; i < payments.Count; i++)
                        {
                            payments[i].Status = (StatusPayment)4;
                            int idPayment = payments[i].IdPayment;

                            Log log1 = new Log
                            {
                                Who       = idUser,
                                PaymentId = idPayment,
                                CompanyId = companyId,
                                SaleId    = id,
                                New       = "CANCELED",
                                Old       = payments[i].Status.ToString().ToUpper()
                            };

                            logs.Add(log1);
                        }
                        db.SaveChanges();
                        db.Log.AddRange(logs);
                        db.SaveChanges();
                    }
                    else
                    {
                        throw new Exception();
                    }

                    trans.Commit();
                    TempData["confirm"] = "CANCELLATION COMPLETED";
                    return(RedirectToAction("Index"));
                }
                catch
                {
                    trans.Rollback();
                    TempData["error"] = "ERROR 500, TRAY AGAIN, IF THE ERROR PERSIST CONTACT THE SYSTEM SUPPLIER";
                    return(RedirectToAction("Index"));
                }
            }
            #endregion
        }