public ActionResult CreateFA(string id, int pid, int v) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ObtenerConfPage(923, 925); List <DET_APROBP> flujosva = db.DET_APROBP.Where(t => t.SOCIEDAD_ID == id && t.PUESTOC_ID == pid && t.VERSION == v).ToList(); var lan = ViewBag.usuario.SPRAS_ID; var puestos = db.PUESTOes.Where(t => t.ID == pid).ToList(); var sl_puestos = puestos.Select(x => new { x.ID, Puesto = x.PUESTOTs.Count > 0 ? x.PUESTOTs.Where(t => t.SPRAS_ID == lan).FirstOrDefault().TXT50 : "" }).ToList(); ViewBag.PUESTOC_ID = new SelectList(sl_puestos, "ID", "Puesto"); ViewBag.NivelesA = new SelectList(FnCommon.ObtenerCmbNivelesA(), "Value", "Text"); ViewBag.NivelesP = new SelectList(FnCommon.ObtenerCmbNivel(), "Value", "Text"); ViewBag.NivelesM = new SelectList(FnCommon.ObtenerCmbNivel(), "Value", "Text"); DET_APROBH dET_APROBP = new DET_APROBH { SOCIEDAD_ID = id, ACTIVO = true, VERSION = v + 1, PUESTOC_ID = pid }; var sociedad = db.SOCIEDADs.Find(id); ViewBag.Miles = db.PAIS.Where(t => t.LAND == sociedad.LAND).SingleOrDefault().MILES; ViewBag.PD = db.PAIS.Where(t => t.LAND == sociedad.LAND).SingleOrDefault().DECIMAL; ViewBag.FlujosActuales = flujosva; return(View(dET_APROBP)); }
public ActionResult CreateFA([Bind(Include = "SOCIEDAD_ID,PUESTOC_ID,VERSION,ACTIVO")] DET_APROBH dET_APROBH, FormCollection collection) { if (ModelState.IsValid) { List <DET_APROBP> dET_APROBPs = new List <DET_APROBP>(); var posiciones = collection.GetValues("posicion"); var npresupuestos = collection.GetValues("NivelesPR"); var montos = collection.GetValues("monto"); var nmontos = collection.GetValues("NivelesMO"); var naprobadores = collection.GetValues("NivelesAP"); if (posiciones.Length > 1) { for (int i = 1; i < posiciones.Length; i++) { DET_APROBP dET_APROB = new DET_APROBP(); dET_APROB.POS = Convert.ToInt32(posiciones[i]); if ((i + 1) < posiciones.Length) { if (collection.AllKeys.Contains("p_" + i)) { dET_APROB.PRESUPUESTO = true; dET_APROB.N_PRESUP = Convert.ToInt16(npresupuestos[i]); } if (montos[i] != "") { dET_APROB.MONTO = Convert.ToDecimal(montos[i]); dET_APROB.N_MONTO = Convert.ToInt16(nmontos[i]); } } dET_APROB.PUESTOA_ID = Convert.ToInt16(naprobadores[i]); dET_APROB.ACTIVO = true; dET_APROB.PUESTOC_ID = dET_APROBH.PUESTOC_ID; dET_APROB.SOCIEDAD_ID = dET_APROBH.SOCIEDAD_ID; dET_APROB.VERSION = dET_APROBH.VERSION; dET_APROBPs.Add(dET_APROB); } dET_APROBH.DET_APROBP = dET_APROBPs; dET_APROBH.ACTIVO = true; db.Entry(dET_APROBH).State = EntityState.Added; db.SaveChanges(); var va = db.DET_APROBH.Where(t => t.SOCIEDAD_ID == dET_APROBH.SOCIEDAD_ID && t.PUESTOC_ID == dET_APROBH.PUESTOC_ID && t.VERSION == (dET_APROBH.VERSION - 1)).SingleOrDefault(); va.ACTIVO = false; foreach (var e in va.DET_APROBP) { e.ACTIVO = false; } db.SaveChanges(); return(RedirectToAction("MAFlujos", new { id = dET_APROBH.SOCIEDAD_ID, pid = dET_APROBH.PUESTOC_ID, v = dET_APROBH.VERSION })); } else { ModelState.AddModelError("Mensaje", "Incluya al menos una fila a la matriz de aprobación"); } } else { } ObtenerConfPage(923, 925); var flujos = db.DET_APROBH.Where(t => t.SOCIEDAD_ID == dET_APROBH.SOCIEDAD_ID && t.ACTIVO).Select(t => t.PUESTOC_ID).Distinct().ToList(); var lan = ViewBag.usuario.SPRAS_ID; var puestos = db.PUESTOes.Where(t => t.ACTIVO == true && t.ID != 1 && t.ID != 9 && !flujos.Contains(t.ID)).ToList(); var sl_puestos = puestos.Select(x => new { x.ID, Puesto = x.PUESTOTs.Count > 0 ? x.PUESTOTs.Where(t => t.SPRAS_ID == lan).FirstOrDefault().TXT50 : "" }).ToList(); ViewBag.PUESTOC_ID = new SelectList(sl_puestos, "ID", "Puesto"); ViewBag.NivelesA = new SelectList(FnCommon.ObtenerCmbNivelesA(), "Value", "Text"); ViewBag.NivelesP = new SelectList(FnCommon.ObtenerCmbNivel(), "Value", "Text"); ViewBag.NivelesM = new SelectList(FnCommon.ObtenerCmbNivel(), "Value", "Text"); var sociedad = db.SOCIEDADs.Find(dET_APROBH.SOCIEDAD_ID); ViewBag.Miles = db.PAIS.Where(t => t.LAND == sociedad.LAND).SingleOrDefault().MILES; ViewBag.PD = db.PAIS.Where(t => t.LAND == sociedad.LAND).SingleOrDefault().DECIMAL; return(View(dET_APROBH)); }