Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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"));
            }
        }