private void cargarDatosGenerales(int ensayoId) { AlabanzaEnsayo ensayo = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayo where o.Id == ensayoId select o).SingleOrDefault(); registroId.Text = ensayo.Id.ToString(); registroFecha.Value = ensayo.Fecha.ToFullDateString(); registroHoraInicio.Value = ensayo.HoraDiaInicio.Descripcion; registroHoraFin.Value = ensayo.HoraDiaFin.Descripcion; }
public void CargarEnsayo(int ensayoId) { if (ensayoId > 0) { AlabanzaEnsayo ensayo = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayo where o.Id == ensayoId select o).SingleOrDefault(); registroEnsayoId.Value = ensayo.Id; registroEnsayoFecha.Value = ensayo.Fecha; registroEnsayoHoraInicio.Value = ensayo.HoraDiaInicioId; registroEnsayoHoraFin.Value = ensayo.HoraDiaFinId; // Mostramos las columnas de asistencia/retraso registroEnsayoMiembros.ColumnModel.SetHidden(3, false); registroEnsayoMiembros.ColumnModel.SetHidden(4, false); StoreEnsayoMiembros.Cargar(from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayoMiembro join p in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEventoMiembro on o.AlabanzaMiembroId equals p.AlabanzaMiembroId where o.AlabanzaEnsayoId == ensayoId && o.AlabanzaMiembro.Borrado == false && o.AlabanzaEnsayo.Borrado == false && p.AlabanzaMiembro.Borrado == false && p.AlabanzaEvento.Borrado == false && p.Borrado == false select new { Id = o.Id, MiembroId = o.AlabanzaMiembro.MiembroId, AlabanzaMiembroId = o.AlabanzaMiembroId, Nombre = o.AlabanzaMiembro.Miembro.Primer_Nombre + " " + o.AlabanzaMiembro.Miembro.Segundo_Nombre + " " + o.AlabanzaMiembro.Miembro.Apellido_Paterno + " " + o.AlabanzaMiembro.Miembro.Apellido_Materno + " (" + o.AlabanzaMiembro.Miembro.Email + ")", Instrumento = p.AlabanzaTipoInstrumento.Descripcion, Asistencia = o.Asistencia, Retraso = o.Retraso }); } else { int eventoId = Convert.ToInt32(registroId.Number); LimpiarVentanaDeEnsayos(); // Ocultamos las columnas de asistencia/retraso registroEnsayoMiembros.ColumnModel.SetHidden(3, true); registroEnsayoMiembros.ColumnModel.SetHidden(4, true); StoreEnsayoMiembros.Cargar(manejadorDeAlabanza.ObtenerMiembrosPorEvento(eventoId).Select(o => new { MiembroId = o.AlabanzaMiembro.MiembroId, AlabanzaMiembroId = o.AlabanzaMiembroId, Nombre = o.AlabanzaMiembro.Miembro.Primer_Nombre + " " + o.AlabanzaMiembro.Miembro.Segundo_Nombre + " " + o.AlabanzaMiembro.Miembro.Apellido_Paterno + " " + o.AlabanzaMiembro.Miembro.Apellido_Materno + " (" + o.AlabanzaMiembro.Miembro.Email + ")", Instrumento = o.AlabanzaTipoInstrumento.Descripcion })); registroEnsayoMiembros.MarcarSucio(); } wndAgregarEnsayo.Show(); }
void ICatalogo.Guardar(int id, RegistrosHelper.ListaDeRegistrosDeDatos listaDeRegistrosDeDatos) { // Condiciones de errores NO FATALES bool algunaAsistenciaNovalida = false; bool algunMiembroYaExistente = false; bool algunaCancionYaExistente = false; RegistrosHelper.RegistrosDeDatos miembros = listaDeRegistrosDeDatos.Obtener(registroMiembros.ClientID); RegistrosHelper.RegistrosDeDatos canciones = listaDeRegistrosDeDatos.Obtener(registroCanciones.ClientID); RegistrosHelper.RegistrosDeDatos ensayos = listaDeRegistrosDeDatos.Obtener(registroEnsayos.ClientID); AlabanzaEvento evento; string cancionesYMiembrosRequeridos = "No es posible continuar sin agregar canciones/miembros."; if (id > 0) { evento = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEvento where o.Id == id select o).FirstOrDefault(); if ((evento.AlabanzaEventoMiembro.Count <= 0 && miembros.RegistrosNuevosId.Count <= 0) || (evento.AlabanzaEventoCancion.Count <= 0 && canciones.RegistrosNuevosId.Count <= 0)) { throw new ExcepcionReglaNegocio(cancionesYMiembrosRequeridos); } } else { evento = new AlabanzaEvento(); if ((miembros.RegistrosNuevosId.Count <= 0) || (canciones.RegistrosNuevosId.Count <= 0)) { throw new ExcepcionReglaNegocio(cancionesYMiembrosRequeridos); } } evento.Descripcion = registroDescripcion.Text; evento.Fecha = registroFecha.SelectedDate; evento.HoraDiaInicioId = registroHoraDelDiaInicio.ObtenerId(); evento.HoraDiaFinId = registroHoraDelDiaFin.ObtenerId(); evento.Guardar(SesionActual.Instance.getContexto <IglesiaEntities>()); // Se determina si la fecha es la correcta como para establecer la asistencia bool esValidoMarcarAsistencia = (DateTime.Now >= evento.Fecha); #region Procesamos los MIEMBROS foreach (KeyValuePair <int, Dictionary <string, string> > registro in miembros.RegistrosNuevos) { AlabanzaEventoMiembro miembro; if (registro.Key > 0) { miembro = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEventoMiembro where o.Id == registro.Key select o).SingleOrDefault(); } else { miembro = new AlabanzaEventoMiembro(); } miembro.AlabanzaEventoId = evento.Id; miembro.AlabanzaMiembroId = registro.Value["AlabanzaMiembroId"].ToInt(); miembro.AlabanzaTipoInstrumentoId = registro.Value["InstrumentoId"].ToInt(); miembro.Retraso = registro.Value["Retraso"].ToBool(); miembro.Asistencia = registro.Value["Asistencia"].ToBool(); if ((miembro.Retraso || miembro.Asistencia) && !esValidoMarcarAsistencia) { algunaAsistenciaNovalida = true; } if ((!evento.AlabanzaEventoMiembro.Any(o => o.AlabanzaMiembroId == miembro.AlabanzaMiembroId && o.AlabanzaTipoInstrumentoId == miembro.AlabanzaTipoInstrumentoId && o.Borrado == false)) || (registro.Key > 0)) { miembro.Guardar(SesionActual.Instance.getContexto <IglesiaEntities>()); } else { algunMiembroYaExistente = true; } } foreach (int idEliminado in miembros.RegistrosEliminadosId) { AlabanzaEventoMiembro miembro = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEventoMiembro where o.Id == idEliminado select o).SingleOrDefault(); miembro.Borrar(SesionActual.Instance.getContexto <IglesiaEntities>()); } #endregion #region Procesamos las CANCIONES foreach (KeyValuePair <int, Dictionary <string, string> > registro in canciones.RegistrosNuevos) { AlabanzaEventoCancion cancion; if (registro.Key > 0) { cancion = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEventoCancion where o.Id == registro.Key select o).SingleOrDefault(); } else { cancion = new AlabanzaEventoCancion(); } cancion.AlabanzaEventoId = evento.Id; cancion.AlabanzaCancionId = registro.Value["AlabanzaCancionId"].ToInt(); if ((!evento.AlabanzaEventoCancion.Any(o => o.AlabanzaCancionId == cancion.AlabanzaCancionId && o.Borrado == false)) || (registro.Key > 0)) { cancion.Guardar(SesionActual.Instance.getContexto <IglesiaEntities>()); } else { algunaCancionYaExistente = true; } } foreach (int idEliminado in canciones.RegistrosEliminadosId) { AlabanzaEventoCancion cancion = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEventoCancion where o.Id == idEliminado select o).SingleOrDefault(); cancion.Borrar(SesionActual.Instance.getContexto <IglesiaEntities>()); } #endregion #region Procesamos los ENSAYOS foreach (int idEliminado in ensayos.RegistrosEliminadosId) { AlabanzaEnsayo ensayo = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaEnsayo where o.Id == idEliminado select o).SingleOrDefault(); ensayo.Borrar(SesionActual.Instance.getContexto <IglesiaEntities>()); } #endregion #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 evento aun no se ha llevado a cabo."); } if (algunMiembroYaExistente) { condicionDeError.AppendLine("No puede existir multiples veces el mismo miembro asignado el mismo instrumento."); } if (algunaCancionYaExistente) { condicionDeError.AppendLine("No puede existir multiples veces la mismsa cancion."); } if (!string.IsNullOrEmpty(condicionDeError.ToString())) { X.MessageBox.Alert(Generales.nickNameDeLaApp, "Los cambios han sido guardados, con la siguiente condicion: " + condicionDeError.ToString()).Show(); } #endregion }
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(); } }