public async Task <IActionResult> GetByPaymentsFilter( [Required][RowKey] string merchantId, IEnumerable <string> statuses, DateTime?dateFrom, DateTime?dateTo, string searchText, [GreaterThan(0)] int?take ) { var statusesConverted = new List <InvoiceStatus>(); if (statuses != null) { foreach (var status in statuses) { try { statusesConverted.Add(status.Trim().ParseEnum <InvoiceStatus>()); } catch (Exception) { return(BadRequest(ErrorResponse.Create($"Invoice status <{status}> is not valid"))); } } } var result = new GetByPaymentsFilterResponse(); IReadOnlyList <Invoice> invoices = await _invoiceService.GetByFilterAsync(new InvoiceFilter { MerchantIds = new List <string> { merchantId }, Statuses = statusesConverted, DateFrom = dateFrom, DateTo = dateTo }); if (!string.IsNullOrWhiteSpace(searchText)) { var s = searchText; invoices = invoices.Where(_ => _.Number.Contains(s) || _.ClientName.Contains(s) || _.ClientEmail.Contains(s)).ToList(); } if (take.HasValue) { result.HasMoreInvoices = invoices.Count > take.Value; invoices = invoices.OrderByDescending(x => x.CreatedDate).Take(take.Value).ToList(); } else { invoices = invoices.OrderByDescending(x => x.CreatedDate).ToList(); } result.Invoices = Mapper.Map <List <InvoiceModel> >(invoices); return(Ok(result)); }
public async Task <IActionResult> GetByPaymentsFilter( [Required][RowKey] string merchantId, IEnumerable <string> statuses, IEnumerable <string> processingErrors, DateTime?dateFrom, DateTime?dateTo, [Range(1, int.MaxValue)] int?take ) { var statusesConverted = new List <PaymentRequestStatus>(); if (statuses != null) { foreach (var status in statuses) { try { statusesConverted.Add(status.Trim().ParseEnum <PaymentRequestStatus>()); } catch (Exception) { return(BadRequest(ErrorResponse.Create( $"PaymentRequestStatus <{status}> is not valid. " + $"Valid values are: {string.Join(",", Enum.GetNames(typeof(PaymentRequestStatus)))}"))); } } } var processingErrorsConverted = new List <PaymentRequestProcessingError>(); if (processingErrors != null) { foreach (var processingError in processingErrors) { try { processingErrorsConverted.Add(processingError.Trim().ParseEnum <PaymentRequestProcessingError>()); } catch (Exception) { return(BadRequest(ErrorResponse.Create( $"PaymentRequestProcessingError <{processingError}> is not valid. " + $"Valid values are: {string.Join(",", Enum.GetNames(typeof(PaymentRequestProcessingError)))}"))); } } } var paymentRequests = await _paymentRequestService.GetByFilterAsync(new PaymentsFilter { MerchantId = merchantId, Statuses = statusesConverted, ProcessingErrors = processingErrorsConverted, DateFrom = dateFrom, DateTo = dateTo }); var result = new GetByPaymentsFilterResponse(); if (take.HasValue) { result.HasMorePaymentRequests = paymentRequests.Count > take.Value; paymentRequests = paymentRequests.OrderByDescending(x => x.Timestamp).Take(take.Value).ToList(); } else { paymentRequests = paymentRequests.OrderByDescending(x => x.Timestamp).ToList(); } result.PaymeentRequests = paymentRequests; return(Ok(result)); }