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));

    }

}