Exemple #1
0
        public async Task <CustomerViewModel> GetAsync(CustomerInquirySearchModel query)
        {
            query.ThrowNoValidIf(q => string.IsNullOrEmpty(q.Email) && !q.CustomerID.HasValue,
                                 "Bad Request");
            query.ThrowNoValidIf(q => !string.IsNullOrEmpty(q.Email) && !q.Email.IsValidEmail(),
                                 "Invalid Email");

            var searchPredicate = new CustomerInquirySearchCriteriaBuilder().Build(query);
            var customer        = await _unitOfWorkAsync.LoadAsync(searchPredicate, x => x.Transactions);

            customer.ThrowIfNull("Customer Inquiry is not found");

            var recentTransactions = customer.Transactions
                                     .OrderByDescending(t => t.DateTime)
                                     .Take(CountOfTopRecentElements)
                                     .Select(t => new TransactionViewModel
            {
                Id       = t.Id,
                Amount   = t.Amount,
                Currency = t.Currency.Code,
                Date     = Helper.Format(t.DateTime),
                Status   = t.Status.GetDescription()
            })
                                     .ToList();

            return(new CustomerViewModel
            {
                Id = customer.Id,
                Name = customer.Name,
                Email = customer.ContactEmail,
                Mobile = customer.MobileNo,
                Transactions = recentTransactions,
            });
        }
Exemple #2
0
 public async Task <IHttpActionResult> Get([SearchQuery] CustomerInquirySearchModel query)
 {
     return(Ok(await _customerInquiryService.GetAsync(query)));
 }