public async Task <CustomerDto> GetTransactionsByCustomerAsync(CustomerInquiryInput request)
        {
            var customer = await _context.Customers
                           .SingleOrDefaultAsync(c => (request.CustomerID != null && c.CustomerID == request.CustomerID.Value) ||
                                                 c.Email.Equals(request.Email));

            // Load transaction to customer
            await LoadTransactionsForCustomer(customer);

            var customers = _mapper.Map <CustomerDto>(customer);

            return(customers);
        }
        public async Task <ActionResult <CustomerDto> > Get([FromQuery] CustomerInquiryInput customerInquiryCriteria)
        {
            if ((customerInquiryCriteria.CustomerID == null && (string.IsNullOrEmpty(customerInquiryCriteria.Email) ||
                                                                !TryValidateModel(customerInquiryCriteria))))
            {
                string errorMessages = string.Join("; ", ModelState.Values
                                                   .SelectMany(x => x.Errors)
                                                   .Select(x => x.ErrorMessage));

                return(BadRequest(errorMessages));
            }
            var customers = await _customersRepository.GetTransactionsByCustomerAsync(customerInquiryCriteria);

            if (customers == null)
            {
                return(NotFound("No inquiry criteria"));
            }

            return(Ok(customers));
        }