FEAT_PULL_NOTIFICATION : RV
This commit is contained in:
parent
bab41ae375
commit
79854eccff
@ -23,6 +23,10 @@ $routes->get('download-e-card/(:segment)', 'EmployeeController::generateIDCardFo
|
||||
$routes->get('download-kyc-docs/(:segment)', 'ClientController::downloadKYCDocument/$1');
|
||||
|
||||
|
||||
$routes->get('get-notification', 'DashboardController::getDashboardNotifications');
|
||||
$routes->get('acknowledge-notification/(:segment)', 'DashboardController::acknowledgeMessage/$1');
|
||||
|
||||
|
||||
|
||||
$routes->group("/user", ["filter" => "authMVC"], function ($routes) {
|
||||
$routes->post("create", "UserController::create");
|
||||
|
||||
@ -7,12 +7,22 @@ use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
use CodeIgniter\API\ResponseTrait;
|
||||
|
||||
use App\Models\MessageModel;
|
||||
use App\Models\UserMessageModel;
|
||||
|
||||
class DashboardController extends AdminController
|
||||
{
|
||||
|
||||
use ResponseTrait;
|
||||
protected $messageModel;
|
||||
protected $userMessageModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$this->messageModel = new MessageModel();
|
||||
$this->userMessageModel = new UserMessageModel();
|
||||
}
|
||||
|
||||
public function dashboard()
|
||||
@ -22,11 +32,26 @@ class DashboardController extends AdminController
|
||||
echo view('layout/footer');
|
||||
}
|
||||
|
||||
public function dashboardNotifications()
|
||||
public function getDashboardNotifications()
|
||||
{
|
||||
//pull notofications to dashboard especially for file upload cases
|
||||
$userId = get_session_userid();
|
||||
$roleId = 5;
|
||||
$teamId = 1;
|
||||
|
||||
$messages = $this->messageModel->getMessagesForUser($userId, $roleId, $teamId);
|
||||
|
||||
return $this->respond($messages);
|
||||
}
|
||||
|
||||
public function acknowledgeMessage($messageId)
|
||||
{
|
||||
$userId = get_session_userid();
|
||||
|
||||
$this->userMessageModel->markAsRead($userId, $messageId);
|
||||
|
||||
return $this->respond(['status' => 'success']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -22,6 +22,8 @@ use App\Models\BatchFileModel;
|
||||
use App\Models\EmpEndorsementModel;
|
||||
use App\Models\ClientDepositModel;
|
||||
use App\Models\NotificationModel;
|
||||
use App\Models\MessageModel;
|
||||
use App\Models\UserMessageModel;
|
||||
|
||||
use App\Controllers\Jobs;
|
||||
use App\Controllers\JobWorker;
|
||||
@ -48,6 +50,8 @@ class EmpDataServiceController extends BaseController
|
||||
protected $empEndorsementModel;
|
||||
protected $clientDepositModel;
|
||||
protected $notificationModel;
|
||||
protected $messageModel;
|
||||
protected $userMessageModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@ -64,6 +68,8 @@ class EmpDataServiceController extends BaseController
|
||||
$this->empEndorsementModel = new EmpEndorsementModel();
|
||||
$this->clientDepositModel = new ClientDepositModel();
|
||||
$this->notificationModel = new NotificationModel();
|
||||
$this->messageModel = new MessageModel();
|
||||
$this->userMessageModel = new UserMessageModel();
|
||||
}
|
||||
|
||||
|
||||
@ -638,7 +644,10 @@ class EmpDataServiceController extends BaseController
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
$this->myLogger->logme('error', 'importInceptionFileValidation TPAID already updated');
|
||||
|
||||
return 3;
|
||||
$file_data = $this->getDataByFileId($file_id, 'Failure');
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'The list of employees provided has already been updated with the TPA ID, or this is not the correct file';
|
||||
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
@ -649,7 +658,10 @@ class EmpDataServiceController extends BaseController
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
$this->myLogger->logme('error', 'importInceptionFileValidation UHID already updated');
|
||||
|
||||
return 5;
|
||||
$file_data = $this->getDataByFileId($file_id, 'Failure');
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'The list of employees provided has already been updated with the UHID, or this is not the correct file';
|
||||
}
|
||||
|
||||
$this->myLogger->logme('error', 'importInceptionFileValidation UHID or TPAID already updated or the uploadedfile is not correct');
|
||||
@ -685,7 +697,10 @@ class EmpDataServiceController extends BaseController
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
$this->myLogger->logme('error', 'importInceptionFileValidation excel file count ( {excel} ) exceeds db count ( {db} )', ['db' => $emp_data_count, 'excel' => $excel_data_count]);
|
||||
|
||||
return 6;
|
||||
$file_data = $this->getDataByFileId($file_id, 'Failure');
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'The Excel record count exceeds the DB record count. excel file count : ' . $excel_data_count . 'db count : ' . $emp_data_count;
|
||||
}
|
||||
|
||||
|
||||
@ -877,11 +892,17 @@ class EmpDataServiceController extends BaseController
|
||||
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
|
||||
return 2;
|
||||
$file_data = $this->getDataByFileId($file_id, 'Failure');
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'The TPA ID column is either partially or entirely empty.';
|
||||
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
return 4;
|
||||
$file_data = $this->getDataByFileId($file_id, 'Failure');
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'The UHID column is either partially or entirely empty.';
|
||||
}
|
||||
}
|
||||
|
||||
@ -923,6 +944,7 @@ class EmpDataServiceController extends BaseController
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'importInceptionUpdateTPAandUHID','payload' => ['file_id' => $file_id]]);
|
||||
|
||||
|
||||
// $this->importInceptionUpdateTPAandUHID(['file_id' => $file_id]);
|
||||
|
||||
}
|
||||
@ -945,7 +967,10 @@ class EmpDataServiceController extends BaseController
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
$this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID the Physical file not found - file id : {data}', ['data' => $file_id]);
|
||||
|
||||
return 0; // Return error code if file not found
|
||||
$file_data = $this->getDataByFileId($file_id, 'Failure');
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'importInceptionUpdateTPAandUHID the Physical file not found'; // Return error code if file not found
|
||||
}
|
||||
|
||||
$client_id = $file['client_id'];
|
||||
@ -1051,6 +1076,7 @@ class EmpDataServiceController extends BaseController
|
||||
$this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID total amount for cash deposite : {data}', ['data'=> $totals]);
|
||||
|
||||
|
||||
|
||||
if ($file['insurer_or_tpa'] == 'tpa') {
|
||||
|
||||
$this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID set cashDepositCalculationForInception and sendMailForDownloadingECard in JOB QUEUE');
|
||||
@ -1086,10 +1112,12 @@ class EmpDataServiceController extends BaseController
|
||||
// $this->cashDepositCalculationForInception($depositeData);
|
||||
// $this->sendMailForDownloadingECard($empty_emp_tpa_uh_ids);
|
||||
|
||||
|
||||
}
|
||||
|
||||
return 1;
|
||||
$file_data = $this->getDataByFileId($file_id);
|
||||
$this->setPullNotification($file_data);
|
||||
|
||||
return 'Import Inception Updated '. $status_val . '- Updated Count : ' . $emp_count;
|
||||
}
|
||||
|
||||
|
||||
@ -2173,5 +2201,40 @@ class EmpDataServiceController extends BaseController
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function getDataByFileId($file_id, $status = 'Success'){
|
||||
|
||||
$data = $this->batchFileModel
|
||||
->select('batch_files.*, clients.client_name, policies.name as policy_name')
|
||||
->join('clients', 'clients.id = batch_files.client_id')
|
||||
->join('client_policy', 'client_policy.id = batch_files.client_policy_id')
|
||||
->join('policies', 'policies.id = client_policy.policy_id')
|
||||
->where('batch_files.id', $file_id)
|
||||
->first();
|
||||
|
||||
$msg_txt = 'Client : '. $data['client_name'] . ', Client policy : '. $data['policy_name'] . ', Event : ' . $data['event_type'] . ', Action : ' .$data['actions'] . ', Insure or TPA : ' . $data['insurer_or_tpa'] . ' Status : ' . $status;
|
||||
$user_id = $data['created_by'];
|
||||
$url = 'employee/upload#KYC-DOC-tab';
|
||||
|
||||
return ['msg_txt' => $msg_txt, 'user_id' => $user_id, 'url' => $url];
|
||||
}
|
||||
|
||||
|
||||
public function setPullNotification($data){
|
||||
|
||||
$msg_data = [
|
||||
'message_text' => $data['msg_txt'],
|
||||
'user_id' => $data['user_id'],
|
||||
'role_id' => NULL,
|
||||
'team_id' => NULL,
|
||||
'message_type' => '1to1',
|
||||
'action_url' => $data['url'],
|
||||
];
|
||||
|
||||
$this->messageModel->insert($msg_data);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -898,6 +898,7 @@ class EmployeeController extends AdminController
|
||||
'{CORPORATE_NAME}' =>$value['client_name'],
|
||||
'{AGE}' =>$value['emp_age'],
|
||||
'{TPA_NAME}' =>$value['emp_age'],
|
||||
'{TPA_LOGO}' => base_url() . 'public/uploads/logo/' . $value['tpa_logo'],
|
||||
];
|
||||
|
||||
// Replace placeholders with values in HTML content
|
||||
|
||||
76
app/Models/MessageModel.php
Normal file
76
app/Models/MessageModel.php
Normal file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class MessageModel extends Model
|
||||
{
|
||||
protected $table = 'messages';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useAutoIncrement = true;
|
||||
protected $returnType = 'array';
|
||||
protected $useSoftDeletes = false;
|
||||
protected $protectFields = true;
|
||||
protected $allowedFields = [
|
||||
|
||||
'id',
|
||||
'message_text',
|
||||
'user_id',
|
||||
'role_id',
|
||||
'team_id',
|
||||
'message_type',
|
||||
'created_at',
|
||||
'action_url',
|
||||
|
||||
];
|
||||
|
||||
protected bool $allowEmptyInserts = false;
|
||||
|
||||
// Dates
|
||||
protected $useTimestamps = false;
|
||||
protected $dateFormat = 'datetime';
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
// Validation
|
||||
protected $validationRules = [];
|
||||
protected $validationMessages = [];
|
||||
protected $skipValidation = false;
|
||||
protected $cleanValidationRules = true;
|
||||
|
||||
// Callbacks
|
||||
protected $allowCallbacks = true;
|
||||
protected $beforeInsert = [];
|
||||
protected $afterInsert = [];
|
||||
protected $beforeUpdate = [];
|
||||
protected $afterUpdate = [];
|
||||
protected $beforeFind = [];
|
||||
protected $afterFind = [];
|
||||
protected $beforeDelete = [];
|
||||
protected $afterDelete = [];
|
||||
|
||||
|
||||
|
||||
public function getMessagesForUser($userId, $roleId, $teamId)
|
||||
{
|
||||
$builder = $this->db->table($this->table);
|
||||
$builder->select('messages.*');
|
||||
$builder->join('user_messages', 'user_messages.message_id = messages.id AND user_messages.user_id = ' . $this->db->escape($userId), 'left');
|
||||
$builder->groupStart();
|
||||
$builder->where('user_messages.is_read', null);
|
||||
$builder->orWhere('user_messages.is_read', 0);
|
||||
$builder->groupEnd();
|
||||
$builder->groupStart();
|
||||
$builder->orwhere('messages.message_type', 'broadcast');
|
||||
$builder->orWhere('messages.user_id', $userId);
|
||||
$builder->orWhere('messages.role_id', $roleId);
|
||||
$builder->orWhere('messages.team_id', $teamId);
|
||||
$builder->groupEnd();
|
||||
|
||||
$query = $builder->get();
|
||||
return $query->getResult();
|
||||
dd($this->db->getLastQuery());
|
||||
}
|
||||
}
|
||||
69
app/Models/UserMessageModel.php
Normal file
69
app/Models/UserMessageModel.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class UserMessageModel extends Model
|
||||
{
|
||||
protected $table = 'user_messages';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useAutoIncrement = true;
|
||||
protected $returnType = 'array';
|
||||
protected $useSoftDeletes = false;
|
||||
protected $protectFields = true;
|
||||
protected $allowedFields = [
|
||||
'id',
|
||||
'message_id',
|
||||
'user_id',
|
||||
'is_read',
|
||||
'read_at',
|
||||
];
|
||||
|
||||
protected bool $allowEmptyInserts = false;
|
||||
|
||||
// Dates
|
||||
protected $useTimestamps = false;
|
||||
protected $dateFormat = 'datetime';
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
// Validation
|
||||
protected $validationRules = [];
|
||||
protected $validationMessages = [];
|
||||
protected $skipValidation = false;
|
||||
protected $cleanValidationRules = true;
|
||||
|
||||
// Callbacks
|
||||
protected $allowCallbacks = true;
|
||||
protected $beforeInsert = [];
|
||||
protected $afterInsert = [];
|
||||
protected $beforeUpdate = [];
|
||||
protected $afterUpdate = [];
|
||||
protected $beforeFind = [];
|
||||
protected $afterFind = [];
|
||||
protected $beforeDelete = [];
|
||||
protected $afterDelete = [];
|
||||
|
||||
|
||||
public function markAsRead($userId, $messageId)
|
||||
{
|
||||
$data = [
|
||||
'is_read' => 1,
|
||||
'read_at' => date('Y-m-d H:i:s')
|
||||
];
|
||||
|
||||
$existingEntry = $this->where('user_id', $userId)
|
||||
->where('message_id', $messageId)
|
||||
->first();
|
||||
|
||||
if ($existingEntry) {
|
||||
return $this->update($existingEntry['id'], $data);
|
||||
} else {
|
||||
$data['user_id'] = $userId;
|
||||
$data['message_id'] = $messageId;
|
||||
return $this->insert($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,42 +1,49 @@
|
||||
<style>
|
||||
|
||||
.table th, .table td {
|
||||
.table th,
|
||||
.table td {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table.dataTable tbody td {
|
||||
padding: 4px 4px !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="row" id="client_add" style="position: relative; bottom: 25px;">
|
||||
<div class="col-12">
|
||||
<div class="card-body">
|
||||
<ul class="nav nav-pills navtab-bg">
|
||||
<li class="nav-item">
|
||||
<a href="#general-q-tab" data-toggle="tab" aria-expanded="false"
|
||||
class="nav-link px-3 py-2 active" id="general_tab">
|
||||
<span class="mr-1"><i class="mdi mdi-contacts"></i></span>
|
||||
<span class="d-none d-sm-inline-block">Data From Client</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#KYC-DOC-tab" data-toggle="tab" aria-expanded="true" class="nav-link px-3 py-2" id="kyc_tab">
|
||||
<span class="mr-1"><i class="fa fa-file"></i></span>
|
||||
<span class="d-none d-sm-inline-block">Insurer or TPA Data</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<?php include('employee_upload.php'); ?>
|
||||
<?php include('insurer_or_tpa_data.php'); ?>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="nav nav-pills navtab-bg">
|
||||
<li class="nav-item">
|
||||
<a href="#general-q-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2 active" id="general_tab">
|
||||
<span class="mr-1"><i class="mdi mdi-contacts"></i></span>
|
||||
<span class="d-none d-sm-inline-block">Data From Client</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#KYC-DOC-tab" data-toggle="tab" aria-expanded="true" class="nav-link px-3 py-2" id="kyc_tab">
|
||||
<span class="mr-1"><i class="fa fa-file"></i></span>
|
||||
<span class="d-none d-sm-inline-block">Insurer or TPA Data</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<?php include('employee_upload.php'); ?>
|
||||
<?php include('insurer_or_tpa_data.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
if (window.location.hash === '#KYC-DOC-tab') {
|
||||
console.log(window.location.hash)
|
||||
$('#kyc_tab').click();
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
@ -7,7 +7,9 @@
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<script>document.write(new Date().getFullYear())</script> © NHANCE
|
||||
<script>
|
||||
document.write(new Date().getFullYear())
|
||||
</script> © NHANCE
|
||||
</div>
|
||||
<!-- <div class="col-md-6">
|
||||
<div class="text-md-right footer-links d-none d-sm-block">
|
||||
@ -31,453 +33,79 @@
|
||||
</div>
|
||||
<!-- END wrapper -->
|
||||
|
||||
<!-- Right Sidebar -->
|
||||
<div class="right-bar">
|
||||
<div data-simplebar class="h-100">
|
||||
<!-- Right Sidebar -->
|
||||
<div class="right-bar">
|
||||
<div data-simplebar class="h-100">
|
||||
|
||||
<!-- Nav tabs -->
|
||||
<ul class="nav nav-tabs nav-bordered nav-justified" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link py-2" data-toggle="tab" href="#chat-tab" role="tab">
|
||||
<i class="mdi mdi-message-text-outline d-block font-22 my-1"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link py-2" data-toggle="tab" href="#tasks-tab" role="tab">
|
||||
<i class="mdi mdi-format-list-checkbox d-block font-22 my-1"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link py-2 active" data-toggle="tab" href="#settings-tab" role="tab">
|
||||
<i class="mdi mdi-cog-outline d-block font-22 my-1"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- Tab panes -->
|
||||
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light">
|
||||
<i class="mdi mdi-message-text-outline font-22"></i><span class="" style="position: relative;bottom: 5px;left: 60px;">Notification</span>
|
||||
</h6>
|
||||
|
||||
<!-- Tab panes -->
|
||||
<div class="tab-content pt-0">
|
||||
<div class="tab-pane" id="chat-tab" role="tabpanel">
|
||||
|
||||
<form class="search-bar p-3">
|
||||
<div class="position-relative">
|
||||
<input type="text" class="form-control" placeholder="Search...">
|
||||
<span class="mdi mdi-magnify"></span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h6 class="font-weight-medium px-3 mt-2 text-uppercase">Group Chats</h6>
|
||||
|
||||
<div class="p-2">
|
||||
<a href="javascript: void(0);" class="text-reset notification-item pl-3 mb-2 d-block">
|
||||
<i class="mdi mdi-checkbox-blank-circle-outline mr-1 text-success"></i>
|
||||
<span class="mb-0 mt-1">App Development</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item pl-3 mb-2 d-block">
|
||||
<i class="mdi mdi-checkbox-blank-circle-outline mr-1 text-warning"></i>
|
||||
<span class="mb-0 mt-1">Office Work</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item pl-3 mb-2 d-block">
|
||||
<i class="mdi mdi-checkbox-blank-circle-outline mr-1 text-danger"></i>
|
||||
<span class="mb-0 mt-1">Personal Group</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item pl-3 d-block">
|
||||
<i class="mdi mdi-checkbox-blank-circle-outline mr-1"></i>
|
||||
<span class="mb-0 mt-1">Freelance</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h6 class="font-weight-medium px-3 mt-3 text-uppercase">Favourites <a href="javascript: void(0);" class="font-18 text-danger"><i class="float-right mdi mdi-plus-circle"></i></a></h6>
|
||||
|
||||
<div class="p-2">
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-10.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Andrew Mackie</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">It will seem like simplified English.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-1.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Rory Dalyell</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">To an English person, it will seem like simplified</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status busy"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-9.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Jaxon Dunhill</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">To achieve this, it would be necessary.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h6 class="font-weight-medium px-3 mt-3 text-uppercase">Other Chats <a href="javascript: void(0);" class="font-18 text-danger"><i class="float-right mdi mdi-plus-circle"></i></a></h6>
|
||||
|
||||
<div class="p-2 pb-4">
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status online"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-2.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Jackson Therry</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">Everyone realizes why a new common language.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status away"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-4.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Charles Deakin</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">The languages only differ in their grammar.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status online"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-5.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Ryan Salting</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">If several languages coalesce the grammar of the resulting.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status online"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-6.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Sean Howse</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">It will seem like simplified English.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status busy"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-7.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Dean Coward</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">The new common language will be more simple.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset notification-item">
|
||||
<div class="media">
|
||||
<div class="position-relative mr-2">
|
||||
<span class="user-status away"></span>
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-8.jpg" class="rounded-circle avatar-sm" alt="user-pic">
|
||||
</div>
|
||||
<div class="media-body overflow-hidden">
|
||||
<h6 class="mt-0 mb-1 font-14">Hayley East</h6>
|
||||
<div class="font-13 text-muted">
|
||||
<p class="mb-0 text-truncate">One could refuse to pay expensive translators.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="text-center mt-3">
|
||||
<a href="javascript:void(0);" class="btn btn-sm btn-white">
|
||||
<i class="mdi mdi-spin mdi-loading mr-2"></i>
|
||||
Load more
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tasks-tab" role="tabpanel">
|
||||
<h6 class="font-weight-medium p-3 m-0 text-uppercase">Working Tasks</h6>
|
||||
<div class="px-2">
|
||||
<a href="javascript: void(0);" class="text-reset item-hovered d-block p-2">
|
||||
<p class="text-muted mb-0">App Development<span class="float-right">75%</span></p>
|
||||
<div class="progress mt-2" style="height: 4px;">
|
||||
<div class="progress-bar bg-success" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset item-hovered d-block p-2">
|
||||
<p class="text-muted mb-0">Database Repair<span class="float-right">37%</span></p>
|
||||
<div class="progress mt-2" style="height: 4px;">
|
||||
<div class="progress-bar bg-info" role="progressbar" style="width: 37%" aria-valuenow="37" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset item-hovered d-block p-2">
|
||||
<p class="text-muted mb-0">Backup Create<span class="float-right">52%</span></p>
|
||||
<div class="progress mt-2" style="height: 4px;">
|
||||
<div class="progress-bar bg-warning" role="progressbar" style="width: 52%" aria-valuenow="52" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h6 class="font-weight-medium px-3 mb-0 mt-4 text-uppercase">Upcoming Tasks</h6>
|
||||
|
||||
<div class="p-2">
|
||||
<a href="javascript: void(0);" class="text-reset item-hovered d-block p-2">
|
||||
<p class="text-muted mb-0">Sales Reporting<span class="float-right">12%</span></p>
|
||||
<div class="progress mt-2" style="height: 4px;">
|
||||
<div class="progress-bar bg-danger" role="progressbar" style="width: 12%" aria-valuenow="12" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset item-hovered d-block p-2">
|
||||
<p class="text-muted mb-0">Redesign Website<span class="float-right">67%</span></p>
|
||||
<div class="progress mt-2" style="height: 4px;">
|
||||
<div class="progress-bar bg-primary" role="progressbar" style="width: 67%" aria-valuenow="67" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="javascript: void(0);" class="text-reset item-hovered d-block p-2">
|
||||
<p class="text-muted mb-0">New Admin Design<span class="float-right">84%</span></p>
|
||||
<div class="progress mt-2" style="height: 4px;">
|
||||
<div class="progress-bar bg-success" role="progressbar" style="width: 84%" aria-valuenow="84" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="p-3 mt-2">
|
||||
<a href="javascript: void(0);" class="btn btn-success btn-block waves-effect waves-light">Create Task</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane active" id="settings-tab" role="tabpanel">
|
||||
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light">
|
||||
<span class="d-block py-1">Theme Settings</span>
|
||||
</h6>
|
||||
|
||||
<div class="p-3">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<strong>Customize </strong> the overall color scheme, sidebar menu, etc.
|
||||
</div>
|
||||
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Color Scheme</h6>
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="color-scheme-mode" value="light"
|
||||
id="light-mode-check" checked />
|
||||
<label class="custom-control-label" for="light-mode-check">Light Mode</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="color-scheme-mode" value="dark"
|
||||
id="dark-mode-check" />
|
||||
<label class="custom-control-label" for="dark-mode-check">Dark Mode</label>
|
||||
</div>
|
||||
|
||||
<!-- Width -->
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Width</h6>
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="width" value="fluid" id="fluid-check" checked />
|
||||
<label class="custom-control-label" for="fluid-check">Fluid</label>
|
||||
</div>
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="width" value="boxed" id="boxed-check" />
|
||||
<label class="custom-control-label" for="boxed-check">Boxed</label>
|
||||
</div>
|
||||
|
||||
<!-- Topbar -->
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Topbar</h6>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="topbar-color" value="dark" id="darktopbar-check"
|
||||
checked />
|
||||
<label class="custom-control-label" for="darktopbar-check">Dark</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="topbar-color" value="light" id="lighttopbar-check" />
|
||||
<label class="custom-control-label" for="lighttopbar-check">Light</label>
|
||||
</div>
|
||||
|
||||
<!-- Menu positions -->
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Menus Positon <small>(Leftsidebar and Topbar)</small></h6>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="menus-position" value="fixed" id="fixed-check"
|
||||
checked />
|
||||
<label class="custom-control-label" for="fixed-check">Fixed</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="menus-position" value="scrollable"
|
||||
id="scrollable-check" />
|
||||
<label class="custom-control-label" for="scrollable-check">Scrollable</label>
|
||||
</div>
|
||||
|
||||
<!-- Left Sidebar-->
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Left Sidebar Color</h6>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-color" value="light" id="light-check" checked />
|
||||
<label class="custom-control-label" for="light-check">Light</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-color" value="dark" id="dark-check" />
|
||||
<label class="custom-control-label" for="dark-check">Dark</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-color" value="brand" id="brand-check" />
|
||||
<label class="custom-control-label" for="brand-check">Brand</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-3">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-color" value="gradient" id="gradient-check" />
|
||||
<label class="custom-control-label" for="gradient-check">Gradient</label>
|
||||
</div>
|
||||
|
||||
<!-- size -->
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Left Sidebar Size</h6>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-size" value="default"
|
||||
id="default-size-check" checked />
|
||||
<label class="custom-control-label" for="default-size-check">Default</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-size" value="condensed"
|
||||
id="condensed-check" />
|
||||
<label class="custom-control-label" for="condensed-check">Condensed <small>(Extra Small size)</small></label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="radio" class="custom-control-input" name="leftsidebar-size" value="compact"
|
||||
id="compact-check" />
|
||||
<label class="custom-control-label" for="compact-check">Compact <small>(Small size)</small></label>
|
||||
</div>
|
||||
|
||||
<!-- User info -->
|
||||
<h6 class="font-weight-medium font-14 mt-4 mb-2 pb-1">Sidebar User Info</h6>
|
||||
|
||||
<div class="custom-control custom-switch mb-1">
|
||||
<input type="checkbox" class="custom-control-input" name="leftsidebar-user" value="fixed" id="sidebaruser-check" />
|
||||
<label class="custom-control-label" for="sidebaruser-check">Enable</label>
|
||||
</div>
|
||||
|
||||
|
||||
<button class="btn btn-primary btn-block mt-4" id="resetBtn">Reset to Default</button>
|
||||
|
||||
<a href=""
|
||||
class="btn btn-danger btn-block mt-2" target="_blank"><i class="mdi mdi-basket mr-1"></i> Purchase Now</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- end slimscroll-menu-->
|
||||
<div id="header-bar">
|
||||
<div>
|
||||
<ul class="list-unstyled" id="messages-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Right-bar -->
|
||||
|
||||
|
||||
|
||||
</div> <!-- end slimscroll-menu-->
|
||||
</div>
|
||||
<!-- /Right-bar -->
|
||||
|
||||
<!-- Right bar overlay-->
|
||||
<div class="rightbar-overlay"></div>
|
||||
|
||||
<!-- Vendor js -->
|
||||
<script src="<?= base_url()."public"; ?>/assets/js/vendor.min.js"></script>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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 init -->
|
||||
<!-- <script src="<?= base_url()."public"; ?>/assets/js/pages/datatables.init.js"></script> -->
|
||||
<!-- <script src="<?= base_url() . "public"; ?>/assets/js/pages/datatables.init.js"></script> -->
|
||||
|
||||
|
||||
<script src="<?= base_url()."public"; ?>/assets/js/pages/tickets.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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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" />
|
||||
<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">
|
||||
@ -489,16 +117,12 @@
|
||||
<!-- bootstrap datepicker -->
|
||||
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.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>
|
||||
<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>
|
||||
|
||||
<!-- Jodit Js -->
|
||||
<script src="<?= base_url()."public"; ?>/assets/js/jodit.min.js"></script>
|
||||
|
||||
<script src="<?= base_url()."public"; ?>/assets/libs/quill/quill.min.js"></script>
|
||||
<script src="<?= base_url()."public"; ?>/assets/js/pages/form-quilljs.init.js"></script>
|
||||
|
||||
<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>
|
||||
@ -506,13 +130,140 @@
|
||||
|
||||
|
||||
<script>
|
||||
toastr.options = {
|
||||
"timeOut": 5000,
|
||||
"closeButton": true,
|
||||
};
|
||||
|
||||
toastr.options = {
|
||||
"timeOut": 5000,
|
||||
"closeButton": true,
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
// setInterval(function(){
|
||||
// count++;
|
||||
// $('#notification_count').html(count);
|
||||
// }, 1000); // 2000 milliseconds = 2 seconds
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
function fetchMessages() {
|
||||
$.ajax({
|
||||
url: '<?= base_url('get-notification/') ?>',
|
||||
method: 'GET',
|
||||
success: function(response) {
|
||||
|
||||
// console.log('responce', response.length)
|
||||
|
||||
let unreadCount = 0;
|
||||
let messagesList = $('#messages-list');
|
||||
messagesList.empty();
|
||||
|
||||
var html = "";
|
||||
|
||||
response.forEach(message => {
|
||||
|
||||
if (!message.is_read) {
|
||||
unreadCount++;
|
||||
}
|
||||
|
||||
var html = ` <li data-id="${message.id}" data-url="${message.action_url}">
|
||||
<div class="p-3">
|
||||
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto"></strong>
|
||||
<small>${formatDate(message.created_at)}</small>
|
||||
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
${message.message_text}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>`
|
||||
|
||||
|
||||
messagesList.append(html);
|
||||
});
|
||||
|
||||
$('#notification_count').html(unreadCount);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function acknowledgeMessage(messageId) {
|
||||
$.ajax({
|
||||
url: '<?= base_url('acknowledge-notification/') ?>' + messageId,
|
||||
method: 'GET',
|
||||
success: function(response) {
|
||||
fetchMessages();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#messages-list').on('click', 'li', function(event) {
|
||||
|
||||
if ($(event.target).closest('.rm_msg').length > 0) {
|
||||
|
||||
console.log('.rm_msg')
|
||||
|
||||
$(this).delay(300).fadeOut('slow', function() {
|
||||
$(this).remove();
|
||||
});
|
||||
|
||||
} else{
|
||||
|
||||
console.log('url')
|
||||
|
||||
let messageId = $(this).data('id');
|
||||
let url = $(this).data('url');
|
||||
acknowledgeMessage(messageId);
|
||||
|
||||
window.location.href = '<?= base_url() ?>' + url;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
fetchMessages();
|
||||
|
||||
setInterval(fetchMessages, 5000); // Fetch messages every minute
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
function formatDate(dateString) {
|
||||
// Parse the input date string
|
||||
let date = new Date(dateString);
|
||||
|
||||
// Define months array
|
||||
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
||||
|
||||
// Extract day, month, year, hours, and minutes
|
||||
let day = date.getDate();
|
||||
let month = months[date.getMonth()];
|
||||
let year = date.getFullYear();
|
||||
let hours = date.getHours();
|
||||
let minutes = date.getMinutes();
|
||||
|
||||
// Convert hours to 12-hour format
|
||||
let period = hours >= 12 ? 'pm' : 'am';
|
||||
hours = hours % 12;
|
||||
hours = hours ? hours : 12; // Handle midnight (0 hours)
|
||||
|
||||
// Format the time string
|
||||
let timeString = ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2) + ' ' + period;
|
||||
|
||||
// Format the date string
|
||||
let formattedDate = day + '-' + month + '-' + year + ' ' + timeString;
|
||||
|
||||
return formattedDate;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -43,10 +43,6 @@
|
||||
<!-- Jodit Css -->
|
||||
<link href="<?= base_url()."public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
|
||||
<link href="<?= base_url()."public"; ?>/assets/libs/quill/quill.snow.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
|
||||
|
||||
<!-- JQuery CDN -->
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
@ -236,6 +232,19 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
.toast-body {
|
||||
padding: .75rem;
|
||||
background: aliceblue !important;
|
||||
}
|
||||
|
||||
#messages-list li {
|
||||
margin-top: 0;
|
||||
margin-bottom: -25px; /* Adjust this value to reduce the space */
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(window).on('load', function() {
|
||||
setTimeout(function() {
|
||||
@ -245,7 +254,6 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
@ -330,88 +338,12 @@
|
||||
</form>
|
||||
</li>
|
||||
|
||||
<!-- <li class="dropdown notification-list topbar-dropdown">
|
||||
<a class="nav-link dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<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">1</span>
|
||||
<span class="badge badge-danger rounded-circle noti-icon-badge" id="notification_count">0</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right dropdown-lg">
|
||||
|
||||
<div class="dropdown-item noti-title">
|
||||
<h5 class="m-0">
|
||||
<span class="float-right">
|
||||
<a href="" class="text-dark">
|
||||
<small>Clear All</small>
|
||||
</a>
|
||||
</span>Notification
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="noti-scroll" data-simplebar>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item active">
|
||||
<div class="notify-icon bg-soft-primary text-primary">
|
||||
<i class="mdi mdi-comment-account-outline"></i>
|
||||
</div>
|
||||
<p class="notify-details">Doug Dukes commented on Admin Dashboard
|
||||
<small class="text-muted">1 min ago</small>
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="notify-icon">
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-2.jpg" class="img-fluid rounded-circle" alt="" /> </div>
|
||||
<p class="notify-details">Mario Drummond</p>
|
||||
<p class="text-muted mb-0 user-msg">
|
||||
<small>Hi, How are you? What about our next meeting</small>
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="notify-icon">
|
||||
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-4.jpg" class="img-fluid rounded-circle" alt="" /> </div>
|
||||
<p class="notify-details">Karen Robinson</p>
|
||||
<p class="text-muted mb-0 user-msg">
|
||||
<small>Wow ! this admin looks good and awesome design</small>
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="notify-icon bg-soft-warning text-warning">
|
||||
<i class="mdi mdi-account-plus"></i>
|
||||
</div>
|
||||
<p class="notify-details">New user registered.
|
||||
<small class="text-muted">5 hours ago</small>
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="notify-icon bg-info">
|
||||
<i class="mdi mdi-comment-account-outline"></i>
|
||||
</div>
|
||||
<p class="notify-details">Caleb Flakelar commented on Admin
|
||||
<small class="text-muted">4 days ago</small>
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item">
|
||||
<div class="notify-icon bg-secondary">
|
||||
<i class="mdi mdi-heart"></i>
|
||||
</div>composer create-project laravel/laravel:^11.0 example-app
|
||||
<p class="notify-details">Carlos Crouch liked
|
||||
<b>Admin</b>
|
||||
<small class="text-muted">13 days ago</small>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<a href="javascript:void(0);" class="dropdown-item text-center text-primary notify-item notify-all">
|
||||
View all
|
||||
<i class="fe-arrow-right"></i>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</li> -->
|
||||
</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">
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-row" id="view_pre_btn" style="display :none">
|
||||
<div class="form-group col-md-4">
|
||||
<a href="<?= isset($tpa['id']) ? base_url('/util/preview-card/') . $tpa['id'] : '' ?>" class="btn btn-primary" id="preview" target="_blank">Preview</a>
|
||||
</div>
|
||||
@ -99,6 +99,11 @@
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
if($('#tpa_General_PrimaryKey').val() != ""){
|
||||
|
||||
$('#view_pre_btn').show()
|
||||
}
|
||||
|
||||
$("#tpa_general_form").submit(function(events) {
|
||||
|
||||
events.preventDefault();
|
||||
@ -126,6 +131,12 @@
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function(res) {
|
||||
|
||||
if($('#tpa_General_PrimaryKey').val() == ""){
|
||||
|
||||
window.location.href = '<?= base_url("master/tpa/list/"); ?>' + res.data.id;
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
|
||||
118
writable/e_card_template/hcl.html
Normal file
118
writable/e_card_template/hcl.html
Normal file
@ -0,0 +1,118 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>vidal Ecard</title>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="display: flex;gap: 5px;width: 840px;justify-content: center;margin: 0 auto;">
|
||||
<div class="card" style="border: 1px solid #50505059;width: 420px;min-height: 280px; padding:10px 10px 0px 10px;background-image: url(../image/vidal\ background\ image.jpg);background-position: center;background-size: cover;">
|
||||
|
||||
<div><img src="../image/New_India_Assurance.png" alt="" width="70px" height="70px" style="position: absolute;object-fit: fill;right: 16px;top: 17px;"></div>
|
||||
<h6 style="margin-top: 20px;margin-bottom: 26px;font-weight: 700;font-size: 14px;">THE NEW INDIA COMPANY PRIVATE LIMITED</h6>
|
||||
|
||||
<table style="font-size: 14px;margin-top:9px ;margin-left: 20px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Card No</td>
|
||||
<td>:</td>
|
||||
<td>CHE-NI-K0674-001-0000003-A</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>:</td>
|
||||
<td>BHODANADHAN S</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gender</td>
|
||||
<td>:</td>
|
||||
<td>M</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>age</td>
|
||||
<td>:</td>
|
||||
<td>53 years</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Employee code</td>
|
||||
<td>:</td>
|
||||
<td>1015</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Corporate name</td>
|
||||
<td>:</td>
|
||||
<td>KELD ELLENTOFT INDIA PVT LTD</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Valid form</td>
|
||||
<td>:</td>
|
||||
<td>28-04-2024</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="position: absolute;bottom: 11px;right: 11px;"><img src="../image/logo.png" alt="" width="170px" height="30px" style="object-fit: fill;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card" style="border: 1px solid #50505059;width:420px;min-height: 280px; padding: 0px 20px 5px 0px;">
|
||||
<h6 style="text-align: center;font-weight: 700;margin: 0px;font-size: 14px;"><u>Terms&conditions</u></h6>
|
||||
<ul style="font-size: 11px;text-align: justify;font-weight: bolder;font-weight: 600;line-height: 13px;margin-bottom: 5px;">
|
||||
<li>Submit this card & photo ID for availing cashless insurrer empanelled hospitals</li>
|
||||
<li>Cashless facility is subject to approved by vidal health as per policy terms and conditions</li>
|
||||
<li>Validdity of this card is subject to valid policy renewal of policy</li>
|
||||
<li>imidiate intimation to vidal health is must incase of any hospitalisation</li>
|
||||
<li>Download the vidal health mobile app from android iOS to get an E-Card check your policy claim status, Hospital list and more, Give a missed call to 022-4892-6099 from your registered mobile number, or visit www.vidalhealthpa.com,or scan << Qr code on corner >></li>
|
||||
</ul>
|
||||
<div >
|
||||
<img src="../image/logo.png" alt="" width="100px" height="25px" style="object-fit: fill; rotate: -90deg; position: absolute;left: -34px;bottom: 77px;">
|
||||
</div>
|
||||
<div style="font-size: 10px;font-weight: bold; line-height: 10px;margin-left: 40px;width: 70%;">
|
||||
<div><u>24x7 help line no</u> </div>
|
||||
<div>
|
||||
<div>
|
||||
<span>karnataka/andrapradesh/telangana</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267018/1860425051</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>North and east region/gujarat</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267021/18604250261</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>Maharastra</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267020/18604250254</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>Tamil Nadu</span style="padding: 0px 5px 0px 5px ;">:<span></span><span style="font-weight: 400;">080-46267020/18604250254</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>Kerala</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267019/18604250253</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>S.R citizen</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-4626-7070</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="font-weight: 400;">vidal health insurance <b>TPA</b> pvt limited,tower no 2,</span>
|
||||
<br>
|
||||
<span style="font-weight: 400;">First Floor,<b>SJR </b>ipark,<b>EPIP </b>zone ,whitefield,bangalore,</span>
|
||||
<br>
|
||||
</div>
|
||||
<div>
|
||||
<span style="font-weight: 400;"><b>email:</b>helpvidalhealthpa@gmail.com</span><span style="padding: 0px 5px 0px 5px ;">/</span><span style="font-weight: 400;"><b>website:</b>WWW.vidalhealthp.com</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div><img src="../image/2-play store.png" alt="" width="80px" height="80px" style="position: absolute;top: 158px; right: 90px;"></div>
|
||||
<div><img src="../image/2-appstore.png" alt="" width="76px" height="80px" style="position: absolute;right: 10px;top:158px;"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
0
writable/e_card_template/tt786.html
Normal file
0
writable/e_card_template/tt786.html
Normal file
Loading…
Reference in New Issue
Block a user