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); }