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();
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }