Пример #1
0
        /// <summary>
        /// Выполнение запроса.
        /// </summary>
        /// <param name="searchParameters">Фильтры поиска.</param>
        /// <param name="httpRequest">Запрос.</param>
        /// <returns>Список с платежами.</returns>
        public IPagedList <PaymentDto> Execute(PaymentsSearchParametersDto searchParameters, HttpRequest httpRequest)
        {
            var payments = _executor
                           .GetQuery <GetPaymentsQuery>()
                           .Process(query => query.Execute(searchParameters, httpRequest));

            return(payments.ToPagedList(httpRequest.GetPaginationParams()));
        }
Пример #2
0
        public IActionResult GetExcel([FromQuery] PaymentsSearchParametersDto searchParameters)
        {
            var payments = Executor.GetQuery <GetPaymentsQuery>().Process(q => q.Execute(searchParameters, Request));

            var fileStream = Executor.GetCommand <GetExcelFileCommand>().Process(q => q.Execute(payments, Request));

            return(File(fileStream, GetExcelFileCommand.ContentType, GetExcelFileCommand.DefaultFileName));
        }
Пример #3
0
        public IActionResult Get([FromQuery] PaymentsSearchParametersDto searchParameters)
        {
            var pagedPaymentJournalDto = Executor
                                         .GetQuery <GetPagedPaymentsQuery>()
                                         .Process(q => q.Execute(searchParameters, Request));

            return(pagedPaymentJournalDto.AsOkObjectResult(Response));
        }
Пример #4
0
        /// <summary>
        /// Возвращает отфильрованный запрос к платежам.
        /// </summary>
        /// <param name="searchParameters">Параметры фильтрации.</param>
        /// <returns>Отфильтрованный запрос к платежам.</returns>
        private IQueryable <Payment> GetQuery(PaymentsSearchParametersDto searchParameters)
        {
            var query = Uow.GetRepository <Payment>()
                        .AsQueryable()
                        .AsNoTracking()
                        .Include(r => r.Customer)
                        .Include(r => r.PaymentStatus)
                        .Include(r => r.PaymentUses);

            return(ApplySearch(query, searchParameters));
        }
Пример #5
0
        /// <summary>
        /// Выполняет фильтрацию запроса.
        /// </summary>
        /// <param name="query">Запрос к платежам.</param>
        /// <param name="searchParams">Параметры фильтрации.</param>
        /// <returns>Отфильтрованный запрос к платежам.</returns>
        private static IQueryable <Payment> ApplySearch(IQueryable <Payment> query, PaymentsSearchParametersDto searchParams)
        {
            if (searchParams.Id != null)
            {
                query = query.Where(x => x.Id.ToString().Contains(searchParams.Id.ToString()));
            }

            if (searchParams.DateCreateFrom != null)
            {
                query = query.Where(x => x.DateCreate >= searchParams.DateCreateFrom.Value.Date);
            }

            if (searchParams.DateCreateTo != null)
            {
                query = query.Where(x => x.DateCreate < searchParams.DateCreateTo.Value.Date.AddDays(1));
            }

            if (!string.IsNullOrWhiteSpace(searchParams.PayerName))
            {
                query = query.Where(x => x.Customer.NameRu.Contains(searchParams.PayerName));
            }

            if (!string.IsNullOrWhiteSpace(searchParams.PayerXin))
            {
                query = query.Where(x => x.Customer.Xin.Contains(searchParams.PayerXin));
            }

            if (!string.IsNullOrWhiteSpace(searchParams.PayerRnn))
            {
                query = query.Where(x => x.Customer.Rnn.Contains(searchParams.PayerRnn));
            }

            if (searchParams.PaymentDateFrom != null)
            {
                query = query.Where(x => x.PaymentDate >= searchParams.PaymentDateFrom.Value.Date);
            }

            if (searchParams.PaymentDateTo != null)
            {
                query = query.Where(x => x.PaymentDate < searchParams.PaymentDateTo.Value.Date.AddDays(1));
            }

            if (searchParams.Amount != null)
            {
                query = query.Where(x => x.Amount == searchParams.Amount);
            }

            if (searchParams.Remainder != null)
            {
                query = query.Where(x =>
                                    (x.Amount - (x.PaymentUses.Any() ? x.PaymentUses.Sum(pu => pu.Amount) : 0)) == searchParams.Remainder);
            }

            if (searchParams.Distributed != null)
            {
                query = query.Where(x => (x.PaymentUses.Any() ? x.PaymentUses.Sum(pu => pu.Amount) : 0) == searchParams.Distributed);
            }

            if (!string.IsNullOrWhiteSpace(searchParams.PaymentPurpose))
            {
                query = query.Where(x => x.PurposeDescription.Contains(searchParams.PaymentPurpose));
            }

            if (!string.IsNullOrWhiteSpace(searchParams.PaymentNumber))
            {
                query = query.Where(x => x.PaymentNumber.Contains(searchParams.PaymentNumber));
            }

            if (!string.IsNullOrWhiteSpace(searchParams.PaymentDocumentNumber))
            {
                query = query.Where(x => x.PaymentCNumberBVU.Contains(searchParams.PaymentDocumentNumber));
            }

            if (searchParams.PaymentStatusId != null)
            {
                query = query.Where(x => x.PaymentStatus.Id == searchParams.PaymentStatusId);
            }

            query = query.Where(x => x.IsForeignCurrency == searchParams.IsForeignCurrency);

            if (!string.IsNullOrWhiteSpace(searchParams.CurrencyCode))
            {
                query = query.Where(x => x.CurrencyType.Contains(searchParams.CurrencyCode));
            }

            return(query);
        }
Пример #6
0
 /// <summary>
 /// Выполнение запроса.
 /// </summary>
 /// <param name="searchParameters">Фильтры поиска.</param>
 /// <param name="httpRequest">Запрос.</param>
 /// <returns>Список с платежами.</returns>
 public IQueryable <PaymentDto> Execute(PaymentsSearchParametersDto searchParameters, HttpRequest httpRequest)
 {
     return(GetQuery(searchParameters)
            .Select(PaymentDto.FromPaymentDto)
            .Sort(httpRequest.Query));
 }