public static List<Model.DTO.Appraisal.Appraisal> CreateAppraisalsForUpdateCycle(List<Model.DTO.Core.Employee> participants, List<Model.DTO.Cycle.Stage> stages, Model.DTO.Core.Security.User user) { List<Model.DTO.Appraisal.Appraisal> lst_appraisals = null; if (!Lib.Utility.Common.IsNullOrEmptyList(participants)) { lst_appraisals = new List<Model.DTO.Appraisal.Appraisal>(); foreach (Model.DTO.Core.Employee obj_participant in participants) { Model.DTO.Appraisal.Appraisal obj_appraisal = new Model.DTO.Appraisal.Appraisal() { Stage = new Model.DTO.Master.Stage() { Id = Model.PMSConstants.STAGE_ID_PRE_CYCLE }, Status = new Model.DTO.Master.Status() { Id = Model.PMSConstants.STATUS_ID_NEW }, Employee = obj_participant, Department = Model.Mappers.CoreMapper.MapDepartmentDTOToMasterDepartmentDTO(obj_participant.Department), Locked = true }; obj_appraisal.AddAppraisalSection(new Model.DTO.Appraisal.Section() { SectionId = Model.PMSConstants.SECTION_ID_KPI }); obj_appraisal.AddAppraisalSection(new Model.DTO.Appraisal.Section() { SectionId = Model.PMSConstants.SECTION_ID_CORE_VALUES }); int flag = CheckStageDate(stages[1], stages[2], stages[3]); switch (flag) { case 1: foreach (Model.DTO.Cycle.Stage obj_cycle_stage in stages) { Model.DTO.Appraisal.Stage obj_appraisal_stage = new Model.DTO.Appraisal.Stage() { StageId = obj_cycle_stage.StageId, StartDate = obj_cycle_stage.StartDate, EndDate = obj_cycle_stage.EndDate, SubmissionDeadline = obj_cycle_stage.SubmissionDeadline, Level1ApprovalDeadline = obj_cycle_stage.Level1ApprovalDeadline, Level2ApprovalDeadline = obj_cycle_stage.Level2ApprovalDeadline }; obj_appraisal.AddAppraisalStage(obj_appraisal_stage); } break; case 2: case 3: foreach (Model.DTO.Cycle.Stage obj_cycle_stage in stages.Where(sec=>sec.StageId>eHR.PMS.Model.PMSConstants.STAGE_ID_PRE_CYCLE)) { Model.DTO.Appraisal.Stage obj_appraisal_stage = new Model.DTO.Appraisal.Stage() { StageId = obj_cycle_stage.StageId, StartDate = obj_cycle_stage.StartDate, EndDate = obj_cycle_stage.EndDate, SubmissionDeadline = obj_cycle_stage.SubmissionDeadline, Level1ApprovalDeadline = obj_cycle_stage.Level1ApprovalDeadline, Level2ApprovalDeadline = obj_cycle_stage.Level2ApprovalDeadline }; obj_appraisal.AddAppraisalStage(obj_appraisal_stage); } break; case 4: case 5: case 6: case 7: foreach (Model.DTO.Cycle.Stage obj_cycle_stage in stages.Where(sec => (sec.StageId == eHR.PMS.Model.PMSConstants.STAGE_ID_GOAL_SETTING || sec.Id == eHR.PMS.Model.PMSConstants.STAGE_ID_FINAL_YEAR))) { Model.DTO.Appraisal.Stage obj_appraisal_stage = new Model.DTO.Appraisal.Stage() { StageId = obj_cycle_stage.StageId, StartDate = obj_cycle_stage.StartDate, EndDate = obj_cycle_stage.EndDate, SubmissionDeadline = obj_cycle_stage.SubmissionDeadline, Level1ApprovalDeadline = obj_cycle_stage.Level1ApprovalDeadline, Level2ApprovalDeadline = obj_cycle_stage.Level2ApprovalDeadline }; obj_appraisal.AddAppraisalStage(obj_appraisal_stage); } break; default: break; } if (obj_participant.Level1Approver != null) { obj_appraisal.AddApprover(Model.Mappers.PMSMapper.MapEmployeeDTOToApproverDTO(obj_participant.Level1Approver, 1)); } if (obj_participant.Level2Approver != null) { obj_appraisal.AddApprover(Model.Mappers.PMSMapper.MapEmployeeDTOToApproverDTO(obj_participant.Level2Approver, 2)); } if (obj_participant.SMPEmploeeId != null && obj_participant.SMPEmploeeId > 0) { Model.DTO.Appraisal.Reviewer obj_reviewer = new Model.DTO.Appraisal.Reviewer() { EmployeeId = obj_participant.SMPEmploeeId, Appraisal = obj_appraisal, SMT = true }; obj_appraisal.AddReviewer(obj_reviewer); } Model.DTO.Appraisal.Trail obj_trail = new Model.DTO.Appraisal.Trail() { Appraisal = obj_appraisal, Stage = new Model.DTO.Master.Stage() { Id = PMS.Model.PMSConstants.STAGE_ID_PRE_CYCLE }, Action = new Model.DTO.Master.Action() { Id = PMS.Model.PMSConstants.ACTION_ID_APPRAISAL_CREATED }, ActionTimestamp = DateTime.Now, Actioner = Model.Mappers.CoreMapper.MapUserDTOToEmployeeDTO(user) }; obj_appraisal.AddTrail(obj_trail); lst_appraisals.Add(obj_appraisal); } } return lst_appraisals; }
public static Model.DTO.Appraisal.Trail CreateAppraisalTrail(Model.DTO.Appraisal.Appraisal appraisal, Model.DTO.Core.Employee actioner, Model.DTO.Master.Action action) { Model.DTO.Appraisal.Trail obj_trail = new Model.DTO.Appraisal.Trail() { Appraisal = appraisal, Action = action, Actioner = actioner, ActionTimestamp = DateTime.Now, Stage = appraisal.Stage }; return obj_trail; }
public static List<Model.DTO.Appraisal.Appraisal> CreateAppraisalsForNewCycle(List<Model.DTO.Core.Employee> participants, List<Model.DTO.Cycle.Stage> stages, Model.DTO.Core.Security.User user) { List<Model.DTO.Appraisal.Appraisal> lst_appraisals = null; if (!Lib.Utility.Common.IsNullOrEmptyList(participants)) { lst_appraisals = new List<Model.DTO.Appraisal.Appraisal>(); foreach (Model.DTO.Core.Employee obj_participant in participants) { Model.DTO.Appraisal.Appraisal obj_appraisal = new Model.DTO.Appraisal.Appraisal() { Stage = new Model.DTO.Master.Stage() { Id = Model.PMSConstants.STAGE_ID_PRE_CYCLE }, Status = new Model.DTO.Master.Status() { Id = Model.PMSConstants.STATUS_ID_NEW }, Employee = obj_participant, Department = Model.Mappers.CoreMapper.MapDepartmentDTOToMasterDepartmentDTO(obj_participant.Department), Locked = true }; obj_appraisal.AddAppraisalSection(new Model.DTO.Appraisal.Section() { SectionId = Model.PMSConstants.SECTION_ID_KPI }); obj_appraisal.AddAppraisalSection(new Model.DTO.Appraisal.Section() { SectionId = Model.PMSConstants.SECTION_ID_CORE_VALUES }); foreach (Model.DTO.Cycle.Stage obj_cycle_stage in stages) { Model.DTO.Appraisal.Stage obj_appraisal_stage = new Model.DTO.Appraisal.Stage() { StageId = obj_cycle_stage.StageId, StartDate = obj_cycle_stage.StartDate, EndDate = obj_cycle_stage.EndDate, SubmissionDeadline = obj_cycle_stage.SubmissionDeadline, Level1ApprovalDeadline = obj_cycle_stage.Level1ApprovalDeadline, Level2ApprovalDeadline = obj_cycle_stage.Level2ApprovalDeadline }; obj_appraisal.AddAppraisalStage(obj_appraisal_stage); } if (obj_participant.Level1Approver != null) { obj_appraisal.AddApprover(Model.Mappers.PMSMapper.MapEmployeeDTOToApproverDTO(obj_participant.Level1Approver, 1)); } if (obj_participant.Level2Approver != null) { obj_appraisal.AddApprover(Model.Mappers.PMSMapper.MapEmployeeDTOToApproverDTO(obj_participant.Level2Approver, 2)); } Model.DTO.Appraisal.Trail obj_trail = new Model.DTO.Appraisal.Trail() { Appraisal = obj_appraisal, Stage = new Model.DTO.Master.Stage() { Id = PMS.Model.PMSConstants.STAGE_ID_PRE_CYCLE }, Action = new Model.DTO.Master.Action() { Id = PMS.Model.PMSConstants.ACTION_ID_APPRAISAL_CREATED }, ActionTimestamp = DateTime.Now, Actioner = Model.Mappers.CoreMapper.MapUserDTOToEmployeeDTO(user) }; obj_appraisal.AddTrail(obj_trail); if (obj_participant.SMPEmploeeId != null && obj_participant.SMPEmploeeId > 0) { Model.DTO.Appraisal.Reviewer obj_reviewer = new Model.DTO.Appraisal.Reviewer() { EmployeeId = obj_participant.SMPEmploeeId, Appraisal = obj_appraisal, SMT = true }; obj_appraisal.AddReviewer(obj_reviewer); } lst_appraisals.Add(obj_appraisal); } } return lst_appraisals; }
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; }