messageModel = new MessageModel(); $this->userMessageModel = new UserMessageModel(); $this->myLogger = \Config\Services::mylogger(); $this->clientModel = new ClientModel(); } public function dashboard() { $data = []; $results = $this->clientModel->select('clients.id as client_id, clients.client_name, clients.short_name, client_branch.id as client_branch_id, client_branch.branch_name, client_branch.branch_code, employees.id as employee_id, employees.name as employee_name, employees.relationship, employees.emp_code, employees.emp_status, auth_history.user_type') ->join('client_branch','clients.id = client_branch.client_id', 'left') ->join('employees','client_branch.id = employees.client_branch_id', 'left') ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') ->findAll(); $groupedData = []; $employeeId = ''; foreach ($results as $row) { $clientId = $row['client_id']; $clientName = $row['client_name']; $shortName = $row['short_name']; $branchId = $row['client_branch_id']; $branchName = $row['branch_name']; $branchCode = $row['branch_code']; if($employeeId != $row['employee_id']){ $employeeId = $row['employee_id']; }else{ $employeeId = null; } $employeeName = $row['employee_name'] ; $employeeRelationship = $row['relationship'] ; $employeeEmpCode = $row['emp_code'] ; $employeeEmpStatus = $row['emp_status']; $employeeUserType = $row['user_type']; // Initialize the client entry if it doesn't exist if (!isset($groupedData[$clientId])) { $groupedData[$clientId] = [ 'client_id' => $clientId, 'client_name' => $clientName, 'short_name' => $shortName, 'branches' => [] ]; } // Initialize the branch entry if it doesn't exist if (!isset($groupedData[$clientId]['branches'][$branchId])) { $groupedData[$clientId]['branches'][$branchId] = [ 'client_branch_id' => $branchId, 'branch_name' => $branchName, 'branch_code' => $branchCode, 'emp_login' => 0, 'emp_enroll' => 0, 'employees' => [] ]; } if ($employeeId !== null && $employeeRelationship == 'Self') { // Append employee info to the branch's employees list $groupedData[$clientId]['branches'][$branchId]['employees'][] = [ 'employee_id' => $employeeId, 'employee_name' => $employeeName, 'relationship' => $employeeRelationship, 'emp_code' => $employeeEmpCode, 'emp_status' => $employeeEmpStatus, 'user_type' => $employeeUserType ]; if (!empty($employeeUserType)) { $groupedData[$clientId]['branches'][$branchId]['emp_login']++; } // Increment emp_enroll if emp_status is not 'draft' if ($employeeEmpStatus !== 'draft') { $groupedData[$clientId]['branches'][$branchId]['emp_enroll']++; } } $employeeId = $row['employee_id']; } // Re-index the arrays to match the expected structure foreach ($groupedData as &$client) { $client['branches'] = array_values($client['branches']); } // echo "
";
        $data['client_branch_emp_list'] = $groupedData;
        // print_r($data);die;

        echo view('layout/header');
        echo view('DashBoard', $data);
        echo view('layout/footer');
    }

    public function getDashboardNotifications()
    {
        // Pull notifications for the dashboard, especially for file upload cases.
        $userId = get_session_userid();
        $roleId = 5;
        $teamId = 1;
    
        if ($userId != null && $roleId != null && $teamId != null) {
            $messages = $this->messageModel->getMessagesForUser($userId, $roleId, $teamId);
            return $this->respond(['status' => true, 'code' => 200, 'message' => $messages], 200);
        } else {
            $this->myLogger->logme('error', 'The session is not set correctly. USER_ID : {user_id},  ROLE_ID : {role_id},  TEAM_ID : {team_id}', ['user_id' => $userId, 'role_id' => $roleId, 'team_id' => $teamId]);
            return $this->respond(['status' => false, 'code' => 404, 'message' => 'No data found'], 200);
        }
    }
    

    public function acknowledgeMessage($messageId)
    {
        $userId = get_session_userid();

        $this->userMessageModel->markAsRead($userId, $messageId);

        return $this->respond(['status' => 'success']);
    }


}