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)); }