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());
        }
示例#2
0
        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);
        }
示例#3
0
        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());
        }