コード例 #1
0
        private bool Ausente(DateTime fecha, DetalleHorarioDTO horarioDia, List <AccesoDTO> _listaAccesosDía, out bool?porLlegarTarde)
        {
            bool _hayNovedadHoraEntrada;
            bool _hayComisionServicioHoraEntrada;

            var listaComisonesServicioDelDia = ComisionesEnElMes(fecha).Where(comision => (comision.FechaDesde <= fecha) && (comision.FechaHasta >= fecha)).AsParallel().ToList();
            var listaNovedadesDelDia         = NovedadesEnElMes(fecha).Where(novedad => (novedad.FechaDesde <= fecha) && (novedad.FechaHasta >= fecha)).AsParallel().ToList();;

            porLlegarTarde = false;

            _hayNovedadHoraEntrada          = listaNovedadesDelDia.Any() ? (listaNovedadesDelDia.Where(novedad => ((novedad.HoraDesde <= horarioDia.HoraEntrada) && (novedad.HoraHasta >= horarioDia.HoraEntrada))).Any() ? true : false) : false;
            _hayComisionServicioHoraEntrada = listaComisonesServicioDelDia.Any() ? (listaComisonesServicioDelDia.Where(comision => (((comision.HoraInicio <= horarioDia.HoraEntrada) && (comision.HoraFin >= horarioDia.HoraEntrada)) || comision.JornadaCompleta)).Any() ? true : false) : false;

            if (_hayNovedadHoraEntrada || _hayComisionServicioHoraEntrada) // Primer check (novedades y comision de servicio)
            {
                return(false);
            }
            else if (_listaAccesosDía.Any())                                                                 // Segundo check (horarios y accesos)
            {
                if (TardanzaSuperaLimite(Tardanza(_listaAccesosDía, horarioDia), _minutosToleranciaAusente)) // Tercer check (tardanza)
                {
                    porLlegarTarde = true;
                    return(true);
                }
                return(false);
            }
            else if (fecha.Date <= DateTime.Now.Date)
            {
                return(true);
            }
            return(false);
        }
コード例 #2
0
        private TimeSpan?Tardanza(List <AccesoDTO> accesosDia, DetalleHorarioDTO horarioDia)
        {
            TimeSpan?_horaEntradaAcceso  = accesosDia.Where(acceso => acceso.TipoAcceso.Equals("Entrada")).Any() ? accesosDia.Where(acceso => acceso.TipoAcceso.Equals("Entrada")).Last().Hora : (TimeSpan?)null;
            TimeSpan _horaEntradaHorario = (TimeSpan)horarioDia.HoraEntrada;

            if (_horaEntradaAcceso != null && ((TimeSpan)_horaEntradaAcceso).TotalMinutes > _horaEntradaHorario.TotalMinutes)
            {
                return(Diff(_horaEntradaHorario, (TimeSpan)_horaEntradaAcceso));
            }
            else
            {
                return(null);
            }
        }
コード例 #3
0
        private TimeSpan?TardanzaExtension(List <AccesoDTO> accesosDia, DetalleHorarioDTO horarioDia)
        {
            TimeSpan?_horaEntradaParcialAcceso  = accesosDia.Where(acceso => acceso.TipoAcceso.Equals("EntradaParacial")).Any() ? accesosDia.Where(acceso => acceso.TipoAcceso.Equals("EntradaParacial")).Last().Hora : (TimeSpan?)null;
            TimeSpan _horaEntradaParcialHorario = (TimeSpan)horarioDia.HoraEntradaParcial;

            if (_horaEntradaParcialAcceso > _horaEntradaParcialHorario && _horaEntradaParcialAcceso != null)
            {
                return(Diff(_horaEntradaParcialHorario, (TimeSpan)_horaEntradaParcialAcceso));
            }
            else
            {
                return(null);
            }
        }
コード例 #4
0
ファイル: HorarioServicio.cs プロジェクト: seansa/Biometrico
        public IEnumerable <DetalleHorarioDTO> AgregarDetalleHorario(List <DetalleHorarioDTO> listahorarios, long id, DateTime fechadesde, DateTime fechahasta, TimeSpan?horaentrada, TimeSpan?horasalidaparcial, TimeSpan?horaentradaparcial, TimeSpan?horasalida, bool lunes, bool martes, bool miercoles, bool jueves, bool viernes, bool sabado, bool domingo)
        {
            var nuevoHorario = new DetalleHorarioDTO();

            nuevoHorario.AgenteId           = id;
            nuevoHorario.FechaDesde         = fechadesde;
            nuevoHorario.FechaHasta         = fechahasta;
            nuevoHorario.HoraEntrada        = horaentrada;
            nuevoHorario.HoraSalidaParcial  = horasalidaparcial;
            nuevoHorario.HoraEntradaParcial = horaentradaparcial;
            nuevoHorario.HoraSalida         = horasalida;
            nuevoHorario.Lunes     = lunes;
            nuevoHorario.Martes    = martes;
            nuevoHorario.Miercoles = miercoles;
            nuevoHorario.Jueves    = jueves;
            nuevoHorario.Viernes   = viernes;
            nuevoHorario.Sabado    = sabado;
            nuevoHorario.Domingo   = domingo;
            listahorarios.Add(nuevoHorario);
            return(listahorarios);
        }
コード例 #5
0
        public List <ReporteMensualDTO> ObtenerPorId(long agenteId, int año, int mes)
        {
            var lista = new List <ReporteMensualDTO>();

            for (int i = 1; i <= _diasDelMes; i++)
            {
                var dia = new DateTime(año, mes, i);
                _horarioDia = HorarioDelDia(dia);
                var  _finMes            = new DateTime(_fecha.Year, _fecha.Month, _diasDelMes);
                var  reporte            = new ReporteMensualDTO();
                bool?porLlegarTarde     = null;
                var  listaAccesosDelDia = ListaAccesosDelDia(dia);
                _diasDelMes = DateTime.DaysInMonth(dia.Year, dia.Month);

                if (_horarioDia != null)
                {
                    reporte.AgenteId = _agenteId;
                    reporte.Numero   = i;

                    // Listas para las grillas de abajo

                    reporte.Comisiones = ComisionesEnElMes(dia) ?? new List <ComisionServicioDTO>();
                    reporte.Lactancias = LactanciasEnElMes(dia) ?? new List <LactanciaDTO>();
                    reporte.Novedades  = NovedadesEnElMes(dia) ?? new List <NovedadAgenteDTO>();

                    reporte.Fecha = dia;
                    reporte.Dia   = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(dia.ToString("dddd", new CultureInfo("es-Ar")));

                    // Horas de los accesos

                    reporte.HoraEntrada        = listaAccesosDelDia == null ? null : listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "Entrada").Any() ? listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "Entrada").Last().Hora : (TimeSpan?)null;
                    reporte.HoraEntradaParcial = listaAccesosDelDia == null ? null : _horarioDia.HoraEntradaParcial == null ? null : listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "EntradaParacial").Any() ? listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "EntradaParacial").Last().Hora : (TimeSpan?)null;
                    reporte.HoraSalida         = listaAccesosDelDia == null ? null : listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "Salida").Any() ? listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "Salida").Last().Hora : (TimeSpan?)null;
                    reporte.HoraSalidaParcial  = listaAccesosDelDia == null ? null : _horarioDia.HoraSalidaParcial == null ? null : listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "SalidaParcial").Any() ? listaAccesosDelDia.Where(acceso => acceso.TipoAcceso == "SalidaParcial").Last().Hora : (TimeSpan?)null;

                    // Minutos tarde y minutos faltantes

                    reporte.MinutosTarde              = listaAccesosDelDia == null ? null : Tardanza(listaAccesosDelDia, _horarioDia);
                    reporte.MinutosTardeExtension     = listaAccesosDelDia == null ? null : _horarioDia.HoraEntradaParcial == null ? null : TardanzaExtension(listaAccesosDelDia, _horarioDia);
                    reporte.MinutosFaltantes          = listaAccesosDelDia == null ? null : (reporte.HoraSalidaParcial != null && reporte.HoraEntrada != null) ? Diff((TimeSpan)reporte.HoraSalidaParcial, (TimeSpan)reporte.HoraEntrada) : (TimeSpan?)null;
                    reporte.MinutosFaltantesExtension = listaAccesosDelDia == null ? null : _horarioDia.HoraEntradaParcial == null ? ((reporte.HoraSalida != null && reporte.HoraEntrada != null) ? Diff(Diff((TimeSpan)reporte.HoraSalida, (TimeSpan)reporte.HoraEntrada), Diff((TimeSpan)_horarioDia.HoraSalida, (TimeSpan)_horarioDia.HoraEntrada)) : (TimeSpan?)null) : ((reporte.HoraSalida != null && reporte.HoraEntradaParcial != null) ? Diff(Diff((TimeSpan)reporte.HoraSalida, (TimeSpan)reporte.HoraEntradaParcial), Diff((TimeSpan)_horarioDia.HoraSalida, (TimeSpan)_horarioDia.HoraEntradaParcial)) : (TimeSpan?)null);

                    reporte.Ausente = listaAccesosDelDia == null ? (bool?)null : Ausente(dia, _horarioDia, listaAccesosDelDia, out porLlegarTarde) || ((reporte.MinutosTarde != null) && ((TimeSpan)reporte.MinutosTarde).TotalMinutes > _minutosToleranciaAusente ? true : false);
                    reporte.AusentePorLlegarTarde = listaAccesosDelDia == null ? (bool?)null : porLlegarTarde;
                }
                else
                {
                    reporte.AgenteId = _agenteId;
                    reporte.Numero   = i;
                    reporte.Ausente  = null;

                    // Listas para las grillas de abajo

                    reporte.Comisiones = ComisionesEnElMes(dia) ?? new List <ComisionServicioDTO>();
                    reporte.Lactancias = LactanciasEnElMes(dia) ?? new List <LactanciaDTO>();
                    reporte.Novedades  = NovedadesEnElMes(dia) ?? new List <NovedadAgenteDTO>();

                    reporte.Fecha = dia;
                    reporte.Dia   = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(dia.ToString("dddd", new CultureInfo("es-Ar")));

                    // Horas de los accesos

                    reporte.HoraEntrada        = null;
                    reporte.HoraEntradaParcial = null;
                    reporte.HoraSalida         = null;
                    reporte.HoraSalidaParcial  = null;

                    // Minutos tarde y minutos faltantes

                    reporte.MinutosTarde              = null;
                    reporte.MinutosTardeExtension     = null;
                    reporte.MinutosFaltantes          = null;
                    reporte.MinutosFaltantesExtension = null;

                    reporte.AusentePorLlegarTarde = null;
                }

                lista.Add(reporte);
            }

            return(lista);
        }