public async Task<IInquiryCustomer> GetCustomer(IInquiryCriteria criteria) { using (var context = new CustomerInquiryContext()) { return await context.Customers.Include(x => x.Transactions).FirstOrDefaultAsync(x => x.Id == criteria.CustomerId || x.Email == criteria.Email); } }
// POST api/customers public async Task <HttpResponseMessage> Post(InquiryCriteriaViewmodel inquiryCriteria) { if (inquiryCriteria.customerID <= 0 && string.IsNullOrEmpty(inquiryCriteria.email)) { return(CreateResponse(HttpStatusCode.BadRequest, "No inquiry criteria")); } else { if (!Validator.IsValidEmail(inquiryCriteria.email)) { return(CreateResponse(HttpStatusCode.BadRequest, "Invalid Email")); } if (!Validator.IsValidCustomerId(inquiryCriteria.customerID)) { return(CreateResponse(HttpStatusCode.BadRequest, "Invalid Customer ID")); } IInquiryCriteria criteria = inquiryCriteria.Convert(); IInquiryCustomer customer = await _customerBusinessLogic.GetCustomer(criteria); if (customer == null) { return(CreateResponse(HttpStatusCode.NotFound, "Not found")); } return(CreateResponse(new CustomerViewmodel(customer, criteria))); } }
public CustomerViewmodel(IInquiryCustomer customer, IInquiryCriteria criteria) { customerID = customer.Id; name = customer.Name; email = customer.Email; mobile = customer.MobileNumber; transactions = customer.Transactions.Select(x => new TransactionViewmodel(x)).OrderByDescending(x => x.date).Take(5).ToList(); transactions = criteria.HasAllCriteria ? transactions : criteria.HasOnlyEmail ? transactions.Take(1).ToList() : new List <TransactionViewmodel>(); }
public async Task <IInquiryCustomer> GetCustomer(IInquiryCriteria criteria) { IInquiryCustomer customer = await _customerRepository.GetCustomer(criteria); return(customer); }