public ActionResult Edit(clsPlanVM oPlanVM) { string strMsg = string.Empty; try { if (ModelState.IsValid) { clsPlan oPlan = new clsPlan(clsAppInfo.Connection); DataMove(oPlanVM, oPlan, true); if (oPlan.VM.TipoPlanId > 1) { if ((oPlanVM.MonedaId > 0) && (oPlanVM.TipoAmbitoId > 0)) { if (oPlan.Update()) { return(RedirectToAction("Index")); } } else { strMsg += "Moneda es Requerido" + Environment.NewLine; strMsg += "Ambito es Requerido" + Environment.NewLine; } } else { oPlan.VM.MonedaId = 0; oPlan.VM.TipoAmbitoId = 0; if (oPlan.Update()) { return(RedirectToAction("Index")); } } } } catch (Exception exp) { ViewBagLoad(); ViewBag.MessageErr = exp.Message; return(View(oPlanVM)); } if (strMsg.Trim() != string.Empty) { ViewBagLoad(); ViewBag.MessageErr = strMsg; return(View(oPlanVM)); } else { ViewBagLoad(); return(View(oPlanVM)); } }
/* * la lista debe contener los hijos menos el oplan a insertar o modificar * oplan, es el nuevo hijo a insertar o modificar */ private bool ActualizarOrden(clsPlan oplan, List <clsPlanVM> hijos) { int bandera = 0; if (hijos.Count > 0) { try { for (int i = 0; i < hijos.Count; i++) { clsPlanVM hijo = hijos[i]; if (oplan.VM.Orden == i + 1) { bandera = 1; } if (!(hijo.Orden == i + bandera + 1)) { hijo.Orden = i + bandera + 1; clsPlan auxplan = new clsPlan(clsAppInfo.Connection); auxplan.VM = hijos[i]; auxplan.UpdateFilter = clsPlan.UpdateFilters.Orden; auxplan.Transaction = oplan.Transaction; if (!auxplan.Update()) { // error al actualizar return(false); } auxplan.Dispose(); } } } catch (Exception exp) { throw (exp); } } // preguntamos si el nuevo plan quiere ir al final if (bandera == 0) { clsPlan auxplan = new clsPlan(clsAppInfo.Connection); //actualizamos el orden del nuevo plan oplan.VM.Orden = hijos.Count + 1; auxplan.VM = oplan.VM; auxplan.UpdateFilter = clsPlan.UpdateFilters.Orden; auxplan.Transaction = oplan.Transaction; if (!auxplan.Update()) { // error al actualizar return(false); } auxplan.Dispose(); } return(true); }
public ActionResult Edit(clsPlanVM oPlanVM) { string strMsg = string.Empty; clsPlan oPlan = new clsPlan(clsAppInfo.Connection); try { if (ModelState.IsValid) { DataMove(oPlanVM, oPlan, true); strMsg += CheckPlanEditPost(oPlan); } else { if (oPlanVM.PlanPadreId == -1) { strMsg += "Operacion Invalida: Nivel de Plan Inaccesible para realizar Cambios, porfavor elija otro Plan" + Environment.NewLine; } else { strMsg += "Modelo Invalido" + Environment.NewLine; } } if (strMsg.Trim() != string.Empty) { ViewBag.MessageErr = strMsg; } else { // obtenemos el orden guardado en la BD, por si lo quiere modificar long ordenBD = getOrden(oPlan.VM.PlanId); List <clsPlanVM> hijos = new List <clsPlanVM>(); if (ordenBD != oPlan.VM.Orden) { // si quiere modificar el orden hijos = get_Hijos(oPlan); hijos.RemoveAll((x) => x.PlanId == oPlan.VM.PlanId); // eliminamos el plan que se esta actualizando } oPlan.BeginTransaction(); if (oPlan.Update()) { if (hijos.Count > 0) { // si quiere modificar el orden if (!ActualizarOrden(oPlan, hijos)) { oPlan.Rollback(); ViewBag.MessageErr = "Error al Actualizar Orden de los demas Planes del mismo Grupo"; return(View(oPlanVM)); } } oPlan.Commit(); return(RedirectToAction("Index", new { idPlan = SysData.ToLong(oPlanVM.PlanId) })); } oPlan.Rollback(); } return(View(oPlanVM)); } catch (Exception exp) { oPlan.Rollback(); ViewBag.MessageErr = exp.Message; return(View(oPlanVM)); } }