public async Task <IActionResult> SearchData(SettlementSearchFormViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("SettlementPaymentRequests", new SettlementPaymentRequestsViewModel
                {
                    ErrorMessage = GetModelErrorMessage()
                }));
            }

            if (string.IsNullOrEmpty(model.Query))
            {
                return(await GetPaymentRequestsAsync(() =>
                                                     _paySettlementClient.Api.GetPaymentRequestsByMerchantAsync(
                                                         model.MerchantId, model.PageSize, model.ContinuationToken)));
            }

            string query = model.Query.Trim();

            return(await GetPaymentRequestsAsync(async() =>
            {
                var tasks = new List <Task <IEnumerable <PaymentRequestModel> > >();

                if (!string.IsNullOrEmpty(model.MerchantId))
                {
                    tasks.Add(GetPaymentRequestsWithoutNotFoundAsync(async() => new[]
                    {
                        await _paySettlementClient.Api.GetPaymentRequestAsync(model.MerchantId, query)
                    }));
                }

                tasks.Add(GetPaymentRequestsWithoutNotFoundAsync(async() => new[]
                {
                    await _paySettlementClient.Api.GetPaymentRequestByWalletAddressAsync(query)
                }));
                tasks.Add(GetPaymentRequestsWithoutNotFoundAsync(() =>
                                                                 _paySettlementClient.Api.GetPaymentRequestsByTransactionHashAsync(query)
                                                                 ));

                await Task.WhenAll(tasks);

                var results = new List <PaymentRequestModel>();
                foreach (var task in tasks)
                {
                    if (task.Result?.Any() == true)
                    {
                        results.AddRange(task.Result);
                    }
                }

                return new ContinuationResult <PaymentRequestModel> {
                    Entities = results
                };
            }));
        }
        public async Task <IActionResult> SearchForm()
        {
            var model = new SettlementSearchFormViewModel
            {
                Merchants = await _payMerchantClient.Api.GetAllAsync(),
                DataUrl   = Url.Action("SearchData")
            };

            model.MerchantId = model.Merchants.FirstOrDefault()?.Id;
            return(View(model));
        }