public IActionResult Edit(EditSaleViewModel model)
        {
            if (ModelState.IsValid)
            {
                Sale sale = new Sale()
                {
                    Id = model.Id, date1 = DateTime.Now, id_client = _context.FindUser(User.Identity.Name).id_client.Value, id_car = model.id_car, id_payment = null, date2 = model.date2, date3 = model.date3, summ = model.summ, status = model.status
                };

                int canadd = _context.CanEditSale(sale);
                if (canadd == 1)     //проверка на корректность
                {
                    ModelState.AddModelError("", "Неверное время аренды.");
                    return(View(model));
                }
                else if (canadd == 2)    //проверка на занятость
                {
                    ModelState.AddModelError("", "В это время автомобиль забронирован.");
                    return(View(model));
                }



                if (_context.UpdateSale(sale))
                {
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("", "Ошибка");
                }
            }
            return(View(model));
        }
        public IActionResult Edit(int id_sale)
        {
            Sale sale  = _context.FindSale(id_sale);
            Car  car   = _context.FindCar(sale.id_car);
            var  model = new EditSaleViewModel()
            {
                Id        = sale.Id,
                id_client = _context.FindUser(User.Identity.Name).id_client.Value,
                id_car    = sale.id_car,
                date2     = sale.date2,
                date3     = sale.date3,
                rentprice = car.Price,
                status    = sale.status,
                summ      = sale.summ,
            };

            return(View(model));
        }
        public ActionResult EditSale(int? id = 0)
        {
            ViewBag.Customers = _context.Customers.ToList();
            ViewBag.FoodItems = _context.FoodItems.ToList();
            ViewBag.Food_Item = _context.FoodItems.ToList();
            Sale sale = _context.Sale.Find(id);
            EditSaleViewModel vm = new EditSaleViewModel();
            vm.Sale_FoodItems = new List<Sale_FoodItem>();
            var sale_FoodItem = _context.Sale_FoodItems.Where(m => m.Sale_Id == sale.Sale_Id);
           Customer customer= _context.Customers.Find(sale.Customer_Id);
            vm.Customer_Id = customer.Customer_Id;
            vm.CustomerName = customer.Name;
            vm.Sale_Id = sale.Sale_Id;
            vm.Amount = sale.Amount;
            vm.Amount_Pay = sale.Amount_Pay;
            vm.Grand_Total = sale.Grand_Total;
            vm.Left_Amount = sale.Left_Amount;
            vm.Remaining_Amount = sale.Remaining_Amount;       
            vm.Created_Date = sale.Created_Date;
            vm.Is_Paid = sale.Is_Paid == true ? "Yes" : "No";
         
            if (sale_FoodItem.Count() > 0)
            {
                foreach (var item in sale_FoodItem) {
                    Sale_FoodItem foodItem = new Sale_FoodItem();

                    foodItem.Amount = item.Amount;
                    foodItem.Quantity = item.Quantity;
                    foodItem.Rate = item.Rate;
                    foodItem.Id = item.Sale_FoodItem_Id;
                    foodItem.Name = item.Food_Item.Name;
                    vm.Sale_FoodItems.Add(foodItem);
                } }
           
            return View(vm);
        }
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     editSale    = (EditSaleViewModel)e.Parameter;
     DataContext = editSale;
     App.tbTrenutnaStranica.Text = "Edit Sale";
 }
        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));

    }

}