示例#1
0
        public int ObtenerNumeroDeInvitados(int celulaId, DateTime fecha)
        {
            int anioSeleccionado = fecha.Year;
            int mesSeleccionado  = fecha.Month;
            int diaSeleccionado  = fecha.Day;

            CelulaInvitadosAsistencia invitados = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaInvitadosAsistencia
                                                   where
                                                   o.CelulaId == celulaId &&
                                                   o.Anio == anioSeleccionado &&
                                                   o.Mes == mesSeleccionado &&
                                                   o.Dia == diaSeleccionado
                                                   select o).FirstOrDefault();

            if (invitados != null)
            {
                return(invitados.NumeroDeInvitados);
            }
            else
            {
                return(0);
            }
        }
示例#2
0
        public bool GuardarAsistencia(int celulaId, DateTime fecha, Modelos.Retornos.AsistenciaDeCelulaPorMiembroSumarizada asistencias, int numeroDeInvitados, int usuarioIdQueRegistra)
        {
            int anioSeleccionado = fecha.Year;
            int mesSeleccionado  = fecha.Month;
            int diaSeleccionado  = fecha.Day;

            determinarSiFechaEsPermitida(fecha, celulaId); // Determinanos si la fecha es correcta y permitida

            Dictionary <int, string> asistenciasNuevas = new Dictionary <int, string>();
            List <int> asistenciasABorrar = new List <int>();
            Dictionary <int, string> asistenciasAActualizar = new Dictionary <int, string>();

            foreach (Modelos.Retornos.AsistenciaDeCelulaPorMiembro asistencia in asistencias.Asistencias)
            {
                //Registros existentes a eliminar
                if (!asistencia.Asistencia && (asistencia.Id > 0))
                {
                    asistenciasABorrar.Add(asistencia.Id);
                }
                //Registros nuevos a crear
                else if (asistencia.Asistencia && (asistencia.Id < 0))
                {
                    asistenciasNuevas.Add(asistencia.MiembroId, asistencia.Peticiones);
                }
                //Registros a actualizar
                else if (asistencia.Id > 0)
                {
                    asistenciasAActualizar.Add(asistencia.Id, asistencia.Peticiones);
                }
            }

            //Eliminamos las asistencias preexistentes
            if (asistenciasABorrar.Count > 0)
            {
                foreach (CelulaMiembroAsistencia asistencia in (from a in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaMiembroAsistencia where asistenciasABorrar.Contains(a.CelulaMiembroAsistenciaId) select a))
                {
                    SesionActual.Instance.getContexto <IglesiaEntities>().DeleteObject(asistencia);
                }
            }

            //Creamos las nuevas asistencias
            if (asistenciasNuevas.Count > 0)
            {
                CelulaMiembroAsistencia asistencia;
                foreach (KeyValuePair <int, string> a in asistenciasNuevas)
                {
                    asistencia                      = new CelulaMiembroAsistencia();
                    asistencia.CelulaId             = celulaId;
                    asistencia.MiembroId            = a.Key;
                    asistencia.Anio                 = anioSeleccionado;
                    asistencia.Mes                  = mesSeleccionado;
                    asistencia.Dia                  = diaSeleccionado;
                    asistencia.Peticiones           = a.Value;
                    asistencia.MiembroQueRegistraId = usuarioIdQueRegistra;
                    SesionActual.Instance.getContexto <IglesiaEntities>().CelulaMiembroAsistencia.AddObject(asistencia);
                }
            }

            //Las inserciones y las eliminaciones si se pueden hacer en grupo... las actualizaciones no...
            SesionActual.Instance.getContexto <IglesiaEntities>().SaveChanges();

            //Actualizamos las asistencias
            if (asistenciasAActualizar.Count > 0)
            {
                CelulaMiembroAsistencia asistencia;
                foreach (KeyValuePair <int, string> a in asistenciasAActualizar)
                {
                    asistencia            = (from q in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaMiembroAsistencia where q.CelulaMiembroAsistenciaId == a.Key select q).FirstOrDefault();
                    asistencia.Peticiones = a.Value;

                    //Cada actualizacion tiene que tener su propia llamada a la BD
                    SesionActual.Instance.getContexto <IglesiaEntities>().SaveChanges();
                }
            }

            #region Invitados

            // Borramos cualquier registro de invitados anterior
            CelulaInvitadosAsistencia invitados = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaInvitadosAsistencia
                                                   where
                                                   o.CelulaId == celulaId &&
                                                   o.Anio == anioSeleccionado &&
                                                   o.Mes == mesSeleccionado &&
                                                   o.Dia == diaSeleccionado
                                                   select o).FirstOrDefault();

            if (invitados != null)
            {
                invitados.Borrar(SesionActual.Instance.getContexto <IglesiaEntities>());
            }

            // Si hubo invitados guardamos el registro
            if (numeroDeInvitados > 0)
            {
                invitados                      = new CelulaInvitadosAsistencia();
                invitados.CelulaId             = celulaId;
                invitados.MiembroQueRegistraId = usuarioIdQueRegistra;
                invitados.Anio                 = anioSeleccionado;
                invitados.Mes                  = mesSeleccionado;
                invitados.Dia                  = diaSeleccionado;
                invitados.NumeroDeInvitados    = numeroDeInvitados;
                invitados.Guardar(SesionActual.Instance.getContexto <IglesiaEntities>());
            }

            #endregion

            #region Cancelacion

            //Borramos la "cancelacion" de la celula si llegase a existir
            CelulaCancelacionAsistencia cancelacion = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaCancelacionAsistencia
                                                       where
                                                       o.CelulaId == celulaId &&
                                                       o.Anio == anioSeleccionado &&
                                                       o.Mes == mesSeleccionado &&
                                                       o.Dia == diaSeleccionado
                                                       select o).FirstOrDefault();
            if (cancelacion != null)
            {
                cancelacion.Borrar(SesionActual.Instance.getContexto <IglesiaEntities>());
            }

            #endregion

            log.InfoFormat("Asistencia de la celula [{0}] del dia {1} registrada correctamente por [{2}]", celulaId, fecha.ToFullDateString(), usuarioIdQueRegistra);
            return(true);
        }