Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }