public JacketSpecification(JacketFilter filter)
        {
            if (filter.SortFields.Count == 0)
            {
                Query.OrderByDescending(j => j.ReceivedDate).ThenByDescending(j => j.JacketNumber);
            }
            else
            {
                Query.OrderBy(filter.SortFields);
            }

            if (filter.JacketYear != null && filter.JacketSequence != null)
            {
                Query.Where(j => j.JacketYear == filter.JacketYear && filter.JacketSequence == filter.JacketSequence);
            }

            if (filter.Defendant != null)
            {
                Query.Where(j => j.Defendants.Any(d => d.Name.Contains(filter.Defendant)));
            }

            if (filter.Plaintiff != null)
            {
                Query.Where(j => j.Plaintiffs.Any(p => p.Name.Contains(filter.Plaintiff)));
            }

            if (filter.ReceivedFrom != null)
            {
                Query.Where(j => j.ReceivedFrom.Contains(filter.ReceivedFrom));
            }
        }
Beispiel #2
0
            public async Task <ListResponse> Handle(JacketRequest request, CancellationToken cancellationToken)
            {
                var filter = new JacketFilter(request.JacketYear, request.JacketSequence, request.Defendant, request.Plaintiff, request.ReceivedFrom, request.Page, request.PageSize, request.SortFields);
                var spec   = new JacketSpecification(filter);

                var totalJackets = await _repository.CountAsync(spec, cancellationToken);

                var pageCount = (int)Math.Ceiling((decimal)totalJackets / request.PageSize);
                var jackets   = await _repository.ListAsync(spec, cancellationToken);

                var response = new ListResponse(jackets.Select(_mapper.Map <JacketResponse>).ToList(), totalJackets, request.Page, pageCount);

                return(response);
            }