public ICollection <IncidentSummaryQueueItem> GetIncidentSummaryQueueItems(QueueQuery queueQuery) { var summaries = IncidentSummaries(queueQuery); if (queueQuery.QueueSort != null) { try { var orderBy = QueueSpecifications.GetOrderBy <IncidentSummary>(queueQuery.QueueSort); summaries = (orderBy != null) ? summaries.OrderBy(orderBy) : summaries.OrderBy(s => s.Number); } catch (Exception e) { Log.Error(string.Format("Failed to apply queue sorting for {0}", queueQuery.QueueType), e); summaries = summaries.OrderBy(s => s.Number); // ensure that a filtering is applying in order for skip take to work } } else { summaries = summaries.OrderBy(s => s.Number); } var summaryQueueItems = summaries.Skip(queueQuery.Skip).Take(queueQuery.Take).ToList().AsListOf <IncidentSummaryQueueItem>(); return(summaryQueueItems); }
private IQueryable <Report> ApplyQueueFilter(QueueQuery queueQuery, IQueryable <Report> reports) { if (queueQuery.QueueFilters == null || queueQuery.QueueFilters.Count == 0) { return(reports); } try { reports = queueQuery.QueueFilters.Select(QueueSpecifications.GetQueuePredicate <Report>) .Where(predicate => predicate != null) .Aggregate(reports, (current, predicate) => current.Where(predicate.Predicate, predicate.PredicateParms)); #region Apply Date Filters string queueFieldName = "eventStartDate"; DateTime[] dateRange = QueueSpecifications.GetDateRangeByQueueField(queueQuery, queueFieldName); if (dateRange.Length == 2) { DateTime startDate = dateRange[0]; DateTime endDate = dateRange[1]; queueQuery.QueueFilters.RemoveAll(f => f.Filter1.QueueFilterOperator == QueueFilterOperator.DateRange && f.Filter1.FieldName == queueFieldName); reports = reports.Where(r => r.Event.StartDate >= startDate && r.Event.StartDate <= endDate); } queueFieldName = "createdOn"; dateRange = QueueSpecifications.GetDateRangeByQueueField(queueQuery, queueFieldName); if (dateRange.Length == 2) { DateTime startDate = dateRange[0]; DateTime endDate = dateRange[1]; queueQuery.QueueFilters.RemoveAll(f => f.Filter1.QueueFilterOperator == QueueFilterOperator.DateRange && f.Filter1.FieldName == queueFieldName); reports = reports.Where(r => r.Event.CreatedOn >= startDate && r.Event.CreatedOn <= endDate); } #endregion // Apply Custom Filters if (queueQuery.QueueFilters != null) { reports = queueQuery.QueueFilters.Aggregate(reports, (current, filter) => current.Where(QueueSpecifications.ReportCustomFilterExpression(filter))); } } catch (Exception e) { Log.Error(string.Format("Failed to apply queue filter(s) for {0}", queueQuery.QueueType), e); } return(reports); }
private IQueryable <CitationSummary> CitationSummaries(QueueQuery queueQuery) { var summaries = UnitOfWork.GetEntityQuery <CitationSummary>(); var agencies = GetAgenciesWithViewGranted(ModuleType.Citation); summaries = ApplyQueueFilter(queueQuery, summaries.Where(x => agencies.Contains(x.AgencyId))); #region Apply Date Filters try { string queueFieldName = "eventStartDate"; DateTime[] dateRange = QueueSpecifications.GetDateRangeByQueueField(queueQuery, queueFieldName); if (dateRange.Length == 2) { DateTime startDate = dateRange[0]; DateTime endDate = dateRange[1]; queueQuery.QueueFilters.RemoveAll(f => f.Filter1.QueueFilterOperator == QueueFilterOperator.DateRange && f.Filter1.FieldName == queueFieldName); summaries = summaries.Where(s => s.Event.StartDate >= startDate && s.Event.StartDate <= endDate); } queueFieldName = "eventDateReported"; dateRange = QueueSpecifications.GetDateRangeByQueueField(queueQuery, queueFieldName); if (dateRange.Length == 2) { DateTime startDate = dateRange[0]; DateTime endDate = dateRange[1]; queueQuery.QueueFilters.RemoveAll(f => f.Filter1.QueueFilterOperator == QueueFilterOperator.DateRange && f.Filter1.FieldName == queueFieldName); summaries = summaries.Where(s => s.Officers.FirstOrDefault(x => x.InvolvementType.Code == OfficerInvolvementTypes.Reporting.Code).InvolvementDate >= startDate && s.Officers.FirstOrDefault(x => x.InvolvementType.Code == OfficerInvolvementTypes.Reporting.Code).InvolvementDate <= endDate); } } catch (Exception ex) { Log.Error(string.Format("Failed to apply queue date filter(s) for {0}", queueQuery.QueueType), ex); } #endregion // Apply Custom Filters if (queueQuery.QueueFilters != null) { summaries = queueQuery.QueueFilters.Aggregate(summaries, (current, filter) => current.Where(QueueSpecifications.CitationQueueCustomFilterExpression(filter))); } return(summaries); }
private IQueryable <Report> ApplyQueueSorting(QueueQuery queueQuery, IQueryable <Report> reports) { if (queueQuery != null && queueQuery.QueueSort != null) { try { var orderBy = QueueSpecifications.GetOrderBy <Report>(queueQuery.QueueSort); reports = (orderBy != null) ? reports.OrderBy(orderBy) : reports.OrderBy(r => r.ModifiedOn); } catch (Exception e) { Log.Error(string.Format("Failed to apply queue sorting for {0}", queueQuery.QueueType), e); reports = reports.OrderBy(r => r.Event.StartDate); } } else { reports = reports.OrderBy(r => r.Event.StartDate); } return(reports); }
private IQueryable <Case> CaseSummmaries(QueueQuery queueQuery) { var summaries = UnitOfWork.GetEntityQuery <Case>(); var agencies = GetAgenciesWithViewGranted(ModuleType.Case); summaries = ApplyQueueFilter(queueQuery, summaries.Where(x => agencies.Contains(x.AgencyId))); // Apply Custom Filters if (queueQuery.QueueFilters != null) { summaries = queueQuery.QueueFilters.Aggregate(summaries, (current, filter) => current.Where(QueueSpecifications.CaseQueueCustomFilterExpression(filter))); } return(summaries); }