152 lines
5.9 KiB
PHP
152 lines
5.9 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use CodeIgniter\HTTP\IncomingRequest;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
|
|
use App\Models\MessageModel;
|
|
use App\Models\UserMessageModel;
|
|
use App\Models\ClientModel;
|
|
|
|
class DashboardController extends AdminController
|
|
{
|
|
|
|
use ResponseTrait;
|
|
protected $messageModel;
|
|
protected $clientModel;
|
|
protected $userMessageModel;
|
|
protected $myLogger;
|
|
|
|
public function __construct()
|
|
{
|
|
set_session_context('Dashboard');
|
|
$this->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 "<pre>";
|
|
$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']);
|
|
}
|
|
|
|
|
|
}
|