def approve_overtime_application_service(approver, overtime_application): """Changes overtime status to Approved and returns all approved overtime applications""" approved_overtime_application = None is_supervisor = get_is_supervisor_in_team(approver) is_hod = get_is_hod_in_department(approver) if is_supervisor: approved_overtime_application = supervisor_approve(overtime_application) if is_hod: approved_overtime_application = hod_approve(overtime_application) if approver.is_hr: approved_overtime_application = hr_approve(overtime_application) if approver.is_cfo: approved_overtime_application = cfo_approve(overtime_application) if approver.is_ceo: approved_overtime_application = ceo_approve(overtime_application) # send_overtime_application_approval_mail(overtime_application) return approved_overtime_application
def reject_overtime_application_service(rejecter, overtime_application): is_supervisor = get_is_supervisor_in_team(rejecter) is_hod = get_is_hod_in_department(rejecter) if is_supervisor: rejected_overtime_application = supervisor_reject(overtime_application) elif is_hod: rejected_overtime_application = hod_reject(overtime_application) elif rejecter.is_hr: rejected_overtime_application = hr_reject(overtime_application) elif rejecter.is_cfo: rejected_overtime_application = cfo_reject(overtime_application) elif rejecter.is_ceo: rejected_overtime_application = ceo_reject(overtime_application) else: rejected_overtime_application = None # send_overtime_application_approval_mail(rejected_overtime_application) return rejected_overtime_application
def get_pending_overtime_applications(approver_user: User) -> dict: """Return a dictionary of pending applications per user role""" hod_pending_applications = OvertimeApplication.objects.none() hr_pending_applications = OvertimeApplication.objects.none() cfo_pending_applications = OvertimeApplication.objects.none() ceo_pending_applications = OvertimeApplication.objects.none() supervisor_pending_applications = OvertimeApplication.objects.none() is_supervisor = get_is_supervisor_in_team(approver_user) is_hod = get_is_hod_in_department(approver_user) if is_hod: hod_department = approver_user.solitonuser.employee.department hod_pending_applications = get_hod_pending_overtime_applications( hod_department) if approver_user.is_hr: hr_pending_applications = get_hr_pending_overtime_applications() if approver_user.is_cfo: cfo_pending_applications = get_cfo_pending_overtime_applications() if approver_user.is_ceo: ceo_pending_applications = get_ceo_pending_overtime_applications() if is_supervisor: supervisor = approver_user.solitonuser.employee supervisor_pending_applications = get_supervisor_pending_overtime_applications( supervisor) pending_applications = { "supervisor_pending_applications": supervisor_pending_applications, "hod_pending_applications": hod_pending_applications, "hr_pending_applications": hr_pending_applications, "cfo_pending_applications": cfo_pending_applications, "ceo_pending_applications": ceo_pending_applications, } return pending_applications
def get_is_overtime_approver(approver_user: User) -> bool: is_supervisor = get_is_supervisor_in_team(approver_user) is_hod = get_is_hod_in_department(approver_user) return is_hod or approver_user.is_hr or approver_user.is_cfo or approver_user.is_ceo or is_supervisor