Exemplo n.º 1
0
        protected override List <FichadaVo> GetResults()
        {
            var data    = SearchData.Create(this);
            var eventos = DAOFactory.EventoAccesoDAO.GetList(new[] { data.Empresa },
                                                             new[] { data.Linea },
                                                             data.CentrosCostos,
                                                             data.TiposEmpleados,
                                                             new[] { data.Empleado },
                                                             data.Puertas,
                                                             data.Desde,
                                                             data.Hasta);

            if (txtLegajo.Text.Trim() != string.Empty)
            {
                eventos = eventos.Where(e => e.Empleado.Legajo.Trim().Equals(txtLegajo.Text.Trim())).ToList();
            }

            var       list         = new List <FichadaVo>();
            FichadaVo current      = null;
            int       lastEmpleado = 0;

            foreach (var evento in eventos)
            {
                if (!chkEliminados.Checked && evento.Baja.HasValue)
                {
                    continue;
                }
                if (lastEmpleado != evento.Empleado.Id)
                {
                    current = null;
                }
                var fecha = evento.Fecha.ToDisplayDateTime();

                if (current == null)
                {
                    current = new FichadaVo(evento);
                    list.Add(current);
                }
                else
                {
                    if (current.HasSalida)
                    {
                        if (!evento.Entrada && fecha.Subtract(current.HoraSalida).TotalMinutes < data.Duracion)
                        {
                            current.SetEvento(evento);
                        }
                        else
                        {
                            current = new FichadaVo(evento);
                            list.Add(current);
                        }
                    }
                    else if (current.HasEntrada && evento.Entrada)
                    {
                        if (fecha.Subtract(current.HoraEntrada).TotalMinutes > data.Duracion)
                        {
                            current = new FichadaVo(evento);
                            list.Add(current);
                        }
                    }
                    else
                    {
                        current.SetEvento(evento);
                    }
                }

                lastEmpleado = evento.Empleado.Id;
            }

            if (chkHuerfanos.Checked)
            {
                list = list.Where(f => !f.HasEntrada || !f.HasSalida).ToList();
            }

            var module = Usuario.Modules[GetRefference()];

            if (module.Add)
            {
                btNuevo.Visible = true;
            }

            FilterData.Set(data);

            return(list);
        }