public void Create(AddCustomerQueryRequest request) { var shopContext = new ShopContext("Shop"); var customer = shopContext.Customers.Add(request.Customer); customer.CustomerProductQueries = new List<CustomerProductQuery>(); foreach (var productId in request.ProductIds) { customer.CustomerProductQueries.Add(new CustomerProductQuery() { ProductId = productId }); } shopContext.SaveChanges(); // send email to sales team - in reality would refactor out to a seperate service - more of these settings should probably go in config SmtpClient client = new SmtpClient(ConfigurationManager.AppSettings["SmtpServer"]); client.Credentials = new NetworkCredential("username", "password"); MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress("*****@*****.**"); mailMessage.To.Add("*****@*****.**"); var productNames = shopContext.Products.Where(p => request.ProductIds.Contains(p.Id)).Select(p => p.Name); mailMessage.Body = $"Customer {customer.FirstName} {customer.LastName} has a price query about Product Ids {string.Join(",", productNames)}"; mailMessage.Subject = "subject"; try { client.Send(mailMessage); } catch (Exception) { //dont allow email error to cause issue to user //log email error here } }
// GET api/products public IEnumerable<Product> Get() { var shopContext = new ShopContext("Shop"); var products = shopContext.Products; return products; }