public void Guardar(int id, string sListaDeRegistrosDeDatos) { try { RegistrosHelper.ListaDeRegistrosDeDatos listaDeRegistrosDeDatos; if (sListaDeRegistrosDeDatos.Trim().Length > 0) { listaDeRegistrosDeDatos = new RegistrosHelper.ListaDeRegistrosDeDatos(); foreach (KeyValuePair <string, List <Dictionary <string, string> > > grid in JSON.Deserialize <Dictionary <string, List <Dictionary <string, string> > > >(sListaDeRegistrosDeDatos)) { listaDeRegistrosDeDatos.Agregar(RegistrosHelper.ObtenerRegistrosDiferenciados(grid.Value), grid.Key); } } else { listaDeRegistrosDeDatos = null; } catalogo.Guardar(id, listaDeRegistrosDeDatos); //Los registros extra son los registros de los GRIDS que son parte de la EDICION del registro catalogo.Buscar(); X.Msg.Notify(Generales.nickNameDeLaApp, Resources.Literales.CambiosAplicados).Show(); X.Call("cancelarClick"); } catch (ExcepcionReglaNegocio ex) { X.Msg.Alert(Generales.nickNameDeLaApp, "Cambios no guardados - " + ex.Message).Show(); } }
public void GuardarEnsayo(List <Dictionary <string, string> > registros) { try { // Condiciones de errores NO FATALES bool algunaAsistenciaNovalida = false; RegistrosHelper.RegistrosDeDatos miembros = RegistrosHelper.ObtenerRegistrosDiferenciados(registros); int eventoId = Convert.ToInt32(registroId.Number); int ensayoId = Convert.ToInt32((registroEnsayoId.Number > double.MinValue) ? registroEnsayoId.Number : -1); AlabanzaEnsayo ensayo = (ensayoId > 0 ? (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayo where o.Id == ensayoId select o).SingleOrDefault() : new AlabanzaEnsayo()); ensayo.AlabanzaEventoId = eventoId; ensayo.Fecha = registroEnsayoFecha.SelectedDate; ensayo.HoraDiaInicioId = registroEnsayoHoraInicio.ObtenerId(); ensayo.HoraDiaFinId = registroEnsayoHoraFin.ObtenerId(); ensayo.Guardar(SesionActual.Instance.getContexto <IglesiaEntities>()); // Se determina si la fecha es la correcta como para establecer la asistencia bool esValidoMarcarAsistencia = (DateTime.Now >= ensayo.Fecha); foreach (KeyValuePair <int, Dictionary <string, string> > registro in miembros.RegistrosNuevos) { int alabanzaEnsayoMiembroId = registro.Value["Id"].ToInt(); AlabanzaEnsayoMiembro miembro = (alabanzaEnsayoMiembroId > 0 ? (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayoMiembro where o.Id == alabanzaEnsayoMiembroId select o).SingleOrDefault() : new AlabanzaEnsayoMiembro()); miembro.AlabanzaEnsayoId = ensayo.Id; miembro.AlabanzaMiembroId = registro.Value["AlabanzaMiembroId"].ToInt(); miembro.Retraso = registro.Value["Retraso"].ToBool(); miembro.Asistencia = registro.Value["Asistencia"].ToBool(); if ((miembro.Retraso || miembro.Asistencia) && !esValidoMarcarAsistencia) { algunaAsistenciaNovalida = true; } miembro.Guardar(SesionActual.Instance.getContexto <IglesiaEntities>()); } foreach (int idEliminado in miembros.RegistrosEliminadosId) { if (idEliminado > 0) { AlabanzaEnsayoMiembro miembro = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayoMiembro where o.Id == idEliminado select o).FirstOrDefault(); miembro.Borrar(SesionActual.Instance.getContexto <IglesiaEntities>()); } } // Ocultamos las columnas de asistencia/retraso registroEnsayoMiembros.ColumnModel.SetHidden(3, true); registroEnsayoMiembros.ColumnModel.SetHidden(4, true); LimpiarVentanaDeEnsayos(); CargarEnsayos(); wndAgregarEnsayo.Hide(); #region validamos y alertamos todos los ERRORES NO FATALES System.Text.StringBuilder condicionDeError = new System.Text.StringBuilder(); if (algunaAsistenciaNovalida) { condicionDeError.AppendLine("No se pueden registrar asistencias/retrasos si el ensayo aun no se ha llevado a cabo."); } if (!string.IsNullOrEmpty(condicionDeError.ToString())) { X.MessageBox.Alert(Generales.nickNameDeLaApp, "Los cambios han sido guardados, con la siguiente condicion: " + condicionDeError.ToString()).Show(); } #endregion } catch (ExcepcionReglaNegocio ex) { X.Msg.Alert(Generales.nickNameDeLaApp, ex.Message).Show(); } }