Пример #1
0
        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");
            }
        }
Пример #2
0
        public Job CreateJob()
        {
            var job = new Job();
            jobRepository.Add(job);

            Logger.Info("Job Created");

            return job;
        }
Пример #3
0
        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");
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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");
            }
        }
Пример #6
0
        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");
            }
        }
Пример #7
0
        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");
            }
        }
Пример #8
0
        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");
            }
        }
Пример #9
0
 public QuoteController(IJobService jobService, IPromotionService promotionService)
 {
     this.jobService = jobService;
     this.promotionService = promotionService;
     this.job = GetJob();
 }
Пример #10
0
        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);
        }
Пример #11
0
 public void AddNote(Job job, Note note)
 {
     job.Notes.Add(note);
     SaveJob(job);
 }
Пример #12
0
 public void SendToAllWorkers(Job job, IEnumerable<Customer> workers)
 {
     notifier.SendJobToAllWorkersMessage(job, workers);
     Logger.Info("Sent to all workers");
 }
Пример #13
0
        public void SaveJob(Job job)
        {
            jobRepository.Update(job);
            jobRepository.UnitOfWork.Commit();

            Logger.Info("Job Saved");
        }
Пример #14
0
 public void RequestQuote(Job job)
 {
     job.RequestQuote();
     notifier.SendRequestedQuoteMessage(job);
 }
Пример #15
0
 public void ProvideQuote(Job job)
 {
     job.ProvideQuote();
     notifier.SendProvidedQuoteMessage(job);
 }
Пример #16
0
 public void MakePayment(Job job, decimal amount, string reference)
 {
     job.Payment.Amount = amount;
     job.Payment.Reference = reference;
     job.MakePayment();
     notifier.SendPaymentMadeMessage(job);
 }