/// <summary> /// Request customer data. /// </summary> /// <param name="request">Customer request message.</param> /// <returns>Customer response message.</returns> public CustomerResponse GetCustomers(CustomerRequest request) { var response = new CustomerResponse(request.RequestId); // Validate client tag, access token, and user credentials if (!ValidRequest(request, response, Validate.All)) { return(response); } var criteria = request.Criteria as CustomerCriteria; string sort = criteria.SortExpression; if (request.LoadOptions.Contains("Customers")) { IEnumerable <Customer> customers; if (!criteria.IncludeOrderStatistics) { customers = _customerDao.GetCustomers(sort); } else { customers = _customerDao.GetCustomersWithOrderStatistics(sort); } response.Customers = customers.Select(c => Mapper.ToDataTransferObject(c)).ToList(); } if (request.LoadOptions.Contains("Customer")) { var customer = _customerDao.GetCustomer(criteria.CustomerId); if (request.LoadOptions.Contains("Orders")) { customer.Orders = _orderDao.GetOrdersByCustomer(customer.CustomerId); } response.Customer = Mapper.ToDataTransferObject(customer); } return(response); }