private string GetContentForJobRequestNotify(string template, IEnumerable <ContractUserRole> keyPersonnelList, JobRequestEmailModel emailModel) { StringBuilder content = new StringBuilder(template); var keyList = "<ul>"; foreach (var person in keyPersonnelList) { keyList += "<li>" + person.User.DisplayName + " (" + person.UserRole + ")" + "</li>"; } keyList += "</li>"; content.Replace("<<receiver-displayName>>", emailModel.ReceipentName); content.Replace("<<submitted-displayName>>", emailModel.SubmittedBy); content.Replace("<<contract-number>>", emailModel.ContractNumber); content.Replace("<<awarding-agency>>", emailModel.AwardingAgency); content.Replace("<<funding-agency>>", emailModel.FundingAgency); content.Replace("<<task-orderNumber>>", emailModel.TaskOrderNumber); content.Replace("<<project-number>>", emailModel.ProjectNumber); content.Replace("<<submitted-by>>", emailModel.SubmittedBy); content.Replace("<<status>>", emailModel.Status); content.Replace("<<key-personnelList>>", keyList); content.Replace("<<jobrequest-Url>>", emailModel.ClickableUrl); content.Replace("<<notify-to>>", emailModel.NotifiedTo); content.Replace("<<notify-other>>", emailModel.NotifyOther); return(content.ToString()); }
public void SendEmailToRespectivePersonnel(int status, Guid contractGuid) { var jobRequestEntity = _jobRequestService.GetDetailsForJobRequestById(contractGuid); var model = ContractsMapper.MapJobRequestToViewModel(jobRequestEntity); var keyPersonnel = _contractRefactorService.GetKeyPersonnelByContractGuid(contractGuid); var param = new { id = contractGuid }; var link = RouteUrlHelper.GetAbsoluteAction(_urlHelper, "JobRequest", "Detail", param); //var urlLink = new UrlHelper(ControllerContext.RequestContext); JobRequestEmailModel emailModel = new JobRequestEmailModel(); emailModel.ContractNumber = model.BasicContractInfo.ContractNumber; emailModel.ProjectNumber = model.BasicContractInfo.ProjectNumber; emailModel.AwardingAgency = model.CustomerInformation.AwardingAgencyOfficeName; emailModel.FundingAgency = model.CustomerInformation.FundingAgencyOfficeName; emailModel.ClickableUrl = link; emailModel.Status = "In Progress"; string emailTo = "*****@*****.**"; string recipientName = string.Empty; string subject = string.Empty; Guid notifyTo = UserHelper.CurrentUserGuid(HttpContext); var notificationTemplate = _notificationTemplatesService.GetByKey("jobrequest-notify"); var content = string.Empty; var template = string.Empty; if (notificationTemplate != null) { template = notificationTemplate.Message; } //for filtering the representative to send email switch (status) { case (int)JobRequestStatus.ContractRepresentative: var controlRepresentative = model.KeyPersonnel.ProjectControls; if (controlRepresentative != null) { notifyTo = controlRepresentative; } var projectUser = _userService.GetUserByUserGuid(notifyTo); if (projectUser != null) { //emailTo = contractUser.WorkEmail; recipientName = projectUser.DisplayName; emailModel.ReceipentName = recipientName; subject = "A new Job Request Form has been submitted for contract: " + emailModel.ContractNumber; } var conManager = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectManager); emailModel.NotifiedTo = conManager.Firstname + " " + conManager.Lastname; var submittedBy = _userService.GetUserByUserGuid(model.KeyPersonnel.ContractRepresentative); emailModel.SubmittedBy = submittedBy.Firstname + " " + submittedBy.Lastname; break; case (int)JobRequestStatus.ProjectControl: var projectRepresentative = model.KeyPersonnel.ProjectManager; if (projectRepresentative != null) { notifyTo = projectRepresentative; } var managerUser = _userService.GetUserByUserGuid(notifyTo); if (managerUser != null) { //emailTo = controlUser.WorkEmail; recipientName = managerUser.DisplayName; emailModel.ReceipentName = recipientName; subject = "A new Job Request Form has been submitted for contract: " + emailModel.ContractNumber; } var manager = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectManager); emailModel.NotifiedTo = manager.Firstname + " " + manager.Lastname; var submittedByProject = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectControls); emailModel.SubmittedBy = submittedByProject.Firstname + " " + submittedByProject.Lastname; break; case (int)JobRequestStatus.ProjectManager: var managerRepresentative = model.KeyPersonnel.AccountingRepresentative; if (managerRepresentative != null) { notifyTo = managerRepresentative; } var accountManager = _userService.GetUserByUserGuid(notifyTo); if (accountManager != null) { //emailTo = projectManager.WorkEmail; recipientName = accountManager.DisplayName; emailModel.ReceipentName = recipientName; subject = "A new Job Request Form has been submitted for contract: " + emailModel.ContractNumber; } var submittedByManager = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectManager); emailModel.SubmittedBy = submittedByManager.Firstname + " " + submittedByManager.Lastname; break; case (int)JobRequestStatus.Accounting: var accountUser = _userService.GetUserByUserGuid(notifyTo); if (accountUser != null) { //emailTo = accountUser.WorkEmail; recipientName = accountUser.DisplayName; emailModel.ReceipentName = recipientName; subject = "Job Request has been set to done contract: " + emailModel.ContractNumber; } var submittedByAccount = _userService.GetUserByUserGuid(model.KeyPersonnel.AccountingRepresentative); emailModel.SubmittedBy = submittedByAccount.Firstname + " " + submittedByAccount.Lastname; emailModel.Status = "Done"; break; default: break; } content = EmailHelper.GetContentForJobRequestNotify(template, keyPersonnel, emailModel); _emailSender.SendEmailAsync(emailTo, recipientName, subject, content); }
public static string GetContentForJobRequestNotify(string template, IEnumerable <ContractUserRole> keyPersonnelList, JobRequestEmailModel emailModel) { StringBuilder content = new StringBuilder(template); var keyList = "<ul>"; foreach (var person in keyPersonnelList) { keyList += "<li>" + person.User.DisplayName + " (" + person.UserRole + ")" + "</li>"; } keyList += "</li>"; content.Replace("{RECEIVER_NAME}", emailModel.ReceipentName); content.Replace("{SUBMITTED_NAME}", emailModel.SubmittedBy); content.Replace("{CONTRACT_NUMBER}", emailModel.ContractNumber); content.Replace("{AWARDING_AGENCY}", emailModel.AwardingAgency); content.Replace("{FUNDING_AGENCY}", emailModel.FundingAgency); content.Replace("{TASK_ORDERNUMBER}", emailModel.TaskOrderNumber); content.Replace("{PROJECT_NUMBER}", emailModel.ProjectNumber); content.Replace("{SUBMITTED_BY}", emailModel.SubmittedBy); content.Replace("{STATUS}", emailModel.Status); content.Replace("{KEY_PERSONNELLIST}", keyList); content.Replace("{JOBREQUEST_URL}", emailModel.ClickableUrl); content.Replace("{NOTIFY_TO}", emailModel.NotifiedTo); content.Replace("{NOTIFY_OTHER}", emailModel.NotifyOther); content.Replace("{ADDITIONAL_MESSAGE}", emailModel.AdditionalMessage); content.Replace("{CONTRACT_TITLE}", emailModel.ContractTitle); content.Replace("{CONTRACT_DESCRIPTION}", emailModel.Description); return(content.ToString()); }