public ActionResult Create(CreateSaleViewModel CreateSaleViewModel) { try { var Customer = _context.Customers.Where(m => m.Customer_Id == CreateSaleViewModel.Customer_Id).FirstOrDefault(); Customer.Remaining_Amount = (Customer.Remaining_Amount + CreateSaleViewModel.Amount)-CreateSaleViewModel.Amount_Pay; _context.Entry(Customer).State = EntityState.Modified; _context.SaveChanges(); Sale sale = new Sale(); sale.Created_Date = DateTime.UtcNow; sale.Modified_Date = DateTime.UtcNow; sale.Customer_Id = CreateSaleViewModel.Customer_Id; sale.Amount = CreateSaleViewModel.Amount; sale.Remaining_Amount = Customer.Remaining_Amount; sale.Left_Amount = CreateSaleViewModel.Left_Amount; sale.Grand_Total = CreateSaleViewModel.Grand_Total; sale.Is_Active = true; sale.Is_Deleted = false; sale.Is_Paid = CreateSaleViewModel.Amount == 0 ? true : false; sale.Amount_Pay = CreateSaleViewModel.Amount_Pay; _context.Sale.Add(sale); _context.SaveChanges(); var Sale_ID = _context.Sale.OrderByDescending(m => m.Sale_Id).FirstOrDefault().Sale_Id; if (CreateSaleViewModel.Sale_FoodItems!=null) { foreach (var item in CreateSaleViewModel.Sale_FoodItems) { Sale_FoodItemRelation sale_FoodItem = new Sale_FoodItemRelation(); sale_FoodItem.Quantity = item.Quantity; sale_FoodItem.Rate = item.Rate; sale_FoodItem.Amount = item.Amount; sale_FoodItem.Sale_Id = Sale_ID; sale_FoodItem.Created_Date = DateTime.UtcNow; sale_FoodItem.Modified_Date = DateTime.UtcNow; sale_FoodItem.Food_Item_Id = _context.FoodItems.Where(m => m.Name == item.Name).FirstOrDefault().FoodItem_Id; _context.Sale_FoodItems.Add(sale_FoodItem); _context.SaveChanges(); } } var Amount_Pay = CreateSaleViewModel.Amount_Pay; // var sales = _context.Sale.Where(m => m.Customer_Id == CreateSaleViewModel.Customer_Id && m.Is_Paid == false).ToList(); // if (sales.Count() > 0 ) { // foreach (var item in sales) // { // Sale vm = _context.Sale.Where(m => m.Sale_Id == item.Sale_Id).FirstOrDefault(); // if (Amount_Pay > 0) // { // if (Amount_Pay >= vm.Remaining_Amount) // { // vm.Is_Paid = true; // Amount_Pay = Amount_Pay - vm.Remaining_Amount; // vm.Remaining_Amount = 0; // vm.Modified_Date = DateTime.UtcNow; // _context.Update(vm); // _context.SaveChanges(); // } // else // { // vm.Is_Paid = false; // vm.Remaining_Amount = vm.Remaining_Amount - Amount_Pay; // Amount_Pay = 0; // vm.Modified_Date = DateTime.UtcNow; // _context.Update(vm); // _context.SaveChanges(); // } // } // //vm.Remaining_Amount = CreateSaleViewModel.Remaining_Amount; // } //} return Json(Sale_ID, JsonRequestBehavior.AllowGet); } catch (Exception ex) { return RedirectToAction(nameof(Index)); } }
public ActionResult EditSale(EditSaleViewModel EditSaleViewModel) { try{ Sale sale = _context.Sale.Find(EditSaleViewModel.Sale_Id); sale.Grand_Total = EditSaleViewModel.Grand_Total; sale.Amount = EditSaleViewModel.Amount; sale.Amount_Pay = EditSaleViewModel.Amount_Pay; sale.Remaining_Amount = EditSaleViewModel.Remaining_Amount; sale.Left_Amount = EditSaleViewModel.Left_Amount; sale.Modified_Date = DateTime.UtcNow; _context.Entry(sale).State = EntityState.Modified; _context.SaveChanges(); Customer customer = _context.Customers.Where(m => m.Customer_Id == sale.Customer_Id).FirstOrDefault(); customer.Remaining_Amount = (customer.Remaining_Amount + sale.Amount) - EditSaleViewModel.Amount_Pay; _context.Entry(customer).State = EntityState.Modified; _context.SaveChanges(); var items = _context.Sale_FoodItems.Where(m => m.Sale_Id == sale.Sale_Id).ToList(); if (EditSaleViewModel.Sale_FoodItems == null) { _context.Sale_FoodItems.RemoveRange(items); _context.SaveChanges(); } else { var foods = EditSaleViewModel.Sale_FoodItems.Where(i => i.Id != 0).Select(m=>m.Id).ToList(); var editsSales = _context.Sale_FoodItems.Where(m => m.Sale_Id == EditSaleViewModel.Sale_Id).Select(m=>m.Sale_FoodItem_Id).ToList(); var left_values= (from e in editsSales from f in foods where f != e select e).ToList(); var ToRemove= _context.Sale_FoodItems.Where(m => left_values.Any(c => c == m.Sale_FoodItem_Id)).ToList(); _context.Entry(customer).State = EntityState.Modified; _context.Sale_FoodItems.RemoveRange(ToRemove); _context.SaveChanges(); foreach (var item in EditSaleViewModel.Sale_FoodItems) { if (item.Id != 0) { var vm = _context.Sale_FoodItems.Where(m => m.Sale_FoodItem_Id == item.Id).FirstOrDefault(); vm.Amount = item.Amount; vm.Modified_Date = DateTime.UtcNow; vm.Quantity = item.Quantity; vm.Rate = item.Rate; vm.Food_Item_Id = _context.FoodItems.Where(m => m.Name == item.Name).FirstOrDefault().FoodItem_Id; _context.Entry(vm).State = EntityState.Modified; _context.SaveChanges(); } else { Sale_FoodItemRelation vm = new Sale_FoodItemRelation(); vm.Amount = item.Amount; vm.Modified_Date = DateTime.UtcNow; vm.Quantity = item.Quantity; vm.Rate = item.Rate; vm.Created_Date = DateTime.UtcNow; vm.Sale_Id = EditSaleViewModel.Sale_Id; vm.Food_Item_Id = _context.FoodItems.Where(m => m.Name == item.Name).FirstOrDefault().FoodItem_Id; _context.Sale_FoodItems.Add(vm); _context.SaveChanges(); } } } return Json(EditSaleViewModel.Sale_Id); } catch (Exception ex) { return RedirectToAction(nameof(Index)); } }