public void SendAssignWorkerMessage(Job job, Customer worker) { var templateBody = TemplateBody(templateSettings.GetAssignWorker()); var replacementKeyValues = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("{{BaseUrl}}", templateSettings.GetBasePath()), new KeyValuePair<string, string>("{{BaseAdminUrl}}", templateSettings.GetAdminBasePath()), new KeyValuePair<string, string>("{{FullName}}", worker.FullName), new KeyValuePair<string, string>("{{HoursEffort}}", job.Quote.HoursEffort.ToString()), new KeyValuePair<string, string>("{{AmountPaid}}", job.Quote.AmountPaidToWorker.ToString()), new KeyValuePair<string, string>("{{CompletionDate}}", job.EstimatedCompletion.ToString()), new KeyValuePair<string, string>("{{JobUrl}}", string.Format("Jobs/Job/{0}", job.Id)) }; string body = templateManager.PopulateTemplate(templateBody, replacementKeyValues); Logger.Info("Sending Assign Worker Message"); string subject = string.Format("Job Assignment: {0}", job.Reference); var toAddress = emailAddressSettings.CreateEmailAddress(worker.Email, worker.FullName); var fromAddress = emailAddressSettings.GetInfoEmailAddress(); if (emailer.TrySendMail(toAddress, fromAddress, subject, body)) { Logger.Info("Send succeeded"); } }
public Job CreateJob() { var job = new Job(); jobRepository.Add(job); Logger.Info("Job Created"); return job; }
public void AssignWorker(Job job, Customer worker) { job.Worker = worker; job.AssignedToWorker = DateTime.Now; SaveJob(job); notifier.SendAssignWorkerMessage(job, worker); Logger.Info("Assigned job to worker"); }
public void AddNote(Job job, Note note, bool noteToCustomer, bool noteToWorker) { AddNote(job, note); if (noteToCustomer && job.Customer != null) { notifier.SendJobNoteToWorker(job, note); } if (noteToWorker && job.Worker != null) { notifier.SendJobNoteToCustomer(job, note); } }
public void SendRequestedQuoteMessage(Job job) { var templateBody = TemplateBody(templateSettings.GetQuoteRequested()); var replacementKeyValues = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("{{FullName}}", job.Customer.FullName), new KeyValuePair<string, string>("{{Reference}}", job.Reference) }; string body = templateManager.PopulateTemplate(templateBody, replacementKeyValues); Logger.Info("Sending Requested Message"); var toAddress = emailAddressSettings.CreateEmailAddress(job.Customer.Email, job.Customer.FullName); var fromAddress = emailAddressSettings.GetQuoteEmailAddress(); if (emailer.TrySendMail(toAddress, fromAddress, "Thanks for requesting a quote", body)) { Logger.Info("Send succeeded"); } }
public void SendProvidedQuoteMessage(Job job) { var templateBody = TemplateBody(templateSettings.GetQuoteProvided()); var replacementKeyValues = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("{{BaseUrl}}", templateSettings.GetBasePath()), new KeyValuePair<string, string>("{{AcceptQuotePath}}", string.Format("umbraco/Surface/RetrieveQuote/Retrieve?email={0}&reference={1}", job.Customer.Email, job.Reference)), new KeyValuePair<string, string>("{{FullName}}", job.Customer.FullName), new KeyValuePair<string, string>("{{Reference}}", job.Reference), new KeyValuePair<string, string>("{{Website}}", job.Website.Url), new KeyValuePair<string, string>("{{Amount}}", job.Quote.Amount.ToString("N2")), new KeyValuePair<string, string>("{{Tax}}", job.Quote.Tax.ToString("N2")), new KeyValuePair<string, string>("{{Total}}", job.Quote.Total.ToString("N2")) }; string body = templateManager.PopulateTemplate(templateBody, replacementKeyValues); Logger.Info("Sending Provided Message"); var toAddress = emailAddressSettings.CreateEmailAddress(job.Customer.Email, job.Customer.FullName); var fromAddress = emailAddressSettings.GetQuoteEmailAddress(); if (emailer.TrySendMail(toAddress, fromAddress, string.Format("Your quotation for changes to {0}", job.Website.Url), body)) { Logger.Info("Send succeeded"); } }
public void SendPaymentMadeMessage(Job job) { var templateBody = TemplateBody(templateSettings.GetPaymentMade()); Logger.Info("Sending Payment Made Message"); string subject = string.Format("Your payment confirmation: {0}", job.Reference); var replacementKeyValues = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("{{BaseUrl}}", templateSettings.GetBasePath()), new KeyValuePair<string, string>("{{FullName}}", job.Customer.FullName), new KeyValuePair<string, string>("{{JobReference}}", job.Reference), new KeyValuePair<string, string>("{{AmountPaid}}", job.Payment.Amount.ToString()), new KeyValuePair<string, string>("{{CompletionDate}}", job.EstimatedCompletion.ToString()), new KeyValuePair<string, string>("{{TransactionReference}}", job.Payment.Reference), new KeyValuePair<string, string>("{{DatePaid}}", job.Payment.Paid.ToString()), // todo - add relative time to template }; string body = templateManager.PopulateTemplate(templateBody, replacementKeyValues); var toAddress = emailAddressSettings.CreateEmailAddress(job.Customer.Email, job.Customer.FullName); var fromAddress = emailAddressSettings.GetInfoEmailAddress(); if (emailer.TrySendMail(toAddress, fromAddress, subject, body)) { Logger.Info("Send succeeded"); } }
public void SendJobNoteToWorker(Job job, Note note) { string body = GetNoteBody(note.Message); Logger.Info("Sending Job Note To Worker"); string subject = string.Format("Re: {0}", job.Reference); var toAddress = emailAddressSettings.CreateEmailAddress(job.Worker.Email, job.Worker.FullName); var fromAddress = emailAddressSettings.GetInfoEmailAddress(); if (emailer.TrySendMail(toAddress, fromAddress, subject, body)) { Logger.Info("Send succeeded"); } }
public QuoteController(IJobService jobService, IPromotionService promotionService) { this.jobService = jobService; this.promotionService = promotionService; this.job = GetJob(); }
public PartialViewResult PersonalDetails(PersonalDetailsInputModel inputModel) { if (job == null) { job = CreateJob(); } if (ModelState.IsValid) { SetJobIdCookie(job.Guid); if (job.Customer != null) { job.Customer.FullName = inputModel.Name; job.Customer.Email = inputModel.Email.ToLower(); job.Customer.Telephone = inputModel.Telephone; } else { job.Customer = new Customer { FullName = inputModel.Name, Email = inputModel.Email.ToLower(), Telephone = inputModel.Telephone }; } jobService.SaveJob(job); return WebsiteDetails(); } var viewModel = new PersonalDetailsViewModel { Name = inputModel.Name, Email = inputModel.Email.ToLower(), Telephone = inputModel.Telephone }; return PartialView("PersonalDetails", viewModel); }
public void AddNote(Job job, Note note) { job.Notes.Add(note); SaveJob(job); }
public void SendToAllWorkers(Job job, IEnumerable<Customer> workers) { notifier.SendJobToAllWorkersMessage(job, workers); Logger.Info("Sent to all workers"); }
public void SaveJob(Job job) { jobRepository.Update(job); jobRepository.UnitOfWork.Commit(); Logger.Info("Job Saved"); }
public void RequestQuote(Job job) { job.RequestQuote(); notifier.SendRequestedQuoteMessage(job); }
public void ProvideQuote(Job job) { job.ProvideQuote(); notifier.SendProvidedQuoteMessage(job); }
public void MakePayment(Job job, decimal amount, string reference) { job.Payment.Amount = amount; job.Payment.Reference = reference; job.MakePayment(); notifier.SendPaymentMadeMessage(job); }