public ActionResult Create(Fases fases) { var aud = db.Auditorias.Where(a => a.IdAuditoria == fases.IdAuditoria).Include(a => a.Fases).SingleOrDefault(); fases.Auditoria = aud; ValidatorDate val = new ValidatorDate(); ValidationResult mod = val.Validate(fases); if (ModelState.IsValid && mod.IsValid) { fases.FechaCrea = DateTime.Now; fases.FechaModifica = fases.FechaCrea; fases.UsuarioCrea = GetUserId(User); fases.IdEstado = 1; fases.Eliminado = false; fases.Porcentaje = fases.Porcentaje / 100; var porcent = 0.0; foreach (var item in aud.Fases.Where(f => f.Eliminado != true)) { porcent += item.Porcentaje; } porcent += fases.Porcentaje; if (porcent <= 1.0) { db.Fases.Add(fases); db.SaveChanges(); if (porcent != 1.00) { Session["MyAlert"] = "<script type='text/javascript'>alertify.warning('El Porcentaje acumulado no alcanza el 100%, sumatoria actual: " + (porcent * 100) + "%.');</script>"; } return(RedirectToAction("Index", new { idAuditoria = aud.IdAuditoria, nombreAuditoria = aud.Auditoria })); } else { Session["MyAlert"] = "<script type='text/javascript'>alertify.error('El Porcentaje acumulado sobrepasa el 100%, sumatoria actual: " + (porcent * 100) + "%, porcentaje faltante: " + Math.Round((100 - ((porcent - fases.Porcentaje) * 100)), 2) + "%.');</script>"; //ModelState.AddModelError("", "La sumatoria de porcentajes sobrepasa el 100%, sumatoria actual: " + (porcent * 100) + " % "); ViewBag.IdAuditoria = new SelectList(db.Auditorias, "IdAuditoria", "Auditoria", fases.IdAuditoria); ViewBag.IdEstado = new SelectList(db.Estados, "IdEstado", "Estado", fases.IdEstado); ViewBag.idAuditoriaRet = aud.IdAuditoria; ViewBag.nombreAuditoria = aud.Auditoria; ViewBag.navegabilidad = aud.Auditoria + "/ " + aud.UsuarioRealiza.UserName; fases.Porcentaje = fases.Porcentaje * 100; return(View(fases)); } } foreach (ValidationFailure _error in mod.Errors) { ModelState.AddModelError(_error.PropertyName, _error.ErrorMessage); } ViewBag.IdAuditoria = new SelectList(db.Auditorias, "IdAuditoria", "Auditoria", fases.IdAuditoria); ViewBag.IdEstado = new SelectList(db.Estados, "IdEstado", "Estado", fases.IdEstado); ViewBag.idAuditoriaRet = aud.IdAuditoria; ViewBag.nombreAuditoria = aud.Auditoria; ViewBag.navegabilidad = aud.Auditoria + "/ " + aud.UsuarioRealiza.UserName; //fases.Porcentaje = fases.Porcentaje * 100; return(View(fases)); }
public ActionResult Edit(Fases fases) { var audaux = db.Auditorias.Where(a => a.IdAuditoria == fases.IdAuditoria).SingleOrDefault(); fases.Auditoria = audaux; ValidatorDate val = new ValidatorDate(); ValidationResult mod = val.Validate(fases); if (ModelState.IsValid && mod.IsValid) { fases.Porcentaje = fases.Porcentaje / 100; var porcent = 0.0; var fasesAux = db.Fases.Where(f => f.Eliminado != true && f.IdAuditoria == fases.IdAuditoria && f.IdFase != fases.IdFase).ToList().AsReadOnly(); foreach (var item in fasesAux) { if (item.IdFase != fases.IdFase) { porcent += item.Porcentaje; } } porcent += fases.Porcentaje; if (porcent <= 1.0) { db.Entry(fases).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index", new { idAuditoria = fases.IdAuditoria, nombreAuditoria = audaux.Auditoria })); } //ModelState.AddModelError("", "La sumatoria de porcentajes sobrepasa el 100%, sumatoria actual: " + (porcent * 100) + "%"); Session["MyAlert"] = "<script type='text/javascript'>alertify.error('El Porcentaje acumulado sobrepasa el 100%, sumatoria actual: " + (porcent * 100) + "%.');</script>"; fases.Porcentaje = fases.Porcentaje * 100; ViewBag.IdAuditoria = new SelectList(db.Auditorias, "IdAuditoria", "Auditoria", fases.IdAuditoria); ViewBag.IdEstado = new SelectList(db.Estados, "IdEstado", "Estado", fases.IdEstado); ViewBag.idAuditoriaRet = fases.IdAuditoria; ViewBag.nombreAuditoria = audaux.Auditoria; ViewBag.navegabilidad = audaux.Auditoria + "/ " + audaux.UsuarioRealiza.UserName; return(View(fases)); } foreach (ValidationFailure _error in mod.Errors) { ModelState.AddModelError(_error.PropertyName, _error.ErrorMessage); } ViewBag.IdAuditoria = new SelectList(db.Auditorias, "IdAuditoria", "Auditoria", fases.IdAuditoria); ViewBag.IdEstado = new SelectList(db.Estados, "IdEstado", "Estado", fases.IdEstado); ViewBag.idAuditoriaRet = fases.IdAuditoria; ViewBag.nombreAuditoria = audaux.Auditoria; ViewBag.navegabilidad = audaux.Auditoria + "/ " + audaux.UsuarioRealiza.UserName; return(View(fases)); }