コード例 #1
0
 public function changeLeaveStatus($req)
 {
     $employee = $this->baseService->getElement('Employee', $this->getCurrentProfileId(), null, true);
     $subordinate = new Employee();
     $subordinates = $subordinate->Find("supervisor = ?", array($employee->id));
     $subordinatesIds = array();
     foreach ($subordinates as $sub) {
         $subordinatesIds[] = $sub->id;
     }
     $employeeLeave = new EmployeeLeave();
     $employeeLeave->Load("id = ?", array($req->id));
     if ($employeeLeave->id != $req->id) {
         return new IceResponse(IceResponse::ERROR, "Leave not found");
     }
     if (!in_array($employeeLeave->employee, $subordinatesIds) && $this->user->user_level != 'Admin') {
         return new IceResponse(IceResponse::ERROR, "This leave does not belong to any of your subordinates");
     }
     $oldLeaveStatus = $employeeLeave->status;
     $employeeLeave->status = $req->status;
     if ($oldLeaveStatus == $req->status) {
         return new IceResponse(IceResponse::SUCCESS, "");
     }
     $ok = $employeeLeave->Save();
     if (!$ok) {
         LogManager::getInstance()->info($employeeLeave->ErrorMsg());
         return new IceResponse(IceResponse::ERROR, "Error occured while saving leave infomation. Please contact admin");
     }
     $employeeLeaveLog = new EmployeeLeaveLog();
     $employeeLeaveLog->employee_leave = $employeeLeave->id;
     $employeeLeaveLog->user_id = $this->baseService->getCurrentUser()->id;
     $employeeLeaveLog->status_from = $oldLeaveStatus;
     $employeeLeaveLog->status_to = $employeeLeave->status;
     $employeeLeaveLog->created = date("Y-m-d H:i:s");
     $employeeLeaveLog->data = isset($req->reason) ? $req->reason : "";
     $ok = $employeeLeaveLog->Save();
     if (!$ok) {
         LogManager::getInstance()->info($employeeLeaveLog->ErrorMsg());
     }
     if (!empty($this->emailSender) && $oldLeaveStatus != $employeeLeave->status) {
         $leavesEmailSender = new LeavesEmailSender($this->emailSender, $this);
         $leavesEmailSender->sendLeaveStatusChangedEmail($employee, $employeeLeave);
     }
     $this->baseService->audit(IceConstants::AUDIT_ACTION, "Leave status changed \\ from:" . $oldLeaveStatus . "\\ to:" . $employeeLeave->status . " \\ id:" . $employeeLeave->id);
     if ($employeeLeave->status != "Pending") {
         $notificationMsg = "Your leave has been {$employeeLeave->status} by " . $employee->first_name . " " . $employee->last_name;
         if (!empty($req->reason)) {
             $notificationMsg .= " (Note:" . $req->reason . ")";
         }
     }
     $this->baseService->notificationManager->addNotification($employeeLeave->employee, $notificationMsg, '{"type":"url","url":"g=modules&n=leaves&m=module_Leaves#tabEmployeeLeaveApproved"}', IceConstants::NOTIFICATION_LEAVE);
     return new IceResponse(IceResponse::SUCCESS, "");
 }
コード例 #2
0
 public function changeLeaveStatus($req)
 {
     $employee = $this->baseService->getElement('Employee', $this->getCurrentEmployeeId());
     $subordinate = new Employee();
     $subordinates = $subordinate->Find("supervisor = ?", array($employee->id));
     $subordinatesIds = array();
     foreach ($subordinates as $sub) {
         $subordinatesIds[] = $sub->id;
     }
     $employeeLeave = new EmployeeLeave();
     $employeeLeave->Load("id = ?", array($req->id));
     if ($employeeLeave->id != $req->id) {
         return new IceResponse(IceResponse::ERROR, "Leave not found");
     }
     if (!in_array($employeeLeave->employee, $subordinatesIds) && $this->user->user_level != 'Admin') {
         return new IceResponse(IceResponse::ERROR, "This leave does not belong to any of your subordinates");
     }
     $employeeLeave->status = $req->status;
     $ok = $employeeLeave->Save();
     if (!$ok) {
         error_log($employeeLeave->ErrorMsg());
     }
     if (!empty($this->emailSender)) {
         $leavesEmailSender = new LeavesEmailSender($this->emailSender, $this);
         $leavesEmailSender->sendLeaveStatusChangedEmail($employee, $employeeLeave);
     }
     return new IceResponse(IceResponse::SUCCESS, "");
 }