Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }