Merge branch 'dev' of bitbucket.org:jubilian/nhance-enrollment into dev
This commit is contained in:
commit
cff51d3856
@ -19,6 +19,7 @@ use App\Filters\Cors;
|
||||
use App\Filters\GlobalPostFileUploadGuard;
|
||||
use App\Filters\SecurityInputFilter;
|
||||
use App\Filters\AclFilter;
|
||||
use App\Filters\RateLimitFilter;
|
||||
|
||||
|
||||
|
||||
@ -47,6 +48,7 @@ class Filters extends BaseConfig
|
||||
'GlobalPostFileUploadGuard' => GlobalPostFileUploadGuard::class,
|
||||
'SecurityInputFilter' => SecurityInputFilter::class,
|
||||
'AclFilter' => AclFilter::class,
|
||||
'ratelimit' => RateLimitFilter::class,
|
||||
|
||||
];
|
||||
|
||||
@ -60,9 +62,9 @@ class Filters extends BaseConfig
|
||||
public array $globals = [
|
||||
'before' => [
|
||||
'HttpRequestLog' => ['except' => 'cli/*'],
|
||||
'AclFilter' => ['except' => ['login', 'logout', 'auth/*', 'oauth2callback','claim-form-download', 'claims-feedback-form', 'autobookstackLogin','/employeeRest/*','processjob']],
|
||||
'AclFilter' => ['except' => ['login', 'logout', 'auth/*', 'oauth2callback','claim-form-download', 'claims-feedback-form', 'autobookstackLogin','/employeeRest/*','processjob', 'getPreEmployeePolicyCount']],
|
||||
'Cors',
|
||||
'SecurityInputFilter' => ['except' => ['notification/create','test_mail'] ],
|
||||
'SecurityInputFilter' => ['except' => ['/client/notification/create','test_mail'] ],
|
||||
'GlobalPostFileUploadGuard',
|
||||
// 'invalidchars',
|
||||
],
|
||||
|
||||
@ -442,7 +442,7 @@ $routes->cli('cli/check_env', 'MasterController::checkEnv');
|
||||
|
||||
|
||||
|
||||
$routes->group("/api", ["filter" => "authJWT"], function ($routes) {
|
||||
$routes->group("/api", ["filter" => [ 'ratelimit' , 'authJWT' ] ], function ($routes) {
|
||||
$routes->post("logined", "RestAuthenticationController::logined");
|
||||
$routes->post("getId", "RestAuthenticationController::getUserIdFromToken");
|
||||
});
|
||||
@ -454,7 +454,7 @@ $routes->group("/api", ["filter" => "authJWT"], function ($routes) {
|
||||
// $routes->post("employeeRest/createOrUpdateEmployeePolicySiAmount", "EmployeeRestController::createOrUpdateEmployeePolicySiAmount");
|
||||
// $routes->post("employeeRest/calculatePremium", "EmployeeRestController::calculatePremium");
|
||||
// $routes->post("updateMpin", "RestAuthenticationController::updateMpin");
|
||||
$routes->group("employeeRest", ['filter' => ['appSignature' , 'authJWT'] ], function ($routes) {
|
||||
$routes->group("employeeRest", ['filter' => [ 'GlobalPostFileUploadGuard', 'ratelimit' , 'appSignature' , 'authJWT' ] ], function ($routes) {
|
||||
|
||||
$routes->post('logout', 'RestAuthenticationController::logout');
|
||||
|
||||
@ -503,10 +503,11 @@ $routes->group("employeeRest", ['filter' => ['appSignature' , 'authJWT'] ], func
|
||||
$routes->post("hrFileUpload", "EmployeeRestController::hrFileUpload");
|
||||
|
||||
$routes->get("copyActiveEmployeeAndDependentDetails", "EmployeeRestController::copyActiveEmployeeAndDependentDetails");
|
||||
$routes->get("getExcelFileErrors/(:any)", "EmployeeController::getExcelFileErrors/$1");
|
||||
|
||||
});
|
||||
|
||||
$routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($routes) {
|
||||
$routes->group("employeeRest", ['filter' => ['ratelimit' , 'appSignature'] ], function ($routes) {
|
||||
|
||||
//Employee login api's
|
||||
$routes->post("verifyEmployeeNumber", "RestAuthenticationController::verifyEmployeeWithMobileNumber");
|
||||
@ -539,7 +540,7 @@ $routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($route
|
||||
|
||||
});
|
||||
|
||||
$routes->post("getPreEmployeePolicyCount","EmployeeRestController::getPreEmployeePolicyCount", ['filter' => ['appSignature']]);
|
||||
$routes->post("getPreEmployeePolicyCount","EmployeeRestController::getPreEmployeePolicyCount", ['filter' => ['ratelimit','appSignature']]);
|
||||
|
||||
$routes->get("getEmployeeActiveOrInactivePolicy", "EmployeeRestController::getEmployeeActiveOrInactivePolicy");
|
||||
$routes->get("sendPushNotification", "EmployeeRestController::sendPushNotification");
|
||||
|
||||
@ -180,7 +180,14 @@ class EmployeeController extends AdminController
|
||||
|
||||
//handles employee & dependent bulk upload with events like inception,addition,deletion, correction and SI enhancements
|
||||
public function employeesUplodWithEvents($post_data = [])
|
||||
{
|
||||
{
|
||||
if(empty($post_data)){
|
||||
$post_data = $this->request->getPost();
|
||||
$post_data = array_merge($post_data, $this->request->getFiles());
|
||||
$is_post_request = true;
|
||||
}else{
|
||||
$is_post_request = false;
|
||||
}
|
||||
|
||||
// $empDataServiceController = new EmpDataServiceController();
|
||||
// !dd($empDataServiceController->importInceptionUpdateTPAandUHID(['file_id' => 79]));
|
||||
@ -336,7 +343,7 @@ class EmployeeController extends AdminController
|
||||
$avatar = isset($post_data['emplist']) ? $post_data['emplist'] : $this->request->getFile('emplist');
|
||||
if (!$avatar) {
|
||||
$this->myLogger->logme("error", 'File not found');
|
||||
if (!empty($post_data)) {
|
||||
if (!$is_post_request) {
|
||||
return ['status' => false, 'message' => 'File not found'];
|
||||
} else {
|
||||
return $this->respond(['dataStatus' => false, 'code' => 400, 'message' => 'File not found'], 400);
|
||||
@ -352,7 +359,7 @@ class EmployeeController extends AdminController
|
||||
$this->myLogger->logme("error", 'File move successful');
|
||||
} else {
|
||||
$this->myLogger->logme("error", 'File move failed');
|
||||
if (!empty($post_data)) {
|
||||
if (!$is_post_request) {
|
||||
return ['status' => false, 'message' => 'File move failed'];
|
||||
} else {
|
||||
return $this->respond(['dataStatus' => false, 'code' => 500, 'message' => 'File move failed'], 500);
|
||||
@ -360,7 +367,7 @@ class EmployeeController extends AdminController
|
||||
}
|
||||
} else {
|
||||
$this->myLogger->logme("error", 'Upload failed Invalid file');
|
||||
if (!empty($post_data)) {
|
||||
if (!$is_post_request) {
|
||||
return ['status' => false, 'message' => 'Invalid file'];
|
||||
} else {
|
||||
return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'Invalid file'], 404);
|
||||
@ -370,12 +377,21 @@ class EmployeeController extends AdminController
|
||||
//process post variable entry in file table
|
||||
$loggedInUserID = $post_data['created_by'] ?? get_session_userid();
|
||||
|
||||
$client_id = isset($post_data['client_id']) ? $post_data['client_id'] : $this->request->getPost('client_id');
|
||||
$policy_id = isset($post_data['policy_id']) ? $post_data['policy_id'] : $this->request->getPost('policy_id');
|
||||
$branch_id = isset($post_data['client_branch_id']) ? $post_data['client_branch_id'] : $this->request->getPost('branch_id');
|
||||
$action = isset($post_data['file_action']) ? $post_data['file_action'] : $this->request->getPost('upload-action-type');
|
||||
$enrollment_open_date = isset($post_data['enrollment_open_date']) ? $post_data['enrollment_open_date'] : $this->request->getPost('enrollment_open_date') ?? null;
|
||||
$enrollment_close_date = isset($post_data['enrollment_close_date']) ? $post_data['enrollment_close_date'] : $this->request->getPost('enrollment_close_date') ?? null;
|
||||
// $client_id = isset($post_data['client_id']) ? $post_data['client_id'] : $this->request->getPost('client_id');
|
||||
// $policy_id = isset($post_data['policy_id']) ? $post_data['policy_id'] : $this->request->getPost('policy_id');
|
||||
// $branch_id = isset($post_data['client_branch_id']) ? $post_data['client_branch_id'] : $this->request->getPost('branch_id');
|
||||
// $action = isset($post_data['file_action']) ? $post_data['file_action'] : $this->request->getPost('upload-action-type');
|
||||
// $enrollment_open_date = isset($post_data['enrollment_open_date']) ? $post_data['enrollment_open_date'] : $this->request->getPost('enrollment_open_date') ?? null;
|
||||
// $enrollment_close_date = isset($post_data['enrollment_close_date']) ? $post_data['enrollment_close_date'] : $this->request->getPost('enrollment_close_date') ?? null;
|
||||
// $status = 'inprogress';
|
||||
// $hr_id = $post_data['created_by'] ?? null;
|
||||
|
||||
$client_id = $post_data['client_id'] ?? null;
|
||||
$policy_id = $post_data['policy_id'] ?? null;
|
||||
$branch_id = $post_data['client_branch_id'] ?? null;
|
||||
$action = "enrollment";
|
||||
$enrollment_open_date = $post_data['enrollment_open_date'] ?? null;
|
||||
$enrollment_close_date = $post_data['enrollment_close_date'] ?? null;
|
||||
$status = 'inprogress';
|
||||
$hr_id = $post_data['created_by'] ?? null;
|
||||
|
||||
@ -393,8 +409,8 @@ class EmployeeController extends AdminController
|
||||
$this->myLogger->logme("error", '{file_id} is less than 1MB, validating on the fly', ['file_id' => $file_id]);
|
||||
//endof validation process
|
||||
if (isset($result['error_summary']) && count($result['error_summary'])) {
|
||||
if(!empty($post_data)){
|
||||
return ['status' => true, 'message' => 'file rejected with errors', 'file_id' => $file_id];
|
||||
if(!$is_post_request){
|
||||
return ['status' => false, 'message' => 'file rejected with errors', 'file_id' => $file_id];
|
||||
}else{
|
||||
return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'file rejected with errors'], 200);
|
||||
}
|
||||
@ -406,7 +422,7 @@ class EmployeeController extends AdminController
|
||||
$this->myLogger->logme("error", '{file_id} is greather than 1MB, validating with job queue', ['file_id' => $file_id]);
|
||||
}
|
||||
|
||||
if (!empty($post_data)) {
|
||||
if (!$is_post_request) {
|
||||
return ['status' => true, 'message' => 'File upload successs, Data validation is in-progress', 'file_id' => $file_id];
|
||||
} else {
|
||||
return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => 'file upload success'], 200);
|
||||
@ -495,13 +511,39 @@ class EmployeeController extends AdminController
|
||||
|
||||
|
||||
// dd($data['fileList']);die();
|
||||
if ($this->request->getMethod() == "get") {
|
||||
if ($_SERVER['REQUEST_METHOD'] == "GET") {
|
||||
$this->loadLayout('import_export', $data);
|
||||
}
|
||||
}
|
||||
|
||||
public function getExcelFileErrors($file_id, $retun_type = null)
|
||||
{
|
||||
{
|
||||
|
||||
$file_data = $this->fileModel->where('id', $file_id)->first();
|
||||
$error = json_decode($file_data['reason'] ?? '{}', true);
|
||||
if(!empty($error) && $retun_type == 'api' && $file_data['status'] == 'failed'){
|
||||
$send = isset($error['error_summary'][5]) || isset($error['error_summary'][6]) ? true : false;
|
||||
if($send){
|
||||
|
||||
$string = $error['error_data'] ?? 'System error';
|
||||
|
||||
$errorMap = [
|
||||
"Column order conflict" => "Invalid file format. Please use the sample file.",
|
||||
];
|
||||
|
||||
$message = $string; // Default to the original error
|
||||
|
||||
foreach ($errorMap as $keyword => $friendlyMessage) {
|
||||
if (strpos($string, $keyword) !== false) {
|
||||
$message = $friendlyMessage;
|
||||
break; // Stop looking once we find a match
|
||||
}
|
||||
}
|
||||
|
||||
return $this->respond(['status' => false, 'code' => 404, 'message' => $message, 'data' => []], 200);
|
||||
}
|
||||
}
|
||||
|
||||
// $file_id = $this->request->uri->getSegment(3);
|
||||
$empServiceController = new EmployeeServiceController();
|
||||
|
||||
|
||||
@ -141,7 +141,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success','code' => 200,'data' => $result, 'AccountManagerDetails'=> isset($AccountManagerDetails[0]) ? $AccountManagerDetails[0] : null ],200);
|
||||
} else {
|
||||
$result = "No Match's";
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
||||
@ -162,7 +162,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
||||
} else {
|
||||
$result = "No Match's";
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
@ -190,7 +190,7 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => []],404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => []],200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
||||
@ -220,7 +220,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
|
||||
} else {
|
||||
$result = "No Matches";
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 200);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@ -584,7 +584,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200);
|
||||
|
||||
}else{
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 200);
|
||||
}
|
||||
|
||||
|
||||
@ -615,7 +615,7 @@ class EmployeeRestController extends AdminController
|
||||
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id, $requestData[0]->emp_code);
|
||||
}
|
||||
|
||||
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
|
||||
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 200); }
|
||||
|
||||
foreach ($requestData as $key => $value)
|
||||
{
|
||||
@ -687,12 +687,12 @@ class EmployeeRestController extends AdminController
|
||||
public function getEmployeeAndDependenceByClientId()
|
||||
{
|
||||
try {
|
||||
$empData = $this->employeePolicyModel->getEmployeePolicy( client_id:$this->request->getGet('client_id'),policy_id: $this->request->getGet('client_policy_id'),status:0,branch_id:$this->request->getGet('client_branch_id'));
|
||||
$empData = $this->employeePolicyModel->getEmployeePolicy( client_id:$this->request->getGet('client_id'),policy_id: $this->request->getGet('client_policy_id'),status:0,branch_id:$this->request->getGet('client_branch_id'), status_type: 'hr');
|
||||
|
||||
if ($empData) {
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $empData], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
|
||||
|
||||
@ -805,7 +805,7 @@ class EmployeeRestController extends AdminController
|
||||
if ($ClientPolicyData) {
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
|
||||
|
||||
@ -826,9 +826,16 @@ class EmployeeRestController extends AdminController
|
||||
'enrollment_open_date' => $this->request->getPost('enrollment_open_date'),
|
||||
'enrollment_close_date' => $this->request->getPost('enrollment_close_date'),
|
||||
'file_action' => "enrollment",
|
||||
'created_by' => $this->request->getPost('created_by'),
|
||||
'created_by' => $this->request->getPost('created_by') ?? null,
|
||||
'emplist' => $this->request->getFile('file')
|
||||
];
|
||||
|
||||
if (is_string($post_data['client_id']) && preg_match('/^[a-f0-9]{32}$/i', $post_data['client_id'])) {
|
||||
$client_data = $this->clientModel->where('MD5(id)', $post_data['client_id'])->first();
|
||||
$post_data['client_id'] = $client_data['id'];
|
||||
}
|
||||
|
||||
|
||||
// print_r($post_data); die;
|
||||
|
||||
if(empty($post_data['client_id'])){
|
||||
@ -839,14 +846,16 @@ class EmployeeRestController extends AdminController
|
||||
$responce = $employeeController->employeesUplodWithEvents($post_data);
|
||||
// print_r($responce); die;
|
||||
|
||||
if($responce['status']){
|
||||
$file_data = $this->getDataFromFilesTable(['file_id' => $responce['file_id']]);
|
||||
$responce['data'] = $file_data;
|
||||
return $this->respond($responce, 200);
|
||||
}else{
|
||||
$responce['data'] = [];
|
||||
return $this->respond($responce, 200);
|
||||
}
|
||||
return $this->respond($responce, 200);
|
||||
|
||||
// if(!$responce['status']){
|
||||
// $file_data = $this->getDataFromFilesTable(['file_id' => $responce['file_id']]);
|
||||
// $responce['data'] = $file_data;
|
||||
// return $this->respond($responce, 200);
|
||||
// }else{
|
||||
// $responce['data'] = [];
|
||||
// return $this->respond($responce, 200);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@ -864,6 +873,11 @@ class EmployeeRestController extends AdminController
|
||||
$client_branch_id = $this->request->getPost('client_branch_id');
|
||||
$policy_id = $this->request->getPost('policy_id');
|
||||
|
||||
if (is_string($client_id) && preg_match('/^[a-f0-9]{32}$/i', $client_id)) {
|
||||
$client_data = $this->clientModel->where('MD5(id)', $client_id)->first();
|
||||
$client_id = $client_data['id'];
|
||||
}
|
||||
|
||||
$client_data = $this->clientModel->where('id', $client_id)->first();
|
||||
$notification = $this->notificationModel->where('client_id',$client_id)->where('template_name','member_welcome_mail')->first();
|
||||
|
||||
@ -1197,7 +1211,7 @@ class EmployeeRestController extends AdminController
|
||||
$this->fileModel->where('id', $file_id)->set(['status' => 'success','reason' => '','error_data' => ''])->update();
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'message' => "Success" ], 200);
|
||||
}else{
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!" ], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!" ], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
$this->myLogger->logme("error", ($th->getMessage().' --- '.$th->getLine() . '----' . $th->getTraceAsString()));
|
||||
@ -1227,7 +1241,7 @@ class EmployeeRestController extends AdminController
|
||||
files.policy_id,
|
||||
cp.policy_no,
|
||||
files.file_name,
|
||||
files.action,
|
||||
files.action as file_action,
|
||||
files.created_at,
|
||||
files.created_by,
|
||||
files.updated_at,
|
||||
@ -1261,7 +1275,11 @@ class EmployeeRestController extends AdminController
|
||||
}
|
||||
|
||||
if (isset($search_data['client_id']) && !empty($search_data['client_id'])) {
|
||||
$builder->where("files.client_id", $search_data['client_id']);
|
||||
if (is_string($search_data['client_id']) && preg_match('/^[a-f0-9]{32}$/i', $search_data['client_id'])) {
|
||||
$builder->where("MD5(files.client_id)", $search_data['client_id']);
|
||||
} else {
|
||||
$builder->where("files.client_id", $search_data['client_id']);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($search_data['file_id']) && !empty($search_data['file_id'])) {
|
||||
@ -1279,6 +1297,11 @@ class EmployeeRestController extends AdminController
|
||||
return [];
|
||||
}
|
||||
|
||||
public function getHrFileUploadErrorDetails($file_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------
|
||||
public function getAgeRange($terms,$familyFloatesValue)
|
||||
@ -2145,10 +2168,10 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
// return $restAuthController->callThirdPartyGETAPI($queryParams, 'getClientDetails');
|
||||
// } else {
|
||||
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
// }
|
||||
// } else {
|
||||
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
// }
|
||||
// } catch (\Exception $e) {
|
||||
// return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
||||
@ -2190,7 +2213,7 @@ class EmployeeRestController extends AdminController
|
||||
], 200);
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
} elseif (!empty($post_client_id)) {
|
||||
|
||||
@ -2204,7 +2227,7 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
|
||||
} catch (\Exception $e) {
|
||||
@ -3072,7 +3095,7 @@ class EmployeeRestController extends AdminController
|
||||
return $employee_data_group_by_family;
|
||||
}else{
|
||||
// dd ($employee_data_group_by_family);
|
||||
return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 404),'data' => [$employee_data_group_by_family] ], 200);
|
||||
return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 200),'data' => [$employee_data_group_by_family] ], 200);
|
||||
}
|
||||
|
||||
}
|
||||
@ -3098,7 +3121,7 @@ class EmployeeRestController extends AdminController
|
||||
}
|
||||
|
||||
if(count($policyId) == 0){
|
||||
return $this->respond(['status' => 'failed','code' => (count($policyId) ? 200 : 404),'data' => [] ], 200);
|
||||
return $this->respond(['status' => 'failed','code' => (count($policyId) ? 200 : 200),'data' => [] ], 200);
|
||||
}
|
||||
|
||||
|
||||
@ -3146,9 +3169,9 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
if($result)
|
||||
{
|
||||
return $this->respond(['status' => 'success','code' => (count($result) ? 200 : 404),'data' => $result ], 200);
|
||||
return $this->respond(['status' => 'success','code' => (count($result) ? 200 : 200),'data' => $result ], 200);
|
||||
}else{
|
||||
return $this->respond(['status' => 'failed','code' => (count($result) ? 200 : 404),'data' => [] ], 200);
|
||||
return $this->respond(['status' => 'failed','code' => (count($result) ? 200 : 200),'data' => [] ], 200);
|
||||
}
|
||||
|
||||
}
|
||||
@ -3549,7 +3572,7 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
||||
@ -3573,7 +3596,7 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],404);
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
||||
@ -3634,7 +3657,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'failed', 'code' => 400, 'message' => 'Firebase Token is required'], 400);
|
||||
}
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'Employee not found'], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'Employee not found'], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
log_message('error', 'An error occurred: ' . $th->getMessage());
|
||||
@ -4222,13 +4245,13 @@ class EmployeeRestController extends AdminController
|
||||
$file_id = $this->request->getGet('id') ?? $id;
|
||||
|
||||
// Find record
|
||||
$record = $this->hrFileUploadModel->find($file_id);
|
||||
$record = $this->fileModel->where('id', $file_id)->first();
|
||||
|
||||
if (!$record) {
|
||||
return $this->failNotFound("File record not found");
|
||||
}
|
||||
|
||||
$uploadPath = WRITEPATH . 'uploads/hr_files/';
|
||||
$uploadPath = WRITEPATH . 'uploads/excel/';
|
||||
$filePath = $uploadPath . $record['file_name'];
|
||||
|
||||
if (!file_exists($filePath)) {
|
||||
@ -4236,8 +4259,8 @@ class EmployeeRestController extends AdminController
|
||||
}
|
||||
|
||||
// Force file download
|
||||
return $this->response->download($filePath, null)
|
||||
->setFileName($record['file_name']);
|
||||
return $this->response->download($filePath, null)->setFileName($record['file_name']);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return $this->failServerError($e->getMessage());
|
||||
}
|
||||
@ -4246,6 +4269,28 @@ class EmployeeRestController extends AdminController
|
||||
public function hrFileList()
|
||||
{
|
||||
try {
|
||||
|
||||
$request = service('request');
|
||||
$search_data = $request->getGetPost() ?? [];
|
||||
|
||||
// Fetch results
|
||||
$data = $this->getDataFromFilesTable($search_data);
|
||||
|
||||
return $this->respond([
|
||||
'status' => true,
|
||||
'message' => 'File list fetched successfully',
|
||||
'data' => $data
|
||||
]);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return $this->failServerError($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function hrFileListOld()
|
||||
{
|
||||
try {
|
||||
|
||||
$request = service('request');
|
||||
$builder = $this->hrFileUploadModel;
|
||||
|
||||
|
||||
@ -765,6 +765,14 @@ class EmployeeServiceController extends AdminController
|
||||
|
||||
// get policy and rack details
|
||||
$policy_details = $this->clientPolicyModel->getPolicyDetails($file['client_id'],$file['policy_id']);
|
||||
|
||||
if(empty($policy_details)){
|
||||
$message = "Policy configuration is incomplete. Cannot proceed.";
|
||||
$this->myLogger->logme('error',($message . ' for file id ' . $file_id));
|
||||
$this->fileModel->where('id', $file_id)->set(['status' => 'failed','reason' => json_encode(['error_summary' => array_count_values([5]),'error_data' => $message])])->update();
|
||||
return array('error_summary' => [5], 'error_data' => $message);
|
||||
}
|
||||
|
||||
$policy_terms = json_decode($policy_details[0]->policy_terms);
|
||||
$policy_terms = (array) $policy_terms;// convert obj to array
|
||||
$default_age_ratio = isset($policy_terms['age_ratio']) ? json_decode(json_encode($policy_terms['age_ratio']),true) : [];
|
||||
@ -775,6 +783,13 @@ class EmployeeServiceController extends AdminController
|
||||
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
|
||||
// dd($slab_details);
|
||||
|
||||
if(empty($slab_details) || (isset($slab_details['slab_rates']) && empty($slab_details['slab_rates']))){
|
||||
$message = "Policy configuration is incomplete. Cannot proceed.";
|
||||
$this->myLogger->logme('error',($message . ' for file id ' . $file_id));
|
||||
$this->fileModel->where('id', $file_id)->set(['status' => 'failed','reason' => json_encode(['error_summary' => array_count_values([5]),'error_data' => $message])])->update();
|
||||
return array('error_summary' => [5], 'error_data' => $message);
|
||||
}
|
||||
|
||||
//remove header
|
||||
unset($excel_data[0]);
|
||||
$relationship = $this->general_relationships;
|
||||
|
||||
@ -171,7 +171,7 @@ class RestAuthenticationController extends AdminController
|
||||
//check the resend otp (with in 60 seconds don't allow another otp to send)
|
||||
$check = canSendOtp($employeeData);
|
||||
if (!$check['allowed']) {
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after'] ])->setStatusCode(429); // Too Many Requests
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after']], 429); // Too Many Requests
|
||||
}
|
||||
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee verified with ID = " . $employeeData['employee_id']);
|
||||
@ -338,7 +338,7 @@ class RestAuthenticationController extends AdminController
|
||||
//check the resend otp (with in 60 seconds don't allow another otp to send)
|
||||
$check = canSendOtp($employeeData);
|
||||
if (!$check['allowed']) {
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after'] ])->setStatusCode(429); // Too Many Requests
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after']], 429); // Too Many Requests
|
||||
}
|
||||
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Valid employee found, generating OTP");
|
||||
@ -597,7 +597,7 @@ class RestAuthenticationController extends AdminController
|
||||
//check the resend otp (with in 60 seconds don't allow another otp to send)
|
||||
$check = canSendOtp($HrData);
|
||||
if (!$check['allowed']) {
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after'] ])->setStatusCode(429); // Too Many Requests
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after']], 429); // Too Many Requests
|
||||
}
|
||||
|
||||
$sql = "UPDATE level_contacts SET otp = ? WHERE mobile = ? AND contact_type = 'client' AND is_active = 1";
|
||||
@ -662,7 +662,7 @@ class RestAuthenticationController extends AdminController
|
||||
//check the resend otp (with in 60 seconds don't allow another otp to send)
|
||||
$check = canSendOtp($HrData);
|
||||
if (!$check['allowed']) {
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after'] ])->setStatusCode(429); // Too Many Requests
|
||||
return $this->respond(['status' => false,'message' => 'OTP already sent. Please wait before retrying.','retry_after_seconds' => $check['retry_after']], 429); // Too Many Requests
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ class Cors implements FilterInterface
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected string $allowedMethods = 'GET,POST,PUT,PATCH,DELETE,OPTIONS';
|
||||
protected string $allowedMethods = 'GET,POST,OPTIONS';
|
||||
|
||||
/**
|
||||
* HTTP headers allowed in CORS requests
|
||||
|
||||
@ -39,7 +39,7 @@ class GlobalPostFileUploadGuard implements FilterInterface
|
||||
];
|
||||
|
||||
protected array $blockedExtensions = [
|
||||
'php', 'phtml', 'pht', 'phar', 'php3', 'php4', 'php5', 'php7', 'php8', 'phps',
|
||||
'php', 'phtml', 'html', 'pht', 'phar', 'php3', 'php4', 'php5', 'php7', 'php8', 'phps',
|
||||
'cgi', 'fcgi', 'pl', 'py', 'rb', 'lua', 'tcl', 'go', 'rs', 'jar', 'class',
|
||||
'exe', 'dll', 'com', 'bat', 'cmd', 'msi', 'vbs', 'ps1', 'scr',
|
||||
'sh', 'bash', 'zsh', 'apk', 'app', 'deb', 'rpm', 'bin', 'run',
|
||||
@ -100,7 +100,7 @@ class GlobalPostFileUploadGuard implements FilterInterface
|
||||
}
|
||||
|
||||
// --- 2. Double Extension Attack Check ---
|
||||
if (preg_match('/\.(php|phtml|phar|exe|sh|bat|cmd|js|jsp|asp|aspx|py|pl)\./i', $originalName)) {
|
||||
if (preg_match('/\.(php|phtml|html|phar|exe|sh|bat|cmd|js|jsp|asp|aspx|py|pl)\./i', $originalName)) {
|
||||
$this->block("Double extension attack", $clientIp, $uri, $inputName, $originalName, $mime, $extension, $size);
|
||||
}
|
||||
|
||||
|
||||
34
app/Filters/RateLimitFilter.php
Normal file
34
app/Filters/RateLimitFilter.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filters;
|
||||
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use CodeIgniter\Filters\FilterInterface;
|
||||
|
||||
class RateLimitFilter implements FilterInterface
|
||||
{
|
||||
|
||||
public function before(RequestInterface $request, $arguments = null)
|
||||
{
|
||||
$throttler = service('throttler');
|
||||
|
||||
// sanitize IP for cache
|
||||
$key = preg_replace('/[^a-zA-Z0-9_]/', '_', $request->getIPAddress());
|
||||
|
||||
if ($throttler->check($key, 25, MINUTE) === false) {
|
||||
return service('response')
|
||||
->setStatusCode(429)
|
||||
->setJSON([
|
||||
'status' => 'error',
|
||||
'message' => 'Too many requests. Try again later.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
|
||||
{
|
||||
// nothing
|
||||
}
|
||||
}
|
||||
@ -43,12 +43,16 @@ class EmployeeHelper
|
||||
if($is_addon_value == 1){ $is_addon_value = 0 ; }else{ $is_addon_value = 1 ; }
|
||||
|
||||
|
||||
$employeeData = $this->employeeModel->where('emp_code',$data[0]->emp_code)
|
||||
->where('client_id',$data[0]->client_id)
|
||||
->where('client_branch_id',$data[0]->client_branch_id)
|
||||
->where('is_active', 1 )
|
||||
->where('is_addon_value',$is_addon_value)
|
||||
->findAll();
|
||||
$employeeData = $this->employeeModel
|
||||
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||
->where('employees.emp_code',$data[0]->emp_code)
|
||||
->where('employees.client_id',$data[0]->client_id)
|
||||
->where('employees.client_branch_id',$data[0]->client_branch_id)
|
||||
->where('employees.is_active', 1 )
|
||||
->where('employee_polices.client_policy_id', $client_policy_id)
|
||||
->where('employee_polices.is_active', 1)
|
||||
->where('is_addon_value',$is_addon_value)
|
||||
->findAll();
|
||||
|
||||
$array = $array[0];
|
||||
|
||||
|
||||
@ -31,16 +31,16 @@ class JWTToken
|
||||
try{
|
||||
$token = JWT::encode($request_data ,$secret_Key,'HS512');
|
||||
$id = $request_data['id'];
|
||||
$data["token_time_out"] = time() + getenv('TOKENTIMEOUT');
|
||||
$update["token_time_out"] = time() + getenv('TOKENTIMEOUT');
|
||||
|
||||
if(isset($data['emp_code'])){
|
||||
$model = new EmployeeModel();
|
||||
$model->update($id, $data);
|
||||
$model->update($id, $update);
|
||||
|
||||
}else{
|
||||
$models = new LevelContactModel();
|
||||
$id = $request_data['pre_hr_id'];
|
||||
$models->update($id, $data);
|
||||
$models->update($id, $update);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -739,12 +739,14 @@ if (!function_exists('validateExcelFile')) {
|
||||
|
||||
function validateExcelFile($file)
|
||||
{
|
||||
$allowed = [
|
||||
'application/vnd.ms-excel',
|
||||
$allowed = [
|
||||
'application/vnd.ms-excel','application/vnd',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'application/vnd.oasis.opendocument.spreadsheet'
|
||||
'application/vnd.oasis.opendocument.spreadsheet',
|
||||
'application/octet-stream'
|
||||
];
|
||||
|
||||
|
||||
// if ($file->getError() !== UPLOAD_ERR_OK) return 'Upload error';
|
||||
// if ($file->getSize() > (16 * 1024 * 1024)) return 'File too large';
|
||||
// if (!in_array($file->getClientMimeType(), $allowed, true)) return 'Invalid file type';
|
||||
|
||||
@ -82,10 +82,19 @@ class EmployeePolicyModel extends Model
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------------------------
|
||||
public function getEmployeePolicy($client_id = 0, $policy_id = 0, $status = [], $branch_id = 0, $emp_code = "", $emp_name = "")
|
||||
public function getEmployeePolicy($client_id = 0, $policy_id = 0, $status = [], $branch_id = 0, $emp_code = "", $emp_name = "", $status_type = "")
|
||||
{
|
||||
// dd($status);
|
||||
|
||||
$status_query = "employee_polices.status"; // Default fallback
|
||||
|
||||
if ($status_type == "hr") {
|
||||
$status_query = "CASE
|
||||
WHEN employee_polices.status = 'enrolled' THEN 'under process'
|
||||
ELSE employee_polices.status
|
||||
END as status";
|
||||
}
|
||||
|
||||
$result = $this->select([
|
||||
'employee_polices.*',
|
||||
'policy_type.policy_type as policy_name',
|
||||
@ -147,8 +156,8 @@ class EmployeePolicyModel extends Model
|
||||
THEN "Newly Added"
|
||||
ELSE NULL
|
||||
END) AS newly_added',
|
||||
|
||||
])
|
||||
$status_query
|
||||
], false)
|
||||
->join('employees emp', 'employee_polices.employee_id = emp.id')
|
||||
->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') //cp - client policy
|
||||
->join('policies pm', 'cp.policy_id = pm.id', 'left') //pm - policy master
|
||||
|
||||
@ -302,14 +302,51 @@ function init() {
|
||||
function handleItemClick(e, item) {
|
||||
e.preventDefault();
|
||||
|
||||
// Execute the stored onclick handler
|
||||
const onclickAttr = item.getAttribute('data-onclick');
|
||||
if (onclickAttr) {
|
||||
eval(onclickAttr);
|
||||
// Regex to separate function name from the inside of the parentheses
|
||||
// Example: myFunc(this, '123') -> match[1]="myFunc", match[2]="this, '123'"
|
||||
const match = onclickAttr.match(/^(\w+)\((.*)\)$/);
|
||||
|
||||
if (match) {
|
||||
const funcName = match[1];
|
||||
const argsRaw = match[2];
|
||||
|
||||
if (typeof window[funcName] === 'function') {
|
||||
// Parse the arguments string into a real array
|
||||
const args = argsRaw.split(',').map(arg => {
|
||||
let cleaned = arg.trim();
|
||||
|
||||
// 1. Handle the 'this' keyword
|
||||
if (cleaned === 'this') return item;
|
||||
|
||||
// 2. Handle 'event' keyword
|
||||
if (cleaned === 'event') return e;
|
||||
|
||||
// 3. Handle strings (remove single or double quotes)
|
||||
if ((cleaned.startsWith("'") && cleaned.endsWith("'")) ||
|
||||
(cleaned.startsWith('"') && cleaned.endsWith('"'))) {
|
||||
return cleaned.substring(1, cleaned.length - 1);
|
||||
}
|
||||
|
||||
// 4. Handle numbers
|
||||
if (!isNaN(cleaned) && cleaned !== "") {
|
||||
return Number(cleaned);
|
||||
}
|
||||
|
||||
return cleaned;
|
||||
});
|
||||
|
||||
// Execute function:
|
||||
// .apply(item, args) sets the 'this' inside the function to the clicked element
|
||||
window[funcName].apply(item, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle standard navigation if it's a link
|
||||
const href = item.getAttribute('href');
|
||||
if (href && href !== '#') {
|
||||
if (href && href !== '#' && !href.includes('javascript:void(0)')) {
|
||||
window.location.href = href;
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ option:disabled {
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label>Branch</label> <br />
|
||||
<select name="branch_id" class="form-control" id="branch_id" required>
|
||||
<select name="client_branch_id" class="form-control" id="branch_id" required>
|
||||
<option value="0">Select</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@ -179,7 +179,7 @@
|
||||
enctype="multipart/form-data">
|
||||
<input type="hidden" id="file_client_id" name="client_id">
|
||||
<input type="hidden" id="file_policy_id" name="policy_id">
|
||||
<input type="hidden" id="file_branch_id" name="branch_id">
|
||||
<input type="hidden" id="file_branch_id" name="client_branch_id">
|
||||
<input type="hidden" id="file_enrollment_open_date" name="enrollment_open_date">
|
||||
<input type="hidden" id="file_enrollment_close_date" name="enrollment_close_date">
|
||||
<input type="hidden" id="file_upload_actions" name="upload-action-type">
|
||||
|
||||
@ -62,69 +62,88 @@
|
||||
|
||||
<!-- /Right-bar -->
|
||||
|
||||
<!-- Right bar overlay -->
|
||||
<!-- Right bar overlay-->
|
||||
<div class="rightbar-overlay"></div>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Core Vendor JS (Local) -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/js/vendor.min.js"); ?>"></script>
|
||||
<!-- Vendor js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/vendor.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Charts -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/apexcharts/apexcharts.min.js"); ?>"></script>
|
||||
<!-- KNOB JS -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/jquery-knob/jquery.knob.min.js"></script>
|
||||
<!-- Apex js-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/apexcharts/apexcharts.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- DataTables -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net/js/jquery.dataTables.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/buttons.print.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-select/js/dataTables.select.min.js"); ?>"></script>
|
||||
<!-- third party js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net/js/jquery.dataTables.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.flash.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.print.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-select/js/dataTables.select.min.js"></script>
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/pdfmake.min.js"></script> -->
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/vfs_fonts.js"></script> -->
|
||||
<!-- third party js ends -->
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/moment/min/moment.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-daterangepicker/daterangepicker.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Date Handling -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/moment/min/moment.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/bootstrap-daterangepicker/daterangepicker.js"); ?>"></script>
|
||||
|
||||
<!-- OR: Flatpickr (prefer this long-term) -->
|
||||
<!-- Datatables init -->
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/js/pages/datatables.init.js"></script> -->
|
||||
|
||||
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/tickets.init.js"></script>
|
||||
|
||||
<!-- Plugins js-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/maps/jquery-jvectormap-us-merc-en.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/parsleyjs/parsley.min.js"></script>
|
||||
|
||||
<!-- Dashboard init-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/dashboard-analytics.init.js"></script>
|
||||
|
||||
<!-- Validation init js-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/form-validation.init.js"></script>
|
||||
|
||||
<!-- App js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/app.min.js"></script>
|
||||
|
||||
|
||||
<!-- Sweet Alert CDN -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap-multiselect@1.1.0/dist/js/bootstrap-multiselect.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css" rel="stylesheet">
|
||||
|
||||
<!-- flatpicker datepicker -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Forms -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/parsleyjs/parsley.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/js/pages/form-validation.init.js"); ?>"></script>
|
||||
<!-- bootstrap datepicker -->
|
||||
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.min.js"></script> -->
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Notifications -->
|
||||
<!-- ============================= -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/jquery.xeditable.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/form-xeditable.init.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/bootstrap-editable.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Select2 -->
|
||||
<!-- ============================= -->
|
||||
<!-- Jodit Js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/jodit.min.js"></script>
|
||||
|
||||
<!-- select2 -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Editor -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/js/jodit.min.js"); ?>"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- App Init -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/js/app.min.js"); ?>"></script>
|
||||
<script src="https://cdn.datatables.net/plug-ins/2.0.8/sorting/scientific.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
toastr.options = {
|
||||
|
||||
@ -62,88 +62,69 @@
|
||||
|
||||
<!-- /Right-bar -->
|
||||
|
||||
<!-- Right bar overlay-->
|
||||
<!-- Right bar overlay -->
|
||||
<div class="rightbar-overlay"></div>
|
||||
|
||||
<!-- Vendor js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/vendor.min.js"></script>
|
||||
<!-- ============================= -->
|
||||
<!-- Core Vendor JS (Local) -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/js/vendor.min.js"); ?>"></script>
|
||||
|
||||
<!-- KNOB JS -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/jquery-knob/jquery.knob.min.js"></script>
|
||||
<!-- Apex js-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/apexcharts/apexcharts.min.js"></script>
|
||||
<!-- ============================= -->
|
||||
<!-- Charts -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/apexcharts/apexcharts.min.js"); ?>"></script>
|
||||
|
||||
<!-- third party js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net/js/jquery.dataTables.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.flash.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.print.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-select/js/dataTables.select.min.js"></script>
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/pdfmake.min.js"></script> -->
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/vfs_fonts.js"></script> -->
|
||||
<!-- third party js ends -->
|
||||
<!-- ============================= -->
|
||||
<!-- DataTables -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net/js/jquery.dataTables.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/buttons.print.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/datatables.net-select/js/dataTables.select.min.js"); ?>"></script>
|
||||
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/moment/min/moment.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-daterangepicker/daterangepicker.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Date Handling -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/moment/min/moment.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/libs/bootstrap-daterangepicker/daterangepicker.js"); ?>"></script>
|
||||
|
||||
<!-- Datatables init -->
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/js/pages/datatables.init.js"></script> -->
|
||||
|
||||
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/tickets.init.js"></script>
|
||||
|
||||
<!-- Plugins js-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.min.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/maps/jquery-jvectormap-us-merc-en.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/libs/parsleyjs/parsley.min.js"></script>
|
||||
|
||||
<!-- Dashboard init-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/dashboard-analytics.init.js"></script>
|
||||
|
||||
<!-- Validation init js-->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/form-validation.init.js"></script>
|
||||
|
||||
<!-- App js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/app.min.js"></script>
|
||||
|
||||
|
||||
<!-- Sweet Alert CDN -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap-multiselect@1.1.0/dist/js/bootstrap-multiselect.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css" rel="stylesheet">
|
||||
|
||||
<!-- flatpicker datepicker -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css" rel="stylesheet">
|
||||
<!-- OR: Flatpickr (prefer this long-term) -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"></script>
|
||||
|
||||
<!-- bootstrap datepicker -->
|
||||
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.min.js"></script> -->
|
||||
<!-- ============================= -->
|
||||
<!-- Forms -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/libs/parsleyjs/parsley.min.js"); ?>"></script>
|
||||
<script src="<?= base_url("public/assets/js/pages/form-validation.init.js"); ?>"></script>
|
||||
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/pages/jquery.xeditable.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/form-xeditable.init.js"></script>
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/bootstrap-editable.min.js"></script>
|
||||
<!-- ============================= -->
|
||||
<!-- Notifications -->
|
||||
<!-- ============================= -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
|
||||
|
||||
<!-- Jodit Js -->
|
||||
<script src="<?= base_url() . "public"; ?>/assets/js/jodit.min.js"></script>
|
||||
|
||||
<!-- select2 -->
|
||||
<!-- ============================= -->
|
||||
<!-- Select2 -->
|
||||
<!-- ============================= -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- Editor -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/js/jodit.min.js"); ?>"></script>
|
||||
|
||||
<script src="https://cdn.datatables.net/plug-ins/2.0.8/sorting/scientific.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- App Init -->
|
||||
<!-- ============================= -->
|
||||
<script src="<?= base_url("public/assets/js/app.min.js"); ?>"></script>
|
||||
|
||||
<script>
|
||||
toastr.options = {
|
||||
@ -50,17 +50,17 @@
|
||||
<link href="<?= base_url() . "public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
|
||||
<!-- JQuery CDN -->
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
<!-- JQuery CDN -->
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
|
||||
<!-- Sweet Alert CDN -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.12.0/dist/sweetalert2.all.min.js"></script>
|
||||
<!-- Sweet Alert CDN -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.10.4/dist/sweetalert2.all.min.js"></script>
|
||||
|
||||
<!-- select2 -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" type="text/css">
|
||||
<!-- select2 -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.slim.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.slim.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
|
||||
|
||||
<!-- <link rel="manifest" href="../manifest.json"> -->
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
</script> -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" />
|
||||
<!-- <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
|
||||
<!-- srinivas -->
|
||||
<script src="https://editor.unlayer.com/embed.js"></script>
|
||||
|
||||
@ -50,34 +50,34 @@
|
||||
<link href="<?= base_url() . "public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
|
||||
<!-- JQuery CDN -->
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<!-- JQuery CDN -->
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
|
||||
<!-- Sweet Alert CDN -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.10.4/dist/sweetalert2.all.min.js"></script>
|
||||
<!-- Sweet Alert CDN -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.12.0/dist/sweetalert2.all.min.js"></script>
|
||||
|
||||
<!-- select2 -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" type="text/css">
|
||||
<!-- select2 -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.slim.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
|
||||
|
||||
<!-- <link rel="manifest" href="../manifest.json"> -->
|
||||
|
||||
<script>
|
||||
// if ('serviceWorker' in navigator) {
|
||||
// window.addEventListener('load', function() {
|
||||
// navigator.serviceWorker.register('../service-worker.js').then(function(registration) {
|
||||
// // console.log('Service Worker registration successful with scope:', registration.scope);
|
||||
// }, function(err) {
|
||||
// // console.log('Service Worker registration failed:', err);
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
</script>
|
||||
<!-- <script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function() {
|
||||
navigator.serviceWorker.register('../service-worker.js').then(function(registration) {
|
||||
// console.log('Service Worker registration successful with scope:', registration.scope);
|
||||
}, function(err) {
|
||||
// console.log('Service Worker registration failed:', err);
|
||||
});
|
||||
});
|
||||
}
|
||||
</script> -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" />
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
|
||||
<!-- srinivas -->
|
||||
<script src="https://editor.unlayer.com/embed.js"></script>
|
||||
@ -329,84 +329,8 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#side-menu .menu-logo a:hover {
|
||||
background-color: transparent !important;
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
|
||||
#side-menu .menu-logo img {
|
||||
height: 24px ;
|
||||
display: inline-block ;
|
||||
}
|
||||
|
||||
.ul-flex{
|
||||
display:flex;
|
||||
flex-flow: column nowrap;
|
||||
justify-content: center;
|
||||
align-content: space-evenly;
|
||||
}
|
||||
|
||||
.top-navbar-div{
|
||||
display:flex;
|
||||
flex-flow:row nowrap;
|
||||
justify-content:space-between;
|
||||
}
|
||||
|
||||
.nav-flex{
|
||||
display:flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content:end;
|
||||
margin-right:20px;
|
||||
}
|
||||
|
||||
.card-body{
|
||||
background-color:white;
|
||||
padding-left:50px !important;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.content-page{
|
||||
background-color: white !important;
|
||||
color:white !important;
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
.footer{
|
||||
background-color:white !important;
|
||||
color:black;
|
||||
margin: 30px !important;
|
||||
}
|
||||
|
||||
html{
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.footer{
|
||||
margin-left:150px;
|
||||
}
|
||||
|
||||
.left-side-menu{
|
||||
margin-left:30px;
|
||||
margin-top:20px;
|
||||
margin-bottom:5px;
|
||||
border-radius:25px;
|
||||
background-color:#D4F5F6;
|
||||
z-index:700;
|
||||
padding:0px !important;
|
||||
height:90%;
|
||||
}
|
||||
|
||||
label{
|
||||
color:#000;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="loading" data-layout-mode="" data-layout='{"mode": "light", "width": "fluid", "menuPosition": "fixed", "sidebar": { "color": "light", "size": "condensed", "showuser": false}, "topbar": {"color": "dark"}, "showRightSidebarOnPageLoad": false}'></body>
|
||||
@ -420,24 +344,219 @@
|
||||
|
||||
<!-- <img src="<?= base_url() . "public" ?>/assets/images/nhance-loader-fast.gif" height="40" width="40" alt="Loading..."> -->
|
||||
<!-- Begin page -->
|
||||
<div id="wrapper" style="background-color:white;">
|
||||
<div id="wrapper">
|
||||
|
||||
<!-- Topbar Start -->
|
||||
<div class="navbar-custom">
|
||||
<div class="container-fluid">
|
||||
<ul class="list-unstyled topnav-menu float-right mb-0">
|
||||
|
||||
<!-- <li class="d-none d-lg-block">
|
||||
<form class="app-search">
|
||||
<div class="app-search-box dropdown">
|
||||
<div class="input-group">
|
||||
<input type="search" class="form-control" placeholder="Search..." id="top-search">
|
||||
<div class="input-group-append">
|
||||
<button class="btn" type="submit">
|
||||
<i class="fe-search"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- <div class="dropdown-menu dropdown-lg" id="search-dropdown">
|
||||
<div class="dropdown-header noti-title">
|
||||
<h5 class="text-overflow mb-2">Found <span class="text-danger">09</span> results</h5>
|
||||
</div>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="fe-home mr-1"></i>
|
||||
<span>Analytics Report</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="fe-aperture mr-1"></i>
|
||||
<span>How can I help you?</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="fe-settings mr-1"></i>
|
||||
<span>User profile settings</span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-header noti-title">
|
||||
<h6 class="text-overflow mb-2 text-uppercase">Users</h6>
|
||||
</div>
|
||||
|
||||
<div class="notification-list">
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="media">
|
||||
<img class="d-flex mr-2 rounded-circle" src="<?= base_url() . "public"; ?>/assets/images/users/avatar-2.jpg" alt="Generic placeholder image" height="32">
|
||||
<div class="media-body">
|
||||
<h5 class="m-0 font-14">Erwin E. Brown</h5>
|
||||
<span class="font-12 mb-0">UI Designer</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="media">
|
||||
<img class="d-flex mr-2 rounded-circle" src="<?= base_url() . "public"; ?>/assets/images/users/avatar-5.jpg" alt="Generic placeholder image" height="32">
|
||||
<div class="media-body">
|
||||
<h5 class="m-0 font-14">Jacob Deo</h5>
|
||||
<span class="font-12 mb-0">Developer</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div> -->
|
||||
<!-- </div>
|
||||
</form>
|
||||
</li> -->
|
||||
|
||||
<!-- <li class="dropdown notification-list topbar-dropdown">
|
||||
<a class="nav-link dropdown-toggle right-bar-toggle waves-effect waves-light">
|
||||
<i class="fe-bell noti-icon"></i>
|
||||
<span class="badge badge-danger rounded-circle noti-icon-badge" id="notification_count">0</span>
|
||||
</a>
|
||||
</li> -->
|
||||
|
||||
<li class="dropdown notification-list topbar-dropdown">
|
||||
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<img src="<?php echo (get_userProfile() != null && !empty(get_userProfile())) ? get_userProfile() : base_url() . 'public/assets/images/avatar_2x.png'; ?>" alt="user-image" class="rounded-circle">
|
||||
<span class="pro-user-name ml-1" style="font-size: 16px;">
|
||||
<?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?>
|
||||
<!-- <i class="mdi mdi-chevron-down"></i> -->
|
||||
</span>
|
||||
</a>
|
||||
<!--<div class="dropdown-menu dropdown-menu-right profile-dropdown ">
|
||||
<div class="dropdown-header noti-title">
|
||||
<h6 class="text-overflow m-0">Welcome !</h6>
|
||||
</div>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-account-circle-line"></i>
|
||||
<span>My Account</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-settings-3-line"></i>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-wallet-line"></i>
|
||||
<span>My Wallet <span class="badge badge-success float-right">3</span> </span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-lock-line"></i>
|
||||
<span>Lock Screen</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="<?= base_url('/logout'); ?>" class="dropdown-item notify-item">
|
||||
<i class="ri-logout-box-line"></i>
|
||||
<span>Logout</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<!-- </li> -->
|
||||
|
||||
<!-- <li class="dropdown notification-list">
|
||||
<a href="javascript:void(0);" class="nav-link right-bar-toggle waves-effect waves-light">
|
||||
<i class="fe-settings noti-icon"></i>
|
||||
</a>
|
||||
</li> -->
|
||||
|
||||
<li class="dropdown notification-list">
|
||||
<a href="<?= base_url('/logout'); ?>" class="nav-link waves-effect waves-light">
|
||||
<i class="ri-logout-box-r-line" style="font-size: 25px;"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- LOGO -->
|
||||
<div class="logo-box">
|
||||
<a href="https://localhost/nhance-enrollment/dashboard/view" class="logo logo-dark text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24">
|
||||
<!-- <span class="logo-lg-text-light">NHANCE</span> -->
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="20">
|
||||
<!-- <span class="logo-lg-text-light">M</span> -->
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a href="https://localhost/nhance-enrollment/dashboard/view" class="logo logo-light text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24">
|
||||
</span>
|
||||
<!-- <span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/logo-light.png" alt="" height="20">
|
||||
</span> -->
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<ul class="list-unstyled topnav-menu topnav-menu-left m-0">
|
||||
<li>
|
||||
<button class="button-menu-mobile waves-effect waves-light">
|
||||
<i class="fe-menu"></i>
|
||||
</button>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<!-- Mobile menu toggle (Horizontal Layout)-->
|
||||
<a class="navbar-toggle nav-link" data-toggle="collapse" data-target="#topnav-menu-content">
|
||||
<div class="lines">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
</a>
|
||||
<!-- End mobile menu toggle-->
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end Topbar -->
|
||||
|
||||
<!-- ========== Left Sidebar Start ========== -->
|
||||
<div class="left-side-menu">
|
||||
|
||||
|
||||
<!-- LOGO -->
|
||||
<div class="logo-box">
|
||||
<a href="<?= base_url('/dashboard/view') ?>" class="logo logo-dark text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/logo-sm-dark.png" alt="" height="24">
|
||||
<!-- <span class="logo-lg-text-light">nHance</span> -->
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/logo-dark.png" alt="" height="20">
|
||||
<!-- <span class="logo-lg-text-light">N</span> -->
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a href="<?= base_url('/dashboard/view') ?>" class="logo logo-light text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/nhance_white_logo.svg" alt="" width="130" height="30">
|
||||
</span>
|
||||
<!-- <span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>./assets/images/logo-light.png" alt="" height="20">
|
||||
</span> -->
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="h-100" data-simplebar>
|
||||
|
||||
<!--- Sidemenu -->
|
||||
<div id="sidebar-menu">
|
||||
<ul class="ul-flex" id="side-menu">
|
||||
|
||||
<li class="menu-logo" >
|
||||
<a href="<?= base_url('/dashboard/view') ?>">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.png" alt="Logo" height="24">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<ul id="side-menu">
|
||||
|
||||
<li>
|
||||
<a href="<?= base_url('/dashboard/view') ?>">
|
||||
@ -448,16 +567,15 @@
|
||||
|
||||
<li>
|
||||
<a href="<?= base_url('/client/list') ?>">
|
||||
<img
|
||||
src="<?= base_url() . "public"; ?>/assets/images/clients_sb.png" alt="Logo" height="24">
|
||||
<span>Clients</span>
|
||||
<i class="mdi mdi-domain"></i>
|
||||
<span> Clients </span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
|
||||
<img
|
||||
src="<?= base_url() . "public"; ?>/assets/images/action_on_policies_sb.png" alt="Logo" height="20">
|
||||
<i class="fas fa-user-tie"></i>
|
||||
<span class="badge badge-success badge-pill float-right">2</span>
|
||||
<span> Action on Policies </span>
|
||||
</a>
|
||||
<div class="collapse" id="sidebarDashboards">
|
||||
@ -486,8 +604,8 @@
|
||||
|
||||
<li>
|
||||
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
|
||||
<img
|
||||
src="<?= base_url() . "public"; ?>/assets/images/masters_sb.png" alt="Logo" height="20">
|
||||
<i class="ri-database-2-line"></i>
|
||||
<span class="badge badge-success badge-pill float-right">2</span>
|
||||
<span> Masters </span>
|
||||
</a>
|
||||
<div class="collapse" id="sidebarDashboards">
|
||||
@ -630,31 +748,6 @@
|
||||
</div>
|
||||
<!-- Left Sidebar End -->
|
||||
|
||||
<!-- Top Bar -->
|
||||
<div class="top-navbar-div" style="margin-left:150px; margin-top:20px;" >
|
||||
<div>
|
||||
<h5>Welcome <?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?> </h5>
|
||||
</div>
|
||||
<div class="nav-flex">
|
||||
<div>
|
||||
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false"
|
||||
>
|
||||
<img
|
||||
style="color: black;"
|
||||
src="<?php echo (get_userProfile() != null && !empty(get_userProfile())) ? get_userProfile() : base_url() . 'public/assets/images/avatar_2x.png'; ?>" alt="user-image"
|
||||
class="rounded-circle">
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="<?= base_url('/logout'); ?>" style="font-size: 16px; color:#000;background-color:#D4F5F6 !important;border-radius:25px;padding:7px;">
|
||||
<i class="ri-logout-box-r-line" style="font-size: 20px; color:#000;padding:0px;"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End of Top -->
|
||||
|
||||
|
||||
<!-- ============================================================== -->
|
||||
<!-- Start Page Content here -->
|
||||
<!-- ============================================================== -->
|
||||
|
||||
@ -64,17 +64,17 @@
|
||||
|
||||
<!-- <link rel="manifest" href="../manifest.json"> -->
|
||||
|
||||
<!-- <script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function() {
|
||||
navigator.serviceWorker.register('../service-worker.js').then(function(registration) {
|
||||
// console.log('Service Worker registration successful with scope:', registration.scope);
|
||||
}, function(err) {
|
||||
// console.log('Service Worker registration failed:', err);
|
||||
});
|
||||
});
|
||||
}
|
||||
</script> -->
|
||||
<script>
|
||||
// if ('serviceWorker' in navigator) {
|
||||
// window.addEventListener('load', function() {
|
||||
// navigator.serviceWorker.register('../service-worker.js').then(function(registration) {
|
||||
// // console.log('Service Worker registration successful with scope:', registration.scope);
|
||||
// }, function(err) {
|
||||
// // console.log('Service Worker registration failed:', err);
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" />
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
@ -329,8 +329,84 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#side-menu .menu-logo a:hover {
|
||||
background-color: transparent !important;
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
|
||||
#side-menu .menu-logo img {
|
||||
height: 24px ;
|
||||
display: inline-block ;
|
||||
}
|
||||
|
||||
.ul-flex{
|
||||
display:flex;
|
||||
flex-flow: column nowrap;
|
||||
justify-content: center;
|
||||
align-content: space-evenly;
|
||||
}
|
||||
|
||||
.top-navbar-div{
|
||||
display:flex;
|
||||
flex-flow:row nowrap;
|
||||
justify-content:space-between;
|
||||
}
|
||||
|
||||
.nav-flex{
|
||||
display:flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content:end;
|
||||
margin-right:20px;
|
||||
}
|
||||
|
||||
.card-body{
|
||||
background-color:white;
|
||||
padding-left:50px !important;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.content-page{
|
||||
background-color: white !important;
|
||||
color:white !important;
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
.footer{
|
||||
background-color:white !important;
|
||||
color:black;
|
||||
margin: 30px !important;
|
||||
}
|
||||
|
||||
html{
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.footer{
|
||||
margin-left:150px;
|
||||
}
|
||||
|
||||
.left-side-menu{
|
||||
margin-left:30px;
|
||||
margin-top:20px;
|
||||
margin-bottom:5px;
|
||||
border-radius:25px;
|
||||
background-color:#D4F5F6;
|
||||
z-index:700;
|
||||
padding:0px !important;
|
||||
height:90%;
|
||||
}
|
||||
|
||||
label{
|
||||
color:#000;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="loading" data-layout-mode="" data-layout='{"mode": "light", "width": "fluid", "menuPosition": "fixed", "sidebar": { "color": "light", "size": "condensed", "showuser": false}, "topbar": {"color": "dark"}, "showRightSidebarOnPageLoad": false}'></body>
|
||||
@ -344,219 +420,24 @@
|
||||
|
||||
<!-- <img src="<?= base_url() . "public" ?>/assets/images/nhance-loader-fast.gif" height="40" width="40" alt="Loading..."> -->
|
||||
<!-- Begin page -->
|
||||
<div id="wrapper">
|
||||
<div id="wrapper" style="background-color:white;">
|
||||
|
||||
<!-- Topbar Start -->
|
||||
<div class="navbar-custom">
|
||||
<div class="container-fluid">
|
||||
<ul class="list-unstyled topnav-menu float-right mb-0">
|
||||
|
||||
<!-- <li class="d-none d-lg-block">
|
||||
<form class="app-search">
|
||||
<div class="app-search-box dropdown">
|
||||
<div class="input-group">
|
||||
<input type="search" class="form-control" placeholder="Search..." id="top-search">
|
||||
<div class="input-group-append">
|
||||
<button class="btn" type="submit">
|
||||
<i class="fe-search"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- <div class="dropdown-menu dropdown-lg" id="search-dropdown">
|
||||
<div class="dropdown-header noti-title">
|
||||
<h5 class="text-overflow mb-2">Found <span class="text-danger">09</span> results</h5>
|
||||
</div>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="fe-home mr-1"></i>
|
||||
<span>Analytics Report</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="fe-aperture mr-1"></i>
|
||||
<span>How can I help you?</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="fe-settings mr-1"></i>
|
||||
<span>User profile settings</span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-header noti-title">
|
||||
<h6 class="text-overflow mb-2 text-uppercase">Users</h6>
|
||||
</div>
|
||||
|
||||
<div class="notification-list">
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="media">
|
||||
<img class="d-flex mr-2 rounded-circle" src="<?= base_url() . "public"; ?>/assets/images/users/avatar-2.jpg" alt="Generic placeholder image" height="32">
|
||||
<div class="media-body">
|
||||
<h5 class="m-0 font-14">Erwin E. Brown</h5>
|
||||
<span class="font-12 mb-0">UI Designer</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="media">
|
||||
<img class="d-flex mr-2 rounded-circle" src="<?= base_url() . "public"; ?>/assets/images/users/avatar-5.jpg" alt="Generic placeholder image" height="32">
|
||||
<div class="media-body">
|
||||
<h5 class="m-0 font-14">Jacob Deo</h5>
|
||||
<span class="font-12 mb-0">Developer</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div> -->
|
||||
<!-- </div>
|
||||
</form>
|
||||
</li> -->
|
||||
|
||||
<!-- <li class="dropdown notification-list topbar-dropdown">
|
||||
<a class="nav-link dropdown-toggle right-bar-toggle waves-effect waves-light">
|
||||
<i class="fe-bell noti-icon"></i>
|
||||
<span class="badge badge-danger rounded-circle noti-icon-badge" id="notification_count">0</span>
|
||||
</a>
|
||||
</li> -->
|
||||
|
||||
<li class="dropdown notification-list topbar-dropdown">
|
||||
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<img src="<?php echo (get_userProfile() != null && !empty(get_userProfile())) ? get_userProfile() : base_url() . 'public/assets/images/avatar_2x.png'; ?>" alt="user-image" class="rounded-circle">
|
||||
<span class="pro-user-name ml-1" style="font-size: 16px;">
|
||||
<?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?>
|
||||
<!-- <i class="mdi mdi-chevron-down"></i> -->
|
||||
</span>
|
||||
</a>
|
||||
<!--<div class="dropdown-menu dropdown-menu-right profile-dropdown ">
|
||||
<div class="dropdown-header noti-title">
|
||||
<h6 class="text-overflow m-0">Welcome !</h6>
|
||||
</div>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-account-circle-line"></i>
|
||||
<span>My Account</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-settings-3-line"></i>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-wallet-line"></i>
|
||||
<span>My Wallet <span class="badge badge-success float-right">3</span> </span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<i class="ri-lock-line"></i>
|
||||
<span>Lock Screen</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="<?= base_url('/logout'); ?>" class="dropdown-item notify-item">
|
||||
<i class="ri-logout-box-line"></i>
|
||||
<span>Logout</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<!-- </li> -->
|
||||
|
||||
<!-- <li class="dropdown notification-list">
|
||||
<a href="javascript:void(0);" class="nav-link right-bar-toggle waves-effect waves-light">
|
||||
<i class="fe-settings noti-icon"></i>
|
||||
</a>
|
||||
</li> -->
|
||||
|
||||
<li class="dropdown notification-list">
|
||||
<a href="<?= base_url('/logout'); ?>" class="nav-link waves-effect waves-light">
|
||||
<i class="ri-logout-box-r-line" style="font-size: 25px;"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- LOGO -->
|
||||
<div class="logo-box">
|
||||
<a href="https://localhost/nhance-enrollment/dashboard/view" class="logo logo-dark text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24">
|
||||
<!-- <span class="logo-lg-text-light">NHANCE</span> -->
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="20">
|
||||
<!-- <span class="logo-lg-text-light">M</span> -->
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a href="https://localhost/nhance-enrollment/dashboard/view" class="logo logo-light text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24">
|
||||
</span>
|
||||
<!-- <span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/logo-light.png" alt="" height="20">
|
||||
</span> -->
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<ul class="list-unstyled topnav-menu topnav-menu-left m-0">
|
||||
<li>
|
||||
<button class="button-menu-mobile waves-effect waves-light">
|
||||
<i class="fe-menu"></i>
|
||||
</button>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<!-- Mobile menu toggle (Horizontal Layout)-->
|
||||
<a class="navbar-toggle nav-link" data-toggle="collapse" data-target="#topnav-menu-content">
|
||||
<div class="lines">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
</a>
|
||||
<!-- End mobile menu toggle-->
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end Topbar -->
|
||||
|
||||
<!-- ========== Left Sidebar Start ========== -->
|
||||
<div class="left-side-menu">
|
||||
|
||||
|
||||
<!-- LOGO -->
|
||||
<div class="logo-box">
|
||||
<a href="<?= base_url('/dashboard/view') ?>" class="logo logo-dark text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/logo-sm-dark.png" alt="" height="24">
|
||||
<!-- <span class="logo-lg-text-light">nHance</span> -->
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/logo-dark.png" alt="" height="20">
|
||||
<!-- <span class="logo-lg-text-light">N</span> -->
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a href="<?= base_url('/dashboard/view') ?>" class="logo logo-light text-center">
|
||||
<span class="logo-sm">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/nhance_white_logo.svg" alt="" width="130" height="30">
|
||||
</span>
|
||||
<!-- <span class="logo-lg">
|
||||
<img src="<?= base_url() . "public"; ?>./assets/images/logo-light.png" alt="" height="20">
|
||||
</span> -->
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="h-100" data-simplebar>
|
||||
|
||||
<!--- Sidemenu -->
|
||||
<div id="sidebar-menu">
|
||||
<ul id="side-menu">
|
||||
<ul class="ul-flex" id="side-menu">
|
||||
|
||||
<li class="menu-logo" >
|
||||
<a href="<?= base_url('/dashboard/view') ?>">
|
||||
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.png" alt="Logo" height="24">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="<?= base_url('/dashboard/view') ?>">
|
||||
@ -567,15 +448,16 @@
|
||||
|
||||
<li>
|
||||
<a href="<?= base_url('/client/list') ?>">
|
||||
<i class="mdi mdi-domain"></i>
|
||||
<span> Clients </span>
|
||||
<img
|
||||
src="<?= base_url() . "public"; ?>/assets/images/clients_sb.png" alt="Logo" height="24">
|
||||
<span>Clients</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
|
||||
<i class="fas fa-user-tie"></i>
|
||||
<span class="badge badge-success badge-pill float-right">2</span>
|
||||
<img
|
||||
src="<?= base_url() . "public"; ?>/assets/images/action_on_policies_sb.png" alt="Logo" height="20">
|
||||
<span> Action on Policies </span>
|
||||
</a>
|
||||
<div class="collapse" id="sidebarDashboards">
|
||||
@ -604,8 +486,8 @@
|
||||
|
||||
<li>
|
||||
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
|
||||
<i class="ri-database-2-line"></i>
|
||||
<span class="badge badge-success badge-pill float-right">2</span>
|
||||
<img
|
||||
src="<?= base_url() . "public"; ?>/assets/images/masters_sb.png" alt="Logo" height="20">
|
||||
<span> Masters </span>
|
||||
</a>
|
||||
<div class="collapse" id="sidebarDashboards">
|
||||
@ -748,6 +630,31 @@
|
||||
</div>
|
||||
<!-- Left Sidebar End -->
|
||||
|
||||
<!-- Top Bar -->
|
||||
<div class="top-navbar-div" style="margin-left:150px; margin-top:20px;" >
|
||||
<div>
|
||||
<h5>Welcome <?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?> </h5>
|
||||
</div>
|
||||
<div class="nav-flex">
|
||||
<div>
|
||||
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false"
|
||||
>
|
||||
<img
|
||||
style="color: black;"
|
||||
src="<?php echo (get_userProfile() != null && !empty(get_userProfile())) ? get_userProfile() : base_url() . 'public/assets/images/avatar_2x.png'; ?>" alt="user-image"
|
||||
class="rounded-circle">
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="<?= base_url('/logout'); ?>" style="font-size: 16px; color:#000;background-color:#D4F5F6 !important;border-radius:25px;padding:7px;">
|
||||
<i class="ri-logout-box-r-line" style="font-size: 20px; color:#000;padding:0px;"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End of Top -->
|
||||
|
||||
|
||||
<!-- ============================================================== -->
|
||||
<!-- Start Page Content here -->
|
||||
<!-- ============================================================== -->
|
||||
@ -1188,8 +1188,8 @@
|
||||
<td>
|
||||
<form class="ajax" onsubmit="submitAttachmentForm(event, this)">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-3">
|
||||
<input type="file" class="file-input__input" name="file" required>
|
||||
<div class="form-group col-5">
|
||||
<input type="file" class="file-input__input" name="file">
|
||||
</div>
|
||||
<div class="form-group col-2">
|
||||
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
|
||||
@ -1227,8 +1227,8 @@
|
||||
<td>
|
||||
<form class="ajax" onsubmit="submitAttachmentForm(event, this)">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-3">
|
||||
<input type="file" class="file-input__input" name="file" required>
|
||||
<div class="form-group col-5">
|
||||
<input type="file" class="file-input__input" name="file">
|
||||
</div>
|
||||
<div class="form-group col-2">
|
||||
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
|
||||
@ -1251,8 +1251,8 @@
|
||||
<td>
|
||||
<form class="ajax" onsubmit="submitAttachmentForm(event, this)">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-3">
|
||||
<input type="file" class="file-input__input" name="file" required>
|
||||
<div class="form-group col-5">
|
||||
<input type="file" class="file-input__input" name="file">
|
||||
</div>
|
||||
<div class="form-group col-2">
|
||||
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
|
||||
@ -1295,7 +1295,7 @@
|
||||
|
||||
// Check if a file is selected
|
||||
if (!fileInput.files.length) {
|
||||
toastr.warning("Please select a file to upload.");
|
||||
toastr.warning("Please select a file to upload.", "Validation Error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user