private static bool ManageRejectedAppraisal(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 = new List<System.Net.Mail.MailMessage>(); lst_email_messages.Add(GenerateEmailMessageForRejectedAppraisal(appraisal, appraisal.Status.Id == Model.PMSConstants.STATUS_ID_PENDING_LEVEL_1_APPROVAL ? 1 : 2)); Model.DTO.Appraisal.Trail obj_trail = new Model.DTO.Appraisal.Trail() { Appraisal = appraisal, Stage = appraisal.Stage, ActionTimestamp = DateTime.Now, Actioner = manager, Action = appraisal.Status.Id == Model.PMSConstants.STATUS_ID_PENDING_LEVEL_1_APPROVAL ? new Model.DTO.Master.Action() { Id = PMS.Model.PMSConstants.ACTION_ID_APPRAISAL_REJECTED_LEVEL_1 } : new Model.DTO.Master.Action() { Id = PMS.Model.PMSConstants.ACTION_ID_APPRAISAL_REJECTED_LEVEL_2 } }; appraisal.AddTrail(obj_trail); appraisal.Status = new Model.DTO.Master.Status() { Id = Model.PMSConstants.STATUS_ID_NEW }; string str_task_address = null; if (appraisal.Stage.Id == Model.PMSConstants.STAGE_ID_GOAL_SETTING) { str_task_address = "/Stage1/KeyPerformanceIndicators"; } if (appraisal.Stage.Id == Model.PMSConstants.STAGE_ID_PROGRESS_REVIEW) { str_task_address = "/Stage2/KeyPerformanceIndicators"; } lst_new_tasks.Add(CreateNewTaskForAppraisal(appraisal.Id, Model.PMSConstants.STATUS_CORE_ID_OPEN, "Re-submission of performance appraisal.", str_task_address, Model.Mappers.CoreMapper.MapEmployeeDTOToOwnerDTO(appraisal.Employee))); 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 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; }