public ActionResult Disponibilidade(DisponibilidadeViewModel dvm) { DisponibilidadePostViewModel dpvm = GetDVMFromRequest(Request); List <AlertaDeDisponibilidade> alertasExistentes = db.Alertas.Include(a => a.Email).ToList(); foreach (var alertaExistente in alertasExistentes) { if (!dpvm.alertas.Any(a => a.Key == alertaExistente.Id)) { foreach (Insumo insumo in db.Insumos.Where(ins => ins.Alerta.Id == alertaExistente.Id)) { insumo.Alerta = null; } db.Alertas.Remove(alertaExistente); } } foreach (var alertaNovo in dpvm.alertas) { if (alertasExistentes.Any(a => a.Id == alertaNovo.Key)) { AlertaDeDisponibilidade alertaExistente = db.Alertas.Find(alertaNovo.Key); alertaExistente.Ativado = alertaNovo.Value.Ativado; alertaExistente.Email = alertaNovo.Value.Email; alertaExistente.QuantidadeMinima = alertaNovo.Value.QuantidadeMinima; } else { AlertaDeDisponibilidade alertaASerInserido = new AlertaDeDisponibilidade() { Ativado = alertaNovo.Value.Ativado, Email = alertaNovo.Value.Email, Id = alertaNovo.Key, QuantidadeMinima = alertaNovo.Value.QuantidadeMinima }; db.Alertas.Add(alertaASerInserido); } } db.SaveChanges(); return(Disponibilidade()); }
//GET: Reports/Disponibilidade public ActionResult Disponibilidade() { List <Insumo> insumos = db.Insumos.Include(i => i.Unidade).ToList(); List <Aquisicao> aquisicoes = db.Aquisicoes.Include(aq => aq.Insumo).ToList(); List <SaidaDeEstoque> saidas = db.SaidaDeEstoque.Include(s => s.Insumo).ToList(); List <AlertaDeDisponibilidade> alertas = db.Alertas .Include(a => a.Email).ToList(); Estoque e = new Estoque(); e.IncluirAquisicao(aquisicoes.ToArray()); e.IncluirSaidas(saidas.ToArray()); List <double> quantidades = new List <double>(); foreach (Insumo i in insumos) { quantidades.Add(e.ObterQuantidade(i)); } List <bool> possuiAlerta = new List <bool>(); foreach (Insumo insumo in insumos) { if (insumo.Alerta == null || !insumo.Alerta.Ativado) { possuiAlerta.Add(false); } else { possuiAlerta.Add(true); } } DisponibilidadeViewModel dvm = new DisponibilidadeViewModel() { insumos = insumos, quantidades = quantidades, possuiAlerta = possuiAlerta }; return(View(dvm)); }