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)));
            }
        }
Beispiel #3
0
        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>();
        }
Beispiel #4
0
        public async Task <IInquiryCustomer> GetCustomer(IInquiryCriteria criteria)
        {
            IInquiryCustomer customer = await _customerRepository.GetCustomer(criteria);

            return(customer);
        }