public bool CanDeleteSilo(DeleteSiloModel silo) { if (silo.CurrentCommodity != null || silo.CurrentLoad > 0) { throw new ArithmeticException($"The Silo {silo.Name} cannot be deleted before it is empty"); } return(true); }
public ActionResult ConfirmDelete(int id, DeleteSiloModel model) { if (ModelState.IsValid) { var db = new WarehouseDbContext(); var silo = db.Silos .Where(a => a.Id == id) .FirstOrDefault(); var siloCheck = new DeleteSiloModel { CurrentCommodity = silo.CurrentCommodity, CurrentLoad = silo.CurrentLoad, CapacityLeft = silo.MaxCapacity - silo.CurrentLoad, Name = silo.Name }; if (silo == null) { return(HttpNotFound()); } try { silo.CanDeleteSilo(siloCheck); db.Silos.Remove(silo); var operations = db.Operations.Where(o => o.SiloId == id).ToList(); foreach (var op in operations) { db.Operations.Remove(op); } db.SaveChanges(); return(RedirectToAction("AllSilos")); } catch (Exception ex) { ModelState.AddModelError("", $"{ex.Message}"); return(View(model)); } } return(View(model)); }