public async Task <bool> SendQuotationEmail(EmailQuoteModel model) { var message = new MailMessage(); message.To.Add(new MailAddress(model.EmailFormModel.Recipient)); message.From = new MailAddress("*****@*****.**"); message.Subject = "WeedHackers"; message.Body = model.EmailFormModel.Message; message.IsBodyHtml = true; using (var reader = new StreamReader(HttpContext.Current.Server.MapPath("~/Content/Templates/quotation_template.html"))) { string quotationTemplate = reader.ReadToEnd(); var logoId = Guid.NewGuid().ToString(); quotationTemplate = quotationTemplate .Replace("<%QUOTATION_NUMBER%>", model.QuotationNumber) .Replace("<%UNIT_SUBTOTAL%>", model.UnitSubtotal) .Replace("<%UNIT_TOTAL%>", model.UnitTotal) .Replace("<%EMAIL%>", model.Email) .Replace("<%TELL%>", model.Tell) .Replace("<%UNIT_QTY%>", model.UnitQuantity) .Replace("<%UNIT_PRICE%>", model.UnitPrice) .Replace("<%LOGO_ID%>", logoId) .Replace("<%SERVICE_TYPE%>", model.ServiceType); var alternateViewFromString = AlternateView.CreateAlternateViewFromString(quotationTemplate, Encoding.UTF8, "text/html"); var inline = new LinkedResource(HttpContext.Current.Server.MapPath("~/Content/Images/logo.png"), MediaTypeNames.Image.Jpeg) { ContentId = logoId }; alternateViewFromString.LinkedResources.Add(inline); message.AlternateViews.Add(alternateViewFromString); return(await SendEmail(model.EmailFormModel, message)); } }
public async Task <ActionResult> SendQuote(InspectionModel model) { EmailHelper send = new EmailHelper(); try { var dbServiceRequest = await WeedHackersContext .ServiceRequests .Include(ct => ct.Customer.CustomerType) .Include(ct => ct.Customer.User) .Include(s => s.Service) .Include(d => d.Service.Department) .Include(d => d.ServiceAdvisor.User) .Include(ss => ss.ServiceRequestStatusUpdates.Select(srsu => srsu.ServiceStatus)) .SingleAsync(s => s.Id == model.ServiceRequest.ServiceRequest.Id); double subtotal = dbServiceRequest.Service.PricePerUnit * (double)model.ServiceRequest.ServiceRequest.UnitQuantity; double Total = subtotal * 1.14; dbServiceRequest.UnitQuantity = model.ServiceRequest.ServiceRequest.UnitQuantity; var serviceStatus = await WeedHackersContext.ServiceStatuses.SingleAsync(ss => ss.Name == "Inspected"); ServiceRequestStatusUpdate serviceRequestStatusUpdate = new ServiceRequestStatusUpdate { ServiceRequestId = dbServiceRequest.Id, ServiceStatusId = serviceStatus.Id, Message = "Service Request has been Inspected." }; WeedHackersContext.ServiceRequestStatusUpdates.Add(serviceRequestStatusUpdate); await WeedHackersContext.SaveChangesAsync(); var emailRequest = new EmailQuoteModel(); emailRequest.Email = dbServiceRequest.ServiceAdvisor.User.Email; emailRequest.QuotationNumber = dbServiceRequest.Id.ToString(); emailRequest.ServiceType = dbServiceRequest.Service.ServiceName; emailRequest.Tell = dbServiceRequest.ServiceAdvisor.User.PhoneNumber; emailRequest.UnitQuantity = dbServiceRequest.UnitQuantity.ToString(); emailRequest.UnitPrice = dbServiceRequest.Service.PricePerUnit.ToString("R0.00"); emailRequest.UnitSubtotal = subtotal.ToString("R0.00"); emailRequest.UnitTotal = Total.ToString("R0.00"); emailRequest.EmailFormModel = new EmailFormModel { Recipient = dbServiceRequest.Customer.User.Email, Message = "" }; await send.SendQuotationEmail(emailRequest); FlashMessage.Confirmation("Inspection Complete", "Quote of inspection has been sent to the customer."); return(RedirectToAction("Index", "Employee")); } catch (Exception) { FlashMessage.Danger("Inspection Error", "There was a problem processing the inspection."); return(View("Index")); } }