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 }