public ActionResult Edit(Puesto puesto, string salario_minimo, string salario_maximo) { ModelState.Clear(); Puesto editPuesto = db.Puesto.SingleOrDefault(e => e.id_puesto == puesto.id_puesto && e.activo); if (editPuesto == null) { return(HttpNotFound()); } if (ModelState.IsValid) { using (DbContextTransaction tran = db.Database.BeginTransaction()) { try { Tipo_Puesto tipo_puesto = db.Tipo_Puesto.SingleOrDefault(t => t.activo && !t.eliminado && t.id_tipo_puesto == puesto.id_tipo_puesto); if (tipo_puesto == null) { ModelState.AddModelError("", "Tipo de Puesto seleccionado no valido."); ViewBag.tipo_puesto = new SelectList(db.Tipo_Puesto.Where(t => !t.eliminado), "id_tipo_puesto", "nombre"); ViewBag.id_documento = new SelectList(db.Documentos.Where(e => e.activo && !e.eliminado), "id_documento", "reporte"); return(View(editPuesto)); } decimal bono_extra = Convert.ToDecimal(!String.IsNullOrEmpty(Request["bono_extra"]) ? Request["bono_extra"] : "0", CultureInfo.InvariantCulture); decimal bono_decreto = Convert.ToDecimal(!String.IsNullOrEmpty(Request["bono_decreto"]) ? Request["bono_decreto"] : "0", CultureInfo.InvariantCulture); decimal sueldo_base = Convert.ToDecimal(Request["sueldo_base"], CultureInfo.InvariantCulture); puesto.bono_decreto = bono_decreto; puesto.bono_extra = bono_extra; puesto.sueldo_base = sueldo_base; decimal sueldo = sueldo_base + bono_extra + bono_decreto; if (sueldo < tipo_puesto.salario_minimo || sueldo > tipo_puesto.salario_maximo) { ModelState.AddModelError("", "El sueldo ingresado para el puesto no entra en el rango establecido."); ViewBag.tipo_puesto = new SelectList(db.Tipo_Puesto.Where(t => !t.eliminado), "id_tipo_puesto", "nombre"); ViewBag.id_documento = new SelectList(db.Documentos.Where(e => e.activo && !e.eliminado), "id_documento", "reporte"); return(View(editPuesto)); } editPuesto.nombre = puesto.nombre.ToUpper(); editPuesto.id_tipo_puesto = puesto.id_tipo_puesto; editPuesto.bono_decreto = puesto.bono_decreto; editPuesto.bono_extra = puesto.bono_extra; editPuesto.sueldo_base = puesto.sueldo_base; editPuesto.prestaciones = tipo_puesto.Empresa.prestaciones; editPuesto.fecha_modificacion = DateTime.Now; editPuesto.id_usuario_modificacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario; db.Entry(editPuesto).State = EntityState.Modified; db.CambioSalarioPuesto(editPuesto.sueldo_base, editPuesto.bono_decreto, editPuesto.bono_extra, Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario, editPuesto.id_puesto); db.SaveChanges(); tran.Commit(); return(RedirectToAction("Index")); } catch { tran.Rollback(); ModelState.AddModelError("", "Error durante la operación. Datos no guardados."); } } } ViewBag.id_documento = new SelectList(db.Documentos.Where(e => e.activo && !e.eliminado), "id_documento", "nombre"); ViewBag.tipo_puesto = new SelectList(db.Tipo_Puesto.Where(t => !t.eliminado), "id_tipo_puesto", "nombre", puesto.id_tipo_puesto); return(View(editPuesto)); }