private static bool ManageApprovedAppraisal(Model.DTO.Appraisal.Appraisal appraisal, int taskId, Model.DTO.Core.Employee manager, out string message) { bool boo_success = false; message = string.Empty; List<Model.DTO.Core.Task.Task> lst_completed_tasks = new List<Model.DTO.Core.Task.Task>(); List<Model.DTO.Core.Task.Task> lst_new_tasks = new List<Model.DTO.Core.Task.Task>(); List<System.Net.Mail.MailMessage> lst_email_messages; appraisal.AddTrail(CreateAppraisalTrail(appraisal, manager, appraisal.Status.Id == Model.PMSConstants.STATUS_ID_PENDING_LEVEL_1_APPROVAL ? new Model.DTO.Master.Action() { Id = PMS.Model.PMSConstants.ACTION_ID_APPRAISAL_APPROVED_LEVEL_1 } : new Model.DTO.Master.Action() { Id = PMS.Model.PMSConstants.ACTION_ID_APPRAISAL_APPROVED_LEVEL_2 })); if (appraisal.Status.Id == Model.PMSConstants.STATUS_ID_PENDING_LEVEL_1_APPROVAL) { lst_email_messages = GenerateEmailMessageForApprovedAppraisal(appraisal, 1); appraisal.Status = new Model.DTO.Master.Status() { Id = Model.PMSConstants.STATUS_ID_PENDING_LEVEL_2_APPROVAL }; StringBuilder sb_task_name = new StringBuilder("Pending Level 2 Manager Approval For "); sb_task_name.Append(appraisal.Employee.PreferredName); sb_task_name.Append("'s Appraisal."); string str_task_address = null; if (appraisal.Stage.Id == Model.PMSConstants.STAGE_ID_GOAL_SETTING) { str_task_address = "/Stage1Approval/KeyPerformanceIndicators"; } if (appraisal.Stage.Id == Model.PMSConstants.STAGE_ID_PROGRESS_REVIEW) { str_task_address = "/Stage2Approval/KeyPerformanceIndicators"; } lst_new_tasks.Add(CreateNewTaskForAppraisal(appraisal.Id, Model.PMSConstants.STATUS_CORE_ID_OPEN, sb_task_name.ToString(), str_task_address, Model.Mappers.CoreMapper.MapApproverDTOToOwnerDTO(appraisal.GetApproverByLevel(2)))); } else { lst_email_messages = GenerateEmailMessageForApprovedAppraisal(appraisal, 2); appraisal.Status = new Model.DTO.Master.Status() { Id = Model.PMSConstants.STATUS_ID_APPROVED }; } lst_completed_tasks.Add(new Model.DTO.Core.Task.Task() { Id = taskId, Status = new Model.DTO.Core.Master.Status() { Id = Model.PMSConstants.STATUS_CORE_ID_COMPLETED } }); if (Model.PMSModel.UpdateAppraisalAndTask(appraisal, lst_completed_tasks, lst_new_tasks, out message)) { boo_success = true; SendEmailNotification(lst_email_messages); } else { boo_success = false; } return boo_success; }
private static System.Net.Mail.MailMessage GenerateEmailMessageToEmployeeForApprovedAppraisal(Model.DTO.Appraisal.Appraisal appraisal, int approvalLevel) { StringBuilder sb_subject = new StringBuilder("Your appraisal is approved by your level "); sb_subject.Append(approvalLevel); sb_subject.Append(" manager."); System.Net.Mail.MailMessage obj_email_message = new System.Net.Mail.MailMessage() { Subject = sb_subject.ToString(), From = new System.Net.Mail.MailAddress(ConfigurationManager.AppSettings["emailsenderaddress"], ConfigurationManager.AppSettings["emailsendername"]), IsBodyHtml = true }; StringBuilder sb_body = new StringBuilder(); sb_body.Append("<p>Dear "); sb_body.Append(appraisal.Employee.PreferredName); sb_body.Append(", </p>"); if (approvalLevel == 1) { sb_body.Append("<p>Your Level 1 Manager has concurred with your goals.</p>"); } else { sb_body.Append("<p>Your Level 2 Manager has approved your "); sb_body.Append(appraisal.Stage.Name.ToLower()); sb_body.Append(" document and you may view them at <a style='font-style:italic;' href='"); sb_body.Append(ConfigurationManager.AppSettings["pmsweburl"]); sb_body.Append("'>eHR Portal</a>. Your "); sb_body.Append(appraisal.Stage.Name); sb_body.Append(" Phase is now completed.</p>"); } sb_body.Append("<br />"); sb_body.Append("<p><span style='font-style:italic; font-size:small;'>This is a computer generated email. Please do not reply.</span></p>"); obj_email_message.Body = sb_body.ToString(); if (appraisal.Employee.OfficeEmailAddress != null && Lib.Utility.Common.IsValidEmail(appraisal.Employee.OfficeEmailAddress)) obj_email_message.To.Add(appraisal.Employee.OfficeEmailAddress); if (approvalLevel == 2 && appraisal.GetApproverByLevel(1).OfficeEmailAddress!=null) { obj_email_message.CC.Add(appraisal.GetApproverByLevel(1).OfficeEmailAddress); } return obj_email_message; }
private static List<System.Net.Mail.MailMessage> GenerateEmailMessageForApprovedAppraisal(Model.DTO.Appraisal.Appraisal appraisal, int approvalLevel) { Model.DTO.Appraisal.Stage obj_appraisal_current_stage = appraisal.AppraisalStages.Where(rec => rec.StageId == appraisal.Stage.Id).Single(); List<System.Net.Mail.MailMessage> lst_messages = new List<System.Net.Mail.MailMessage>(); System.Net.Mail.MailMessage temp = new System.Net.Mail.MailMessage(); if (approvalLevel == 1) { temp = GenerateEmailMessageToEmployeeForApprovedAppraisal(appraisal, approvalLevel); if(temp!=null) lst_messages.Add(temp); StringBuilder sb_subject = new StringBuilder("Approval required for "); sb_subject.Append(appraisal.Employee.PreferredName); sb_subject.Append("'s performance appraisal."); System.Net.Mail.MailMessage obj_email_message = new System.Net.Mail.MailMessage() { Subject = sb_subject.ToString(), From = new System.Net.Mail.MailAddress(ConfigurationManager.AppSettings["emailsenderaddress"], ConfigurationManager.AppSettings["emailsendername"]), IsBodyHtml = true }; StringBuilder sb_body = new StringBuilder(); sb_body.Append("<p>Dear "); sb_body.Append(appraisal.GetApproverByLevel(2).PreferredName); sb_body.Append(", </p>"); sb_body.Append("<p>"); sb_body.Append(appraisal.GetApproverByLevel(1).PreferredName); sb_body.Append(", has reviewed and approved the "); sb_body.Append(appraisal.Stage.Name.ToLower()); sb_body.Append(" document for "); sb_body.Append(appraisal.Employee.PreferredName); sb_body.Append(" and it is now ready for your approval via <a style='font-style:italic;' href='"); sb_body.Append(ConfigurationManager.AppSettings["pmsweburl"]); sb_body.Append("'>eHR Portal</a>.</p>"); sb_body.Append("<p>Please note that the submission deadline for Level 2 Manager's approval is <u>"); sb_body.Append(Convert.ToDateTime(obj_appraisal_current_stage.Level2ApprovalDeadline).ToString("dd/MM/yyyy")); sb_body.Append("</u>. Upon approval, the "); sb_body.Append(appraisal.Stage.Name); sb_body.Append(" Phase will be completed and will be submitted to HR.</p>"); sb_body.Append("<br />"); sb_body.Append("<p><span style='font-style:italic; font-size:small;'>This is a computer generated email. Please do not reply.</span></p>"); obj_email_message.Body = sb_body.ToString(); if (appraisal.GetApproverByLevel(2).OfficeEmailAddress != null && Lib.Utility.Common.IsValidEmail(appraisal.GetApproverByLevel(2).OfficeEmailAddress)) obj_email_message.To.Add(appraisal.GetApproverByLevel(2).OfficeEmailAddress); lst_messages.Add(obj_email_message); } if (approvalLevel == 2) { temp = GenerateEmailMessageToEmployeeForApprovedAppraisal(appraisal, approvalLevel); if (temp != null) lst_messages.Add(temp); } return lst_messages; }
private static System.Net.Mail.MailMessage GenerateEmailMessageForRejectedAppraisal(Model.DTO.Appraisal.Appraisal appraisal, int approvalLevel) { StringBuilder sb_subject = new StringBuilder("Your appraisal is rejected by your level "); sb_subject.Append(approvalLevel); sb_subject.Append(" manager."); System.Net.Mail.MailMessage obj_email_message = new System.Net.Mail.MailMessage() { Subject = sb_subject.ToString(), From = new System.Net.Mail.MailAddress(ConfigurationManager.AppSettings["emailsenderaddress"], ConfigurationManager.AppSettings["emailsendername"]), IsBodyHtml = true }; StringBuilder sb_body = new StringBuilder(); sb_body.Append("<p>Dear "); sb_body.Append(appraisal.Employee.PreferredName); sb_body.Append(", </p>"); sb_body.Append("<p>Your Level "); sb_body.Append(approvalLevel); sb_body.Append(" Manager has reviewed your "); sb_body.Append(appraisal.Stage.Name.ToLower()); sb_body.Append(" document and has returned to you for your further inputs via the <a style='font-style:italic;' href='"); sb_body.Append(ConfigurationManager.AppSettings["pmsweburl"]); sb_body.Append("'>eHR Portal</a>.</p>"); if (approvalLevel == 1) { Model.DTO.Appraisal.Stage obj_appraisal_current_stage = appraisal.AppraisalStages.Where(rec => rec.StageId == appraisal.Stage.Id).Single(); sb_body.Append("<p>Please note that the submission deadline for Employees' KPIs for Managers' review is <u>"); sb_body.Append(Convert.ToDateTime(obj_appraisal_current_stage.SubmissionDeadline).ToString("dd/MM/yyyy")); sb_body.Append("</u>.</p>"); } if (approvalLevel == 2) { sb_body.Append("<p>Please submit your revised "); sb_body.Append(appraisal.Stage.Name.ToLower()); sb_body.Append(" document for your Level 1 Manager's review urgently.</p>"); } sb_body.Append("<br />"); sb_body.Append("<p><span style='font-style:italic; font-size:small;'>This is a computer generated email. Please do not reply.</span></p>"); obj_email_message.Body = sb_body.ToString(); obj_email_message.To.Add(appraisal.Employee.OfficeEmailAddress); if (approvalLevel == 2) { obj_email_message.CC.Add(appraisal.GetApproverByLevel(approvalLevel).OfficeEmailAddress); } return obj_email_message; }
private static System.Net.Mail.MailMessage GenerateEmailMessageForAppraisalSubmission(Model.DTO.Appraisal.Appraisal appraisal) { Model.DTO.Appraisal.Stage obj_appraisal_current_stage = appraisal.AppraisalStages.Where(rec => rec.StageId == appraisal.Stage.Id).Single(); StringBuilder sb_subject = new StringBuilder("Approval required for "); sb_subject.Append(appraisal.Employee.PreferredName); sb_subject.Append("'s performance appraisal."); System.Net.Mail.MailMessage obj_email_message = new System.Net.Mail.MailMessage() { Subject = sb_subject.ToString(), From = new System.Net.Mail.MailAddress(ConfigurationManager.AppSettings["emailsenderaddress"], ConfigurationManager.AppSettings["emailsendername"]), IsBodyHtml = true }; StringBuilder sb_body = new StringBuilder(); sb_body.Append("<p>Dear "); sb_body.Append(appraisal.GetApproverByLevel(1).PreferredName); sb_body.Append(", </p>"); sb_body.Append("<p>The "); sb_body.Append(appraisal.Stage.Name.ToLower()); sb_body.Append(" document of "); sb_body.Append(appraisal.Employee.PreferredName); sb_body.Append(" is now ready for your review and approval via the <a style='font-style:italic;' href='"); sb_body.Append(ConfigurationManager.AppSettings["pmsweburl"]); sb_body.Append("'>eHR Portal</a>.</p>"); sb_body.Append("<p>Please note that the submission date for Level 1 Managers' approval is <u>"); sb_body.Append(Convert.ToDateTime(obj_appraisal_current_stage.Level1ApprovalDeadline).ToString("dd/MM/yyyy")); sb_body.Append("</u>.</p><br />"); sb_body.Append("<p><span style='font-style:italic; font-size:small;'>This is a computer generated email. Please do not reply.</span></p>"); obj_email_message.Body = sb_body.ToString(); obj_email_message.To.Add(appraisal.GetApproverByLevel(1).OfficeEmailAddress); return obj_email_message; }