public bool CanDelete(DeleteTankModel tank) { if (tank.CurrentFertilizer != null || tank.CurrentLoad > 0) { throw new ArgumentException("You cannot delete this tank before it is empty"); } return(true); }
public ActionResult ConfirmDelete(int id, DeleteTankModel model) { if (ModelState.IsValid) { var db = new WarehouseDbContext(); var tank = db.Tanks .Where(t => t.Id == id) .FirstOrDefault(); var tankCheck = new DeleteTankModel { CurrentFertilizer = tank.CurrentFertilizer, CurrentLoad = tank.CurrentLoad, CapacityLeft = tank.MaxCapacity - tank.CurrentLoad, Name = tank.Name }; if (tank == null) { return(HttpNotFound()); } try { tank.CanDelete(tankCheck); db.Tanks.Remove(tank); var tankOperations = db.TankOperations.Where(o => o.TankId == id).ToList(); foreach (var to in tankOperations) { db.TankOperations.Remove(to); } db.SaveChanges(); return(RedirectToAction("AllTanks")); } catch (Exception ex) { ModelState.AddModelError("", $"{ex.Message}"); return(View(model)); } } return(View(model)); }