public ActionResult UpdateEtapa(List <EtapaView> etapaView, OportunidadTipo optTipo) { try { var etapa_last = new Etapa(); etapa_last.AsignarId(); int id_etapa = etapa_last.IdEtapa; int id_padre = 0; foreach (EtapaView view in etapaView) { if (view.Nuevo) { view.IdEtapa = id_etapa; id_etapa++; } if (view.Tareas != null) { foreach (EtapaTareaView tareaView in view.Tareas) { tareaView.IdEtapa = view.IdEtapa; } } if (view.IdEtapaPadre != null) { view.IdEtapaPadre = id_padre; } else { id_padre = view.IdEtapa; } } if (DataBase.OportunidadTipos.Exists(p => p.IdOportunidadTipo == optTipo.IdOportunidadTipo)) { var optTipoUpdate = DataBase.OportunidadTipos.GetSingleOrDefault(p => p.IdOportunidadTipo == optTipo.IdOportunidadTipo); optTipoUpdate.Descripcion = optTipo.Descripcion; optTipoUpdate.Estado = optTipo.Estado; optTipoUpdate.UsrMod = this.UserLogonName; optTipoUpdate.FecMod = GetCurrentDateTime(); DataBase.OportunidadTipos.Update(optTipoUpdate); } else { optTipo.EstadoTabla = Rp3.AgendaComercial.Models.Constantes.Estado.Tabla; optTipo.UsrIng = this.UserLogonName; optTipo.FecIng = GetCurrentDateTime(); optTipo.UsrMod = this.UserLogonName; optTipo.FecMod = GetCurrentDateTime(); DataBase.OportunidadTipos.Insert(optTipo); } DataBase.Save(); DataBase.Etapas.UpdateXml(new EtapaSave() { Etapas = etapaView }, this.UserLogonName); this.AddDefaultSuccessMessage(); } catch { this.AddDefaultErrorMessage(); } return(Json()); }