Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev
This commit is contained in:
commit
7de7358cd8
@ -101,6 +101,6 @@ class Autoload extends AutoloadConfig
|
|||||||
* @phpstan-var list<string>
|
* @phpstan-var list<string>
|
||||||
*/
|
*/
|
||||||
public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload',
|
public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload',
|
||||||
'excel_import_export', 'file', 'drive','ExcelSanitizeHelper', 'api_helper','exception'
|
'excel_import_export', 'file', 'drive','ExcelSanitizeHelper', 'api_helper','exception','sms_helper'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,11 +90,13 @@ $routes->group("/dashboard", ["filter" => "authMVC"], function ($routes) {
|
|||||||
$routes->group("/client", ["filter" => "authMVC"], function ($routes) {
|
$routes->group("/client", ["filter" => "authMVC"], function ($routes) {
|
||||||
|
|
||||||
$routes->get("list", "ClientController::index");
|
$routes->get("list", "ClientController::index");
|
||||||
|
$routes->get("type/(:any)", "ClientController::type/$1");
|
||||||
$routes->get("create", "ClientController::clientOnboarding");
|
$routes->get("create", "ClientController::clientOnboarding");
|
||||||
$routes->get('deposit/(:num)', 'ClientController::deposit/$1');
|
$routes->get('deposit/(:num)', 'ClientController::deposit/$1');
|
||||||
$routes->get('remove/(:num)', 'ClientController::removeClient/$1');
|
$routes->get('remove/(:num)', 'ClientController::removeClient/$1');
|
||||||
$routes->get("list/(:any)", "ClientController::editClientOnboarding/$1");
|
$routes->get("list/(:any)", "ClientController::editClientOnboarding/$1");
|
||||||
$routes->post('wipe', 'ClientController::wipeDemoClient');
|
$routes->post('wipe', 'ClientController::wipeDemoClient');
|
||||||
|
$routes->get("typeList/(:any)", "ClientController::typeList/$1");
|
||||||
|
|
||||||
// application/config/routes.php
|
// application/config/routes.php
|
||||||
|
|
||||||
|
|||||||
@ -471,7 +471,7 @@ class ClientController extends AdminController
|
|||||||
$this->myLogger->logme('error', 'Client list function called');
|
$this->myLogger->logme('error', 'Client list function called');
|
||||||
$headerData['tab_name'] = 'Client List';
|
$headerData['tab_name'] = 'Client List';
|
||||||
$headerData['page_name'] = 'Clients'; // Both Browser Tab name And Page name are same.
|
$headerData['page_name'] = 'Clients'; // Both Browser Tab name And Page name are same.
|
||||||
$data['clientList'] = $this->clientModel->getCreatedByUserName();
|
$data['clientList'] = $this->clientModel->getCreatedByUserName(1); // passing client_type
|
||||||
$data['client_rm'] = $this->clientRMModel->getAllClientRM();
|
$data['client_rm'] = $this->clientRMModel->getAllClientRM();
|
||||||
$data['lead_data'] = $this->leadsModel->getLeadForInsertClientList();
|
$data['lead_data'] = $this->leadsModel->getLeadForInsertClientList();
|
||||||
|
|
||||||
@ -484,6 +484,29 @@ class ClientController extends AdminController
|
|||||||
// $this->loadLayout('client_onboarding', $data);
|
// $this->loadLayout('client_onboarding', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function typeList($id = null)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data = $this->clientModel->getCreatedByUserName($id); // passing client_type
|
||||||
|
if (empty($data)) {
|
||||||
|
return $this->response
|
||||||
|
->setJSON(['status' => 'error', 'message' => 'No Records found'])
|
||||||
|
->setStatusCode(404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->response
|
||||||
|
->setJSON(['status' => 'success', 'data' => $data])
|
||||||
|
->setStatusCode(200);
|
||||||
|
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
return $this->response
|
||||||
|
->setJSON(['status' => 'error', 'message' => $e->getMessage()])
|
||||||
|
->setStatusCode(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function updateEmpAndPolicyStatus()
|
public function updateEmpAndPolicyStatus()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -801,6 +824,8 @@ class ClientController extends AdminController
|
|||||||
$editData['api_data'] = $this->clientApi->where("client_id", $id)->where("is_active", 1)->first();
|
$editData['api_data'] = $this->clientApi->where("client_id", $id)->where("is_active", 1)->first();
|
||||||
// dd($editData);
|
// dd($editData);
|
||||||
|
|
||||||
|
$edit['pre_branch_id'] = $this->clientBranchModel->select('pre_branch_id')->where('client_id',$id)->get()->getResultArray()[0]['pre_branch_id']??"";
|
||||||
|
|
||||||
$editData['auto_fetch_client_list'] = $this->getClientListFromPre();
|
$editData['auto_fetch_client_list'] = $this->getClientListFromPre();
|
||||||
|
|
||||||
|
|
||||||
@ -6857,7 +6882,15 @@ class ClientController extends AdminController
|
|||||||
return $combinedHrAccessData;
|
return $combinedHrAccessData;
|
||||||
}
|
}
|
||||||
|
|
||||||
$pre_client_data = $db2->table('clients')->where('is_active', 1)->where('short_name', $post_client_data['short_name'])->get()->getRowArray();
|
$post_branch = $this->clientBranchModel->select('pre_branch_id')->where('client_id',$client_id)->get()->getResultArray()[0]??[];
|
||||||
|
|
||||||
|
$pre_client_data = $db2->table('client_branch cb')
|
||||||
|
->join('clients c', "c.id = cb.client_id")
|
||||||
|
->where('c.is_active',1)
|
||||||
|
->where('cb.is_active', 1)
|
||||||
|
->where('cb.id', $post_branch['pre_branch_id']??'')
|
||||||
|
->get()->getRowArray();
|
||||||
|
|
||||||
|
|
||||||
if (empty($pre_client_data)) {
|
if (empty($pre_client_data)) {
|
||||||
|
|
||||||
@ -7093,11 +7126,16 @@ class ClientController extends AdminController
|
|||||||
$post = array_values(array_filter($allowed_modules, fn($v) => $v !== 1));
|
$post = array_values(array_filter($allowed_modules, fn($v) => $v !== 1));
|
||||||
$value['allowed_modules'] = json_encode(['pre' => $pre, 'post' => $post]);
|
$value['allowed_modules'] = json_encode(['pre' => $pre, 'post' => $post]);
|
||||||
|
|
||||||
|
$post_client_id = $value['post_client_id'];
|
||||||
|
$post_branch_id = $value['post_branch_id'];
|
||||||
|
$post_hr_id = $value['post_hr_id'];
|
||||||
|
|
||||||
|
$value['pre_client_id'] = $this->getPreClientId($post_branch_id);
|
||||||
|
$value['pre_branch_id'] = $this->getPreBranchId($post_branch_id);
|
||||||
|
$value["pre_hr_id"] = $this->getPreHrId($post_branch_id);
|
||||||
|
|
||||||
// INSERT or UPDATE
|
// INSERT or UPDATE
|
||||||
if (empty($value['pk']) || (int)$value['pk'] === 0) {
|
if (empty($value['pk']) || (int)$value['pk'] === 0) {
|
||||||
print_rr("inside insert block");
|
|
||||||
print_rr($value);die;
|
|
||||||
|
|
||||||
|
|
||||||
unset($value['pk']); // Prevent insert error
|
unset($value['pk']); // Prevent insert error
|
||||||
$insertedId = $this->HRAccessControlModel->insert($value);
|
$insertedId = $this->HRAccessControlModel->insert($value);
|
||||||
@ -7107,8 +7145,6 @@ class ClientController extends AdminController
|
|||||||
$success[] = "Inserted row at index {$index} with ID {$insertedId}.";
|
$success[] = "Inserted row at index {$index} with ID {$insertedId}.";
|
||||||
} else {
|
} else {
|
||||||
$update = $this->HRAccessControlModel->update($value['pk'], $value);
|
$update = $this->HRAccessControlModel->update($value['pk'], $value);
|
||||||
print_rr("inside update block");
|
|
||||||
print_rr($value);die;
|
|
||||||
|
|
||||||
if ($update === false) {
|
if ($update === false) {
|
||||||
throw new \Exception('Update failed for ID ' . $value['pk'] . ': ' . json_encode($this->HRAccessControlModel->errors()));
|
throw new \Exception('Update failed for ID ' . $value['pk'] . ': ' . json_encode($this->HRAccessControlModel->errors()));
|
||||||
@ -7163,6 +7199,26 @@ class ClientController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getPreClientId($post_branch_id){
|
||||||
|
$db2 = \Config\Database::connect('preDB');
|
||||||
|
$pre_client_id = $db2->table('client_branch')->where('post_branch_id',$post_branch_id)->where('is_Active',1)->get()->getResultArray()[0]['client_id']??[];
|
||||||
|
return $pre_client_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getPreBranchId($post_branch_id){
|
||||||
|
$db2 = \Config\Database::connect('preDB');
|
||||||
|
$pre_branch_id = $db2->table('client_branch')->where('post_branch_id',$post_branch_id)->where('is_Active',1)->get()->getResultArray()[0]['id']??[];
|
||||||
|
return $pre_branch_id;
|
||||||
|
}
|
||||||
|
private function getPreHrId($post_branch_id){
|
||||||
|
$db2 = \Config\Database::connect('preDB');
|
||||||
|
$pre_hr_id = $db2->table('client_branch cb')
|
||||||
|
->select('lc.id')
|
||||||
|
->join('level_contacts lc','lc.ref_id = cb.id')
|
||||||
|
->where('post_branch_id',$post_branch_id)->where('is_Active',1)->get()->getResultArray()[0]['id']??[];
|
||||||
|
return $pre_hr_id;
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------- DEMO CLIENT FUNCTION --------------------------------------------------------------------------------
|
// ------------------- DEMO CLIENT FUNCTION --------------------------------------------------------------------------------
|
||||||
|
|
||||||
public function wipeDemoClient()
|
public function wipeDemoClient()
|
||||||
|
|||||||
@ -67,24 +67,57 @@ class ICICILombardController extends AdminController
|
|||||||
|
|
||||||
|
|
||||||
//Prepare body data
|
//Prepare body data
|
||||||
$db = \Config\Database::connect();
|
// $db = \Config\Database::connect();
|
||||||
$data = $db->table('employee_polices ep')
|
// $data = $db->table('employee_polices ep')
|
||||||
->select('cp.policy_no as policyNumber, cp.cd_ac_no as CDBGAccountNumber,
|
// ->select('cp.policy_no as policyNumber, cp.cd_ac_no as CDBGAccountNumber,
|
||||||
e.id,e.emp_code as MemberEmpId, e.doj as DOJ, e.name as InsuredName, e.dob as DOB, e.relationship as Relationship,
|
// e.id,e.emp_code as MemberEmpId, e.doj as DOJ, e.name as InsuredName, e.dob as DOB, e.relationship as Relationship,
|
||||||
e.gender as Gender, ep.date_coverage as DOC,ep.basic_cover_si as SumInsured, e.email_corporate as EmailId
|
// e.gender as Gender, ep.date_coverage as DOC,ep.basic_cover_si as SumInsured, e.email_corporate as EmailId
|
||||||
')
|
// ')
|
||||||
->join('employees e', 'e.id = ep.employee_id')
|
// ->join('employees e', 'e.id = ep.employee_id')
|
||||||
->join('client_policy cp', 'ep.client_policy_id = cp.id')
|
// ->join('client_policy cp', 'ep.client_policy_id = cp.id')
|
||||||
->where('ep.client_policy_id', $policy_id)
|
// ->where('ep.client_policy_id', $policy_id)
|
||||||
->where('ep.status', 'active')
|
// ->where('ep.status', 'active')
|
||||||
->where('ep.is_active', 1)
|
// ->where('ep.is_active', 1)
|
||||||
// ->where('ep.uhid', null)
|
// // ->where('ep.uhid', null)
|
||||||
->get()
|
// ->get()
|
||||||
->getResultArray();
|
// ->getResultArray();
|
||||||
|
|
||||||
$body = $this->formatPolicyData($data);
|
// $body = $this->formatPolicyData($data);
|
||||||
// dd($body);
|
// dd($body);
|
||||||
|
|
||||||
|
|
||||||
|
$body = [
|
||||||
|
"PolicyNumber" => "4016/A/O/53130557/00/000",
|
||||||
|
"CDBGAccountNumber" => "CD-MUM-0026",
|
||||||
|
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440010",
|
||||||
|
"MemberDetails" => [
|
||||||
|
[
|
||||||
|
"MemberEmpId" => "EMPID3625557",
|
||||||
|
"DOJ" => "21-MAR-2019",
|
||||||
|
"InsuredName" => "Kumar",
|
||||||
|
"DOB" => "7-JUL-1983",
|
||||||
|
"Relationship" => "SELF",
|
||||||
|
"Gender" => "MALE",
|
||||||
|
"DOC" => "05-SEP-2025",
|
||||||
|
"SumInsured" => "400000",
|
||||||
|
"EmailId" => "KUMAR@GMAIL.COM",
|
||||||
|
"FlagStatus" => "A"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"MemberEmpId" => "EMPID3625557",
|
||||||
|
"DOJ" => "21-MAR-2019",
|
||||||
|
"InsuredName" => "Saranya",
|
||||||
|
"DOB" => "8-AUG-1970",
|
||||||
|
"Relationship" => "MOTHER",
|
||||||
|
"Gender" => "FEMALE",
|
||||||
|
"DOC" => "05-SEP-2025",
|
||||||
|
"SumInsured" => "400000",
|
||||||
|
"EmailId" => "Saranya@GMAIL.COM",
|
||||||
|
"FlagStatus" => "A"
|
||||||
|
],
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
$response = call_third_party_api($url, 'POST', $headers, $body, true); // true = raw body mode
|
$response = call_third_party_api($url, 'POST', $headers, $body, true); // true = raw body mode
|
||||||
// print_rr(json_encode($response));die();
|
// print_rr(json_encode($response));die();
|
||||||
return $this->response->setJSON($response);
|
return $this->response->setJSON($response);
|
||||||
@ -115,9 +148,9 @@ class ICICILombardController extends AdminController
|
|||||||
// dd($headers);
|
// dd($headers);
|
||||||
|
|
||||||
$body = [
|
$body = [
|
||||||
"PolicyNumber" => "4016/A/O/53077718/00/000",
|
"PolicyNumber" => "4016/A/O/53130557/00/000",
|
||||||
"BatchId" => "3646145",
|
"BatchId" => "3658147",
|
||||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440001"
|
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440010"
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = call_third_party_api($url, 'POST', $headers, $body, true);
|
$response = call_third_party_api($url, 'POST', $headers, $body, true);
|
||||||
|
|||||||
@ -79,10 +79,6 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function verifyEmployeeWithMobileNumber()
|
public function verifyEmployeeWithMobileNumber()
|
||||||
{
|
{
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
@ -93,6 +89,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$mobile_number = $this->request->getJSON()->mobile_number;
|
$mobile_number = $this->request->getJSON()->mobile_number;
|
||||||
|
$otp = $this->request->getJSON()->otp;
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Received mobile_number = " . $mobile_number);
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Received mobile_number = " . $mobile_number);
|
||||||
|
|
||||||
|
|
||||||
@ -112,12 +109,49 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
if (isset($employeeData['employee_id']))
|
if (isset($employeeData['employee_id']))
|
||||||
{
|
{
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee found: employee_id = " . $employeeData['employee_id']);
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee verified with ID = " . $employeeData['employee_id']);
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', '************************ POST END ********************************');
|
||||||
log_message('error', ' ');
|
|
||||||
$result = ['user_verification' => true ,'message' => "Verified Successfully"];
|
|
||||||
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
$sql = "
|
||||||
|
UPDATE employees
|
||||||
|
INNER JOIN employee_polices ON employee_polices.employee_id = employees.id
|
||||||
|
SET employees.otp = ?
|
||||||
|
WHERE employees.id = ?
|
||||||
|
AND employees.relationship = 'self'
|
||||||
|
AND employees.is_active = 1
|
||||||
|
AND employee_polices.is_active = 1
|
||||||
|
AND employee_polices.status IN ('active')
|
||||||
|
";
|
||||||
|
|
||||||
|
$db = db_connect();
|
||||||
|
$update = $db->query($sql, [$otp, $employeeData['employee_id']]);
|
||||||
|
|
||||||
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: OTP update query executed. SQL = " . $db->getLastQuery());
|
||||||
|
|
||||||
|
if($update)
|
||||||
|
{
|
||||||
|
//send sms
|
||||||
|
$SMSResult = sendOtpSms($mobile_number, $otp);
|
||||||
|
if ($SMSResult['status'] == 'success')
|
||||||
|
{
|
||||||
|
$result = ['user_verification' => true ,'message' => "Verified Successfully" ];
|
||||||
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
||||||
|
}else{
|
||||||
|
$result = ['user_verification' => false, 'message' => "SMS sending failed , try again"];
|
||||||
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: OTP update query Failed. SQL = " . $db->getLastQuery());
|
||||||
|
|
||||||
|
$result = ['user_verification' => false, 'message' => "Try again. , try again"];
|
||||||
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: No matching employee found");
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: No matching employee found");
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
@ -148,6 +182,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
try {
|
try {
|
||||||
|
|
||||||
$email = $this->request->getJSON()->email;
|
$email = $this->request->getJSON()->email;
|
||||||
|
$otp = $this->request->getJSON()->otp;
|
||||||
$client_id = $this->request->getJSON()->client_id ?? null;
|
$client_id = $this->request->getJSON()->client_id ?? null;
|
||||||
|
|
||||||
|
|
||||||
@ -181,11 +216,6 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
if (isset($employeeData['employee_id'])) {
|
if (isset($employeeData['employee_id'])) {
|
||||||
|
|
||||||
$otp = random_int(100000, 999999);
|
|
||||||
|
|
||||||
// $update = $this->employeeModel->where('email_corporate', $email)->where('relationship', 'Self')
|
|
||||||
// ->where('is_active', 1)->set(array('otp' => $otp))
|
|
||||||
// ->update();
|
|
||||||
|
|
||||||
$builder = $this->employeeModel
|
$builder = $this->employeeModel
|
||||||
->where('email_corporate', $email)
|
->where('email_corporate', $email)
|
||||||
@ -265,24 +295,23 @@ class RestAuthenticationController extends AdminController
|
|||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateEmpOTP: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateEmpOTP: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
||||||
|
|
||||||
|
|
||||||
$email = $this->request->getJSON()->email;
|
$email = $this->request->getJSON()->email ?? null;
|
||||||
|
$mobile_number = $this->request->getJSON()->mobile_number ?? null;
|
||||||
$otp = $this->request->getJSON()->otp;
|
$otp = $this->request->getJSON()->otp;
|
||||||
$client_id = $this->request->getJSON()->client_id ?? null;
|
$client_id = $this->request->getJSON()->client_id ?? null;
|
||||||
$employee_id = $this->request->getJSON()->employee_id ?? null;
|
$employee_id = $this->request->getJSON()->employee_id ?? null;
|
||||||
|
|
||||||
$builder = $this->employeeModel
|
$builder = $this->employeeModel
|
||||||
->where('email_corporate', $email)
|
|
||||||
->where('relationship', 'Self')
|
->where('relationship', 'Self')
|
||||||
->where('is_active', 1);
|
->where('is_active', 1);
|
||||||
|
|
||||||
// $builder = $this->employeeModel
|
if (!empty($email)) {
|
||||||
// ->join('employee_polices EP', 'EP.employee_id = employees.id', 'inner')
|
$builder->where('email_corporate', $email);
|
||||||
// ->where('employees.email_corporate', $email)
|
}
|
||||||
// ->where('employees.relationship', 'Self')
|
|
||||||
// ->where('employees.is_active', 1)
|
if (!empty($mobile_number)) {
|
||||||
// ->whereIn('employees.emp_status', ['active', 'expired'])
|
$builder->where('mobile', $mobile_number);
|
||||||
// ->where('EP.is_active', 1)
|
}
|
||||||
// ->whereIn('EP.status', ['active', 'expired']);
|
|
||||||
|
|
||||||
|
|
||||||
if (!empty($client_id)) {
|
if (!empty($client_id)) {
|
||||||
@ -306,58 +335,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function updateEmpMPIN()
|
|
||||||
// {
|
|
||||||
// $requestData = $this->request->getJSON();
|
|
||||||
// print_r($requestData); die;
|
|
||||||
// $mobile_number = $requestData->mobile_number ?? null;
|
|
||||||
// $email_id = $requestData->email_id ?? null;
|
|
||||||
// $new_mpin = $requestData->new_mpin ?? $requestData->mpin ?? null;
|
|
||||||
// $old_mpin = $requestData->old_mpin ?? null;
|
|
||||||
// $is_mpin_skipped = $requestData->is_mpin_skipped ?? null;
|
|
||||||
// $is_biometric_enabled = $requestData->is_biometric_enabled ?? null;
|
|
||||||
|
|
||||||
// if (!$new_mpin) {
|
|
||||||
// return $this->response->setJSON(['status' => false, 'message' => 'MPIN is required.']);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $query = $this->employeeModel->where('relationship', 'self');
|
|
||||||
|
|
||||||
// if ($mobile_number) {
|
|
||||||
// $query->where('mobile', $mobile_number);
|
|
||||||
// } elseif ($email_id) {
|
|
||||||
// $query->where('email_corporate', $email_id);
|
|
||||||
// } else {
|
|
||||||
// return $this->response->setJSON(['status' => false, 'message' => 'Mobile number or Email ID is required.']);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (!empty($old_mpin)) {
|
|
||||||
// $query->where('mpin', $old_mpin);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Fetch employee data
|
|
||||||
// $employeeData = $query->first();
|
|
||||||
|
|
||||||
// if (!$employeeData) {
|
|
||||||
// return $this->response->setJSON(['status' => false, 'message' => 'Employee not found or invalid MPIN.']);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(!empty($is_mpin_skipped) && !empty($is_biometric_enabled)){
|
|
||||||
// $mpin_data_to_updata = [
|
|
||||||
// 'mpin' => $new_mpin,
|
|
||||||
// 'is_mpin_skipped' => $is_mpin_skipped,
|
|
||||||
// 'is_biometric_enabled' => $is_biometric_enabled
|
|
||||||
// ];
|
|
||||||
// }else{
|
|
||||||
// $mpin_data_to_updata = ['mpin' => $new_mpin];
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Update MPIN
|
|
||||||
// $updated = $this->employeeModel->update($employeeData['id'], $mpin_data_to_updata);
|
|
||||||
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public function updateEmpMPIN()
|
public function updateEmpMPIN()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@ -415,17 +393,11 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$otp_verification = isset($this->request->getJSON()->otp_verification) ? $this->request->getJSON()->otp_verification : null;
|
|
||||||
$mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null;
|
$mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null;
|
||||||
|
|
||||||
$otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null;
|
|
||||||
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
|
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
|
||||||
|
$otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null;
|
||||||
$client_id = $this->request->getJSON()->client_id ?? null;
|
$client_id = $this->request->getJSON()->client_id ?? null;
|
||||||
|
|
||||||
if (isset($this->request->getJSON()->login_by_hr))
|
|
||||||
{
|
|
||||||
$employeeData = $this->employeeModel->where('id', $this->request->getJSON()->employee_id)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first();
|
|
||||||
}else{
|
|
||||||
if (isset($mobile_number))
|
if (isset($mobile_number))
|
||||||
{
|
{
|
||||||
// $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first();
|
// $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first();
|
||||||
@ -437,7 +409,8 @@ class RestAuthenticationController extends AdminController
|
|||||||
->where('employee_polices.is_active', 1)
|
->where('employee_polices.is_active', 1)
|
||||||
->whereIn('employee_polices.status', ['active', 'expired'])
|
->whereIn('employee_polices.status', ['active', 'expired'])
|
||||||
->where('employees.is_active', 1)
|
->where('employees.is_active', 1)
|
||||||
->whereIn('employees.emp_status', ['active', 'expired']);
|
->whereIn('employees.emp_status', ['active', 'expired'])
|
||||||
|
->where('otp', $otp);
|
||||||
|
|
||||||
if (!empty($client_id)) {
|
if (!empty($client_id)) {
|
||||||
$builder->where('employees.client_id', $client_id);
|
$builder->where('employees.client_id', $client_id);
|
||||||
@ -464,14 +437,15 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$lastQuery = $this->employeeModel->db->getLastQuery();
|
$lastQuery = $this->employeeModel->db->getLastQuery();
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Last Executed Query: " . $lastQuery);
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Last Executed Query: " . $lastQuery);
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: employeeData: " . json_encode($employeeData ?? []));
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: employeeData: " . json_encode($employeeData ?? []));
|
||||||
|
|
||||||
|
|
||||||
if ($employeeData && $otp_verification == true || $employeeData && isset($this->request->getJSON()->login_by_hr) || $employeeData && isset($this->request->getJSON()->otp) ) {
|
if ($employeeData && isset($this->request->getJSON()->otp) )
|
||||||
|
{
|
||||||
$auth = HttpRequestHelper::getRequestInfo();
|
$auth = HttpRequestHelper::getRequestInfo();
|
||||||
if ($auth) {
|
if ($auth) {
|
||||||
$data = [
|
$data = [
|
||||||
@ -524,17 +498,43 @@ class RestAuthenticationController extends AdminController
|
|||||||
public function verifyHrWithMobileNumber()
|
public function verifyHrWithMobileNumber()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$mobile_number = $this->request->getJSON()->mobile_number;
|
$data = $this->request->getJSON();
|
||||||
|
|
||||||
|
$mobile_number = $data->mobile_number;
|
||||||
|
$otp = $data->otp;
|
||||||
|
|
||||||
$HrData = $this->hrModel->where('mobile', $mobile_number)
|
$HrData = $this->hrModel->where('mobile', $mobile_number)
|
||||||
->where('contact_type', 'client')
|
->where('contact_type', 'client')
|
||||||
->where('is_active', 1)
|
->where('is_active', 1)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
|
||||||
if ($HrData) {
|
if ($HrData) {
|
||||||
|
|
||||||
$result = ['user_verification' => true ,'message' => "Verified Successfully"];
|
$sql = "UPDATE level_contacts SET otp = ? WHERE mobile = ? AND contact_type = 'client' AND is_active = 1";
|
||||||
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
||||||
|
$db = db_connect();
|
||||||
|
$update = $db->query($sql, [$otp, $mobile_number]);
|
||||||
|
|
||||||
|
if($update)
|
||||||
|
{
|
||||||
|
|
||||||
|
//send sms
|
||||||
|
$SMSResult = sendOtpSms($mobile_number, $otp);
|
||||||
|
if ($SMSResult['status'] == 'success')
|
||||||
|
{
|
||||||
|
$result = ['user_verification' => true, 'message' => "Verified Successfully"];
|
||||||
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||||
|
} else {
|
||||||
|
$result = ['user_verification' => false, 'message' => "SMS sending failed , try again"];
|
||||||
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
$result = ['user_verification' => false, 'message' => "SMS sending failed , try again"];
|
||||||
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$result = ['user_verification' => false , 'message' => "User not found"];
|
$result = ['user_verification' => false , 'message' => "User not found"];
|
||||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
||||||
@ -552,6 +552,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
$data = $this->request->getJSON();
|
$data = $this->request->getJSON();
|
||||||
|
|
||||||
$email = $data->email;
|
$email = $data->email;
|
||||||
|
$otp = $data->otp;
|
||||||
|
|
||||||
$HrData = $this->hrModel->where('email', $email)
|
$HrData = $this->hrModel->where('email', $email)
|
||||||
->where('contact_type', 'client')
|
->where('contact_type', 'client')
|
||||||
@ -559,8 +560,6 @@ class RestAuthenticationController extends AdminController
|
|||||||
->first();
|
->first();
|
||||||
|
|
||||||
if ($HrData) {
|
if ($HrData) {
|
||||||
|
|
||||||
$otp = random_int(100000, 999999);
|
|
||||||
|
|
||||||
$sql = "
|
$sql = "
|
||||||
UPDATE level_contacts
|
UPDATE level_contacts
|
||||||
@ -575,7 +574,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
if($update)
|
if($update)
|
||||||
{
|
{
|
||||||
$data->otp = $otp;
|
|
||||||
|
|
||||||
$common = [
|
$common = [
|
||||||
'login_type' => 'HR login',
|
'login_type' => 'HR login',
|
||||||
@ -608,39 +607,53 @@ class RestAuthenticationController extends AdminController
|
|||||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateHROTP()
|
public function updateHROTP()
|
||||||
{
|
{
|
||||||
|
|
||||||
$email = $this->request->getJSON()->email;
|
$email = $this->request->getJSON()->email ?? null;
|
||||||
$otp = $this->request->getJSON()->otp;
|
$mobile_number = $this->request->getJSON()->mobile_number ?? null;
|
||||||
|
$otp = $this->request->getJSON()->otp ?? null;
|
||||||
$this->hrModel->where('email', $email) ->where('contact_type', 'client')
|
|
||||||
->where('is_active', 1)->set(array('otp' => $otp))
|
|
||||||
->update();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
|
$builder = $this->hrModel
|
||||||
|
->where('contact_type', 'client')
|
||||||
|
->where('is_active', 1);
|
||||||
|
|
||||||
|
if (!empty($email)) {
|
||||||
|
$builder->where('email', $email);
|
||||||
|
} elseif (!empty($mobile_number)) {
|
||||||
|
$builder->where('mobile', $mobile_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
$builder->set(['otp' => $otp])->update();
|
||||||
|
|
||||||
|
if ($this->hrModel->db->affectedRows() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function getVerifiedHrData()
|
public function getVerifiedHrData()
|
||||||
{
|
{
|
||||||
// try {
|
try {
|
||||||
// mobile number
|
|
||||||
$otp_verification = isset($this->request->getJSON()->otp_verification) ? $this->request->getJSON()->otp_verification : null;
|
|
||||||
$mobile_number = isset($this->request->getJSON()->mobile_no) ? $this->request->getJSON()->mobile_no : null;
|
|
||||||
// email id
|
|
||||||
$otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null;
|
$otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null;
|
||||||
$email = isset($this->request->getJSON()->email) ? $this->request->getJSON()->email : null;
|
$email = isset($this->request->getJSON()->email) ? $this->request->getJSON()->email : null;
|
||||||
|
$mobile_number = isset($this->request->getJSON()->mobile_no) ? $this->request->getJSON()->mobile_no : null;
|
||||||
|
|
||||||
if (isset($mobile_number))
|
if (isset($mobile_number))
|
||||||
{
|
{
|
||||||
$hrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->first();
|
$hrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->where('otp', $otp)->first();
|
||||||
}else{
|
}else{
|
||||||
$hrData = $this->hrModel->where('email', $email)->where('contact_type', 'client')->where('otp', $otp)->first();
|
$hrData = $this->hrModel->where('email', $email)->where('contact_type', 'client')->where('otp', $otp)->first();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($hrData && $otp_verification == true || $hrData && isset($this->request->getJSON()->otp) )
|
if ($hrData)
|
||||||
{
|
{
|
||||||
|
|
||||||
$auth = HttpRequestHelper::getRequestInfo();
|
$auth = HttpRequestHelper::getRequestInfo();
|
||||||
@ -660,23 +673,25 @@ class RestAuthenticationController extends AdminController
|
|||||||
|
|
||||||
if(isset($this->request->getJSON()->mobile_no)){
|
if(isset($this->request->getJSON()->mobile_no)){
|
||||||
|
|
||||||
$getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name, client_branch.pre_branch_id')
|
$getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name , client_branch.pre_branch_id')
|
||||||
->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left')
|
->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left')
|
||||||
->join('clients', 'client_branch.client_id = clients.id', 'left')
|
->join('clients', 'client_branch.client_id = clients.id', 'left')
|
||||||
->where('level_contacts.mobile', $mobile_number )
|
->where('level_contacts.mobile', $mobile_number )
|
||||||
->where('level_contacts.contact_type', 'client')
|
->where('level_contacts.contact_type', 'client')
|
||||||
->findAll();
|
->findAll();
|
||||||
|
//set otp value null
|
||||||
|
$this->hrModel->where('mobile', $mobile_number)->where('otp', $otp)->where('contact_type', 'client')->set(['otp'=>null])->update();
|
||||||
|
|
||||||
}else if(isset($this->request->getJSON()->otp)){
|
}else if(isset($this->request->getJSON()->email)){
|
||||||
|
|
||||||
|
$getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name , client_branch.pre_branch_id')
|
||||||
|
->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left')
|
||||||
|
->join('clients', 'client_branch.client_id = clients.id', 'left')
|
||||||
|
->where('level_contacts.email', $email )
|
||||||
|
->where('level_contacts.contact_type', 'client')
|
||||||
|
->findAll();
|
||||||
|
//set otp value null
|
||||||
$this->hrModel->where('email', $email)->where('otp', $otp)->where('contact_type', 'client')->set(['otp'=>null])->update();
|
$this->hrModel->where('email', $email)->where('otp', $otp)->where('contact_type', 'client')->set(['otp'=>null])->update();
|
||||||
|
|
||||||
$getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name, client_branch.pre_branch_id')
|
|
||||||
->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left')
|
|
||||||
->join('clients', 'client_branch.client_id = clients.id', 'left')
|
|
||||||
->where('level_contacts.email', $email )
|
|
||||||
->where('level_contacts.contact_type', 'client')
|
|
||||||
->findAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(count($getAllhrData))
|
if(count($getAllhrData))
|
||||||
@ -705,29 +720,26 @@ class RestAuthenticationController extends AdminController
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $this->respond(['status' => 'success','code' => 200,'data' => $getAllhrData ],200);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
|
||||||
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "" , 'message' => 'User not found' ],200);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->respond(['status' => 'success','code' => 200,'data' => $getAllhrData ],200);
|
|
||||||
|
|
||||||
|
|
||||||
// $HRAccessData = $this->getHRAccessData( $hrData['0']['id'] , 'post_enrollment');
|
|
||||||
|
|
||||||
// if(isset($HRAccessData['allowed_modules'])){ $hrData['0']['allowed_modules'] = json_decode($HRAccessData['allowed_modules'],true)['post']; }else{ $hrData['0']['allowed_modules'] = []; }
|
|
||||||
|
|
||||||
// $hrData['0']['token_type'] = 'post';
|
|
||||||
// $result = JWTToken::encode($hrData['0']);
|
|
||||||
|
|
||||||
|
|
||||||
// return $this->respond(['status' => 'success','code' => 200,'data' => $result ],200);
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
return $this->respond(['status' => 'failed','code' => 404,'data' => "" ],200);
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "" , 'message' => 'User not found' ],200);
|
||||||
}
|
}
|
||||||
// } catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
// return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500);
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500);
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1394,6 +1406,10 @@ class RestAuthenticationController extends AdminController
|
|||||||
->where('employees.mobile', $mobile_number)
|
->where('employees.mobile', $mobile_number)
|
||||||
->where('EP.is_active', 1)
|
->where('EP.is_active', 1)
|
||||||
->whereIn('EP.status', ['active', 'expired']);
|
->whereIn('EP.status', ['active', 'expired']);
|
||||||
|
|
||||||
|
if (!empty($otp)) {
|
||||||
|
$builder->where('employees.otp', $otp);
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($old_mpin)) {
|
if (!empty($old_mpin)) {
|
||||||
$builder->where('employees.mpin', $old_mpin);
|
$builder->where('employees.mpin', $old_mpin);
|
||||||
|
|||||||
@ -627,17 +627,24 @@ class UserController extends AdminController
|
|||||||
if (!$staff) {
|
if (!$staff) {
|
||||||
return $this->response->setJSON(['status' => 'error','message' => 'Staff not found'])->setStatusCode(404);
|
return $this->response->setJSON(['status' => 'error','message' => 'Staff not found'])->setStatusCode(404);
|
||||||
}
|
}
|
||||||
|
$role = $staff['role_id'];
|
||||||
|
$text = $role == 1 ? "Manager" : "Staff";
|
||||||
|
|
||||||
if ($staff['is_active'] == 1) {
|
if ($staff['is_active'] == 1) {
|
||||||
|
if($role == 1){ // manager
|
||||||
|
$result = $this->partnerStaffModel->updateByKey($id);
|
||||||
|
$message = $result;
|
||||||
|
}else{ // staff
|
||||||
$result = $this->partnerStaffModel->update($id, ['is_active' => 0]);
|
$result = $this->partnerStaffModel->update($id, ['is_active' => 0]);
|
||||||
$message = "Staff deleted successfully";
|
$message = $text." deleted successfully";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return $this->response->setJSON(['status' => 'error','message' => 'Staff already deleted'])->setStatusCode(400);
|
return $this->response->setJSON(['status' => 'error','message' => $text.' already deleted'])->setStatusCode(400);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->response->setJSON([
|
return $this->response->setJSON([
|
||||||
'status' => $result ? 'success' : 'error',
|
'status' => $result ? 'success' : 'error',
|
||||||
'message' => $result ? $message : "Unable to delete staff. Please try again.",
|
'message' => $result ? $message : "Unable to delete ".$text.". Please try again.",
|
||||||
'id' => $id
|
'id' => $id
|
||||||
])->setStatusCode($result ? 200 : 400);
|
])->setStatusCode($result ? 200 : 400);
|
||||||
}
|
}
|
||||||
|
|||||||
44
app/Helpers/sms_helper.php
Normal file
44
app/Helpers/sms_helper.php
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use CodeIgniter\Database\BaseConnection;
|
||||||
|
|
||||||
|
if (!function_exists('sendOtpSms')) {
|
||||||
|
|
||||||
|
|
||||||
|
function sendOtpSms(string $mobile, string $otp)
|
||||||
|
{
|
||||||
|
$apiKey = env('SMS_API_KEY');
|
||||||
|
$senderId = env('SMS_SENDER_ID');
|
||||||
|
$templateId = env('SMS_TEMPLATE_ID');
|
||||||
|
$serviceName = env('SMS_SERVICE_NAME');
|
||||||
|
$appName = env('SMS_APP_NAME');
|
||||||
|
|
||||||
|
// Replace variables {#var#}
|
||||||
|
$message = "Hi, Your One Time Code for logging into Nhance {$appName} App is {$otp}. Valid for 3 minutes. Please do not share this with anyone. -NHANCE";
|
||||||
|
|
||||||
|
log_message('info' , 'SMS - Message '.$message);
|
||||||
|
|
||||||
|
// Build the API URL
|
||||||
|
$url = "https://smsapi.24x7sms.com/api_2.0/SendSMS.aspx?" . http_build_query([
|
||||||
|
'APIKEY' => $apiKey,
|
||||||
|
'MobileNo' => $mobile,
|
||||||
|
'SenderID' => $senderId,
|
||||||
|
'Message' => $message,
|
||||||
|
'ServiceName' => $serviceName,
|
||||||
|
'DLTTemplateID' => $templateId,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Send request
|
||||||
|
$response = @file_get_contents($url);
|
||||||
|
|
||||||
|
log_message('info' , 'SMS - Response '.$response);
|
||||||
|
|
||||||
|
// If response failed
|
||||||
|
if ($response === FALSE) {
|
||||||
|
return ['status' => 'failed', 'message' => 'Failed to send SMS.'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return ['status' => 'success', 'message' => 'OTP sent successfully', 'api_response' => $response];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -108,7 +108,7 @@ class ClientModel extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getCreatedByUserName(){
|
public function getCreatedByUserName($client_type = null){
|
||||||
|
|
||||||
$role_id = get_role_id();
|
$role_id = get_role_id();
|
||||||
$user_id = get_session_userid();
|
$user_id = get_session_userid();
|
||||||
@ -118,6 +118,10 @@ class ClientModel extends Model
|
|||||||
->join('client_rm', 'client_rm.client_id = clients.id','left')
|
->join('client_rm', 'client_rm.client_id = clients.id','left')
|
||||||
->where('clients.is_active', 1);
|
->where('clients.is_active', 1);
|
||||||
|
|
||||||
|
if (!empty($client_type)) {
|
||||||
|
$query->where('clients.client_type', $client_type);
|
||||||
|
}
|
||||||
|
|
||||||
if (in_array($role_id, [2, 3])) {
|
if (in_array($role_id, [2, 3])) {
|
||||||
|
|
||||||
// If the user is a Account Manager or Manager, filter by user_id
|
// If the user is a Account Manager or Manager, filter by user_id
|
||||||
|
|||||||
@ -47,4 +47,55 @@ class PartnerStaffModel extends Model
|
|||||||
// ];
|
// ];
|
||||||
|
|
||||||
// protected $skipValidation = false;
|
// protected $skipValidation = false;
|
||||||
|
public function updateByKey($key)
|
||||||
|
{
|
||||||
|
$db = \Config\Database::connect();
|
||||||
|
$message = "";
|
||||||
|
|
||||||
|
// Start transaction
|
||||||
|
$db->transStart();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 1. Update manager
|
||||||
|
$db->table('partner_staff')
|
||||||
|
->where('id', $key)
|
||||||
|
->set('is_active', 0)
|
||||||
|
->update();
|
||||||
|
$managerRows = $db->affectedRows();
|
||||||
|
$message = "{$managerRows} manager(s), ";
|
||||||
|
|
||||||
|
// 2. Update agents under manager
|
||||||
|
$db->table('partner_agent')
|
||||||
|
->where('manager_id', $key)
|
||||||
|
->set('is_active', 0)
|
||||||
|
->update();
|
||||||
|
$agentRows = $db->affectedRows();
|
||||||
|
$message .= "{$agentRows} agent(s), ";
|
||||||
|
|
||||||
|
// 3. Update staff under manager
|
||||||
|
$db->table('partner_staff')
|
||||||
|
->where('manager_id', $key)
|
||||||
|
->set('is_active', 0)
|
||||||
|
->update();
|
||||||
|
$staffRows = $db->affectedRows();
|
||||||
|
$message .= "{$staffRows} staff(s)";
|
||||||
|
|
||||||
|
// Complete transaction
|
||||||
|
$db->transComplete();
|
||||||
|
|
||||||
|
// Check transaction status
|
||||||
|
if ($db->transStatus() === false) {
|
||||||
|
return "Transaction failed. No updates were applied.";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $message . " are deleted successfully";
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// Rollback in case of exception
|
||||||
|
$db->transRollback();
|
||||||
|
return "Error: " . $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,10 +37,10 @@ table.dataTable tbody td {
|
|||||||
</style> -->
|
</style> -->
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
/* body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
} */
|
||||||
|
|
||||||
#mobile::placeholder,
|
#mobile::placeholder,
|
||||||
#mobile_no::placeholder {
|
#mobile_no::placeholder {
|
||||||
@ -353,8 +353,7 @@ table.dataTable tbody td {
|
|||||||
<h4 style="position: relative;">Users</h4>
|
<h4 style="position: relative;">Users</h4>
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
<table data-custom-table-css="table" class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="1" id="user-table">
|
<table data-custom-table-css="table" class="table table-sm m-0 table-centered dt-responsive nowrap w-100" cellspacing="a" id="user-table">
|
||||||
|
|
||||||
<thead class="bg-light">
|
<thead class="bg-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th class="font-weight-medium">Name</th>
|
<th class="font-weight-medium">Name</th>
|
||||||
@ -874,13 +873,19 @@ table.dataTable tbody td {
|
|||||||
{
|
{
|
||||||
extend: 'csv',
|
extend: 'csv',
|
||||||
text: '<i class="mdi mdi-file-delimited"></i><span class="btn-custom"> CSV </span>',
|
text: '<i class="mdi mdi-file-delimited"></i><span class="btn-custom"> CSV </span>',
|
||||||
className: 'app-btn-primary'
|
className: 'app-btn-primary',
|
||||||
|
exportOptions: {
|
||||||
|
columns: ':not(:last-child)'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
extend: 'excel',
|
extend: 'excel',
|
||||||
text: '<i class="mdi mdi-file-excel"></i><span class="btn-custom"> EXCEL </span>',
|
text: '<i class="mdi mdi-file-excel"></i><span class="btn-custom"> EXCEL </span>',
|
||||||
exportOptions: { orthogonal: 'sort' },
|
exportOptions: { orthogonal: 'sort' },
|
||||||
className: 'app-btn-primary'
|
className: 'app-btn-primary',
|
||||||
|
exportOptions: {
|
||||||
|
columns: ':not(:last-child)'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1027,9 +1032,17 @@ table.dataTable tbody td {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('body').on('click', '.btnPartnerDelete', function () {
|
$('body').on('click', '.btnPartnerDelete', function () {
|
||||||
|
var partner_role = $(this).attr('data-role');
|
||||||
|
var alertText = "You need to remove this user";
|
||||||
|
if (partner_role == 2) {
|
||||||
|
alertText = "You need to remove this Staff";
|
||||||
|
} else if (partner_role == 1) {
|
||||||
|
alertText = "You need to remove this Manager and related agent and staff are also delete";
|
||||||
|
}
|
||||||
|
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: "Are you sure?",
|
title: "Are you sure?",
|
||||||
text: "You need to remove this user",
|
text: alertText,
|
||||||
icon: "info",
|
icon: "info",
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonColor: "#3085d6",
|
confirmButtonColor: "#3085d6",
|
||||||
@ -1165,6 +1178,9 @@ table.dataTable tbody td {
|
|||||||
complete: function() {
|
complete: function() {
|
||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
btn.innerText = "Submit";
|
btn.innerText = "Submit";
|
||||||
|
$('#nhance-partner-modal').removeClass('show').hide();
|
||||||
|
$('.modal-backdrop').remove();
|
||||||
|
loadPartner();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1263,7 +1279,7 @@ table.dataTable tbody td {
|
|||||||
row.name,
|
row.name,
|
||||||
row.email,
|
row.email,
|
||||||
row.mobile,
|
row.mobile,
|
||||||
'Staff',
|
row.role_id == 1 ? "Manager" : "Staff",
|
||||||
`<span class="badge ${statusClass}">${statusText}</span>`,
|
`<span class="badge ${statusClass}">${statusText}</span>`,
|
||||||
`<div class="btn-group dropdown">
|
`<div class="btn-group dropdown">
|
||||||
<a href="javascript:void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown">
|
<a href="javascript:void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown">
|
||||||
@ -1273,8 +1289,8 @@ table.dataTable tbody td {
|
|||||||
<a data-toggle="modal" data-target="#nhance-partner-modal" class="dropdown-item btnPartnerEdit" data-obj='${JSON.stringify(row)}'>
|
<a data-toggle="modal" data-target="#nhance-partner-modal" class="dropdown-item btnPartnerEdit" data-obj='${JSON.stringify(row)}'>
|
||||||
<i data-obj='${JSON.stringify(row)}' class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle btnPartnerEdit"></i>Edit
|
<i data-obj='${JSON.stringify(row)}' class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle btnPartnerEdit"></i>Edit
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item btnPartnerDelete" data-id="${row.id}">
|
<a class="dropdown-item btnPartnerDelete" data-id="${row.id}" data-role="${row.role_id}">
|
||||||
<i data-id="${row.id}" class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle btnPartnerDelete"></i>Delete
|
<i data-id="${row.id}" data-role="${row.role_id}" class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle btnPartnerDelete"></i>Delete
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item btnPartnerPerformance" data-id="${row.id}">
|
<a class="dropdown-item btnPartnerPerformance" data-id="${row.id}">
|
||||||
<i data-id="${row.id}" class="mdi mdi-speedometer mr-2 text-muted font-18 vertical-middle btnPartnerPerformance"></i>View Performance
|
<i data-id="${row.id}" class="mdi mdi-speedometer mr-2 text-muted font-18 vertical-middle btnPartnerPerformance"></i>View Performance
|
||||||
@ -1699,10 +1715,11 @@ table.dataTable tbody td {
|
|||||||
});
|
});
|
||||||
$(document).on('click', '#btnNhancePartnerAdd', function(){
|
$(document).on('click', '#btnNhancePartnerAdd', function(){
|
||||||
$('#partner_name').val('');
|
$('#partner_name').val('');
|
||||||
$('#email').val('');
|
$('#email_addr').val('');
|
||||||
$('#partner_id').val('');
|
$('#partner_id').val('');
|
||||||
$('#mobile_no').val('');
|
$('#mobile_no').val('');
|
||||||
$('#locn').val('');
|
$('#locn').val('');
|
||||||
|
$('.modal-title').html('Add Nhance Partner');
|
||||||
$('#PartnerForm').attr('action', '<?php echo base_url('/user/partner');?>');
|
$('#PartnerForm').attr('action', '<?php echo base_url('/user/partner');?>');
|
||||||
let myModal = new bootstrap.Modal(document.getElementById('nhance-partner-modal'));
|
let myModal = new bootstrap.Modal(document.getElementById('nhance-partner-modal'));
|
||||||
myModal.show(); // open modal
|
myModal.show(); // open modal
|
||||||
|
|||||||
@ -110,13 +110,14 @@ input:checked + .slider:before {
|
|||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label for="client_name">Client Name<span
|
<label for="client_name">Client Name<span
|
||||||
class="text-danger">*</span></label>
|
class="text-danger">*</span></label>
|
||||||
<input type="text" class="form-control" id="client_name"
|
<input type="text" class="form-control" id="client_name" data-old-name="<?= isset($client['client_name']) ? $client['client_name'] : '' ?>"
|
||||||
placeholder="Enter Client Name" value="<?= isset($client['client_name']) ? $client['client_name'] : '' ?>" name="client_name" required>
|
placeholder="Enter Client Name" value="<?= isset($client['client_name']) ? $client['client_name'] : '' ?>" name="client_name" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label for="short_name">Client Short Name<span
|
<label for="short_name">Client Short Name<span
|
||||||
class="text-danger">*</span></label>
|
class="text-danger">*</span></label>
|
||||||
<input type="text" class="form-control" id="short_name"
|
<input type="text" class="form-control" id="short_name"
|
||||||
|
data-old-short="<?= isset($client['short_name']) ? $client['short_name'] : '' ?>"
|
||||||
placeholder="Enter Short Name" value="<?= isset($client['short_name']) ? $client['short_name'] : '' ?>" name="short_name" onkeyup="validateInput(this, 'clients', 'short_name', 'clientBtnSubmit')" required>
|
placeholder="Enter Short Name" value="<?= isset($client['short_name']) ? $client['short_name'] : '' ?>" name="short_name" onkeyup="validateInput(this, 'clients', 'short_name', 'clientBtnSubmit')" required>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -546,6 +546,7 @@ $('body').on('click', '.btnBranchEdit', function() {
|
|||||||
$('#district').val(res.data.district);
|
$('#district').val(res.data.district);
|
||||||
$('#branch_city').val(res.data.city);
|
$('#branch_city').val(res.data.city);
|
||||||
$('#branch_PrimaryKey').val(res.data.id);
|
$('#branch_PrimaryKey').val(res.data.id);
|
||||||
|
$('#pre_branch_id').val(res.data.pre_branch_id)
|
||||||
|
|
||||||
if(res.data.sez == 1){
|
if(res.data.sez == 1){
|
||||||
$('#sez').prop('checked', true);
|
$('#sez').prop('checked', true);
|
||||||
@ -861,6 +862,83 @@ function checkMobileNumber(input) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// function generateShortName() {
|
||||||
|
// let clientName = $("#client_name").val().trim();
|
||||||
|
// if (clientName.length > 0) {
|
||||||
|
// let shortName = clientName.substring(0, 10).replace(/\s+/g, '').toUpperCase(); // Take first 10 chars , space removed, converted caps
|
||||||
|
// $("#short_name").val(shortName);
|
||||||
|
// makeUniqueShortName(shortName);
|
||||||
|
// }else{
|
||||||
|
// $("#short_name").val('');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
let shortNameTimer;
|
||||||
|
|
||||||
|
$("#client_name").on("input change keyup", function() {
|
||||||
|
clearTimeout(shortNameTimer); // cancel previous call
|
||||||
|
shortNameTimer = setTimeout(() => {
|
||||||
|
generateShortName(); // only runs after 200ms pause
|
||||||
|
}, 200); // adjust debounce delay as needed
|
||||||
|
});
|
||||||
|
|
||||||
|
function generateShortName() {
|
||||||
|
let clientInput = $("#client_name");
|
||||||
|
let shortInput = $("#short_name");
|
||||||
|
|
||||||
|
let oldClientName = clientInput.data("old-name"); // from DB
|
||||||
|
let oldShortName = shortInput.data("old-short"); // from DB
|
||||||
|
let newClientName = clientInput.val().trim();
|
||||||
|
console.log(`LN 882 : NEW - ${newClientName} | OLD - ${oldClientName} | OLD SN - ${oldShortName}`);
|
||||||
|
|
||||||
|
if (newClientName.toUpperCase() === (oldClientName || '').toUpperCase()) {
|
||||||
|
shortInput.val(oldShortName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newClientName.length == 0) {
|
||||||
|
shortInput.val('');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newClientName.length > 0) {
|
||||||
|
let shortName = newClientName.substring(0, 10).replace(/\s+/g, '').toUpperCase();
|
||||||
|
shortInput.val(shortName);
|
||||||
|
makeUniqueShortName(shortName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function makeUniqueShortName(baseName) {
|
||||||
|
let input = $("#short_name")[0]; // input element
|
||||||
|
checkDuplicateTableFieldValue("clients", "short_name", baseName, function(isDuplicate) {
|
||||||
|
if (isDuplicate) {
|
||||||
|
// Append sequence until unique
|
||||||
|
let counter = 1;
|
||||||
|
function tryNext() {
|
||||||
|
let padded = String(counter).padStart(3, '0'); // 001, 002, 003
|
||||||
|
let newName = baseName + padded;
|
||||||
|
|
||||||
|
checkDuplicateTableFieldValue("clients", "short_name", newName, function(exists) {
|
||||||
|
if (exists) {
|
||||||
|
counter++;
|
||||||
|
tryNext(); // keep checking
|
||||||
|
} else {
|
||||||
|
$("#short_name").val(newName);
|
||||||
|
validateInput(input, "clients", "short_name", "clientBtnSubmit");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
tryNext();
|
||||||
|
} else {
|
||||||
|
$("#short_name").val(baseName);
|
||||||
|
validateInput(input, "clients", "short_name", "clientBtnSubmit");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function validateInput(input, table, field, submitButId){
|
function validateInput(input, table, field, submitButId){
|
||||||
|
|
||||||
let value = $(input).val();
|
let value = $(input).val();
|
||||||
|
|||||||
@ -294,10 +294,10 @@ table.dataTable thead th {
|
|||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$('#lead_id').select2();
|
$('#lead_id').select2();
|
||||||
})
|
})
|
||||||
|
var table;
|
||||||
$(document).ready(function()
|
$(document).ready(function()
|
||||||
{
|
{
|
||||||
$('#tickets-table').DataTable({
|
table = $('#tickets-table').DataTable({
|
||||||
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
|
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
|
||||||
"<'row'<'col-sm-12'tr>>" +
|
"<'row'<'col-sm-12'tr>>" +
|
||||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||||
@ -326,6 +326,11 @@ $(document).ready(function()
|
|||||||
extend: 'csv',
|
extend: 'csv',
|
||||||
text: '<i class="mdi mdi-file-delimited " ></i><span class=" btn-custom"> CSV </span>',
|
text: '<i class="mdi mdi-file-delimited " ></i><span class=" btn-custom"> CSV </span>',
|
||||||
title: 'Client-List',
|
title: 'Client-List',
|
||||||
|
// title: function() {
|
||||||
|
// return $('#toggleButtons').is(':checked')
|
||||||
|
// ? 'GC-Client-List'
|
||||||
|
// : 'RC-Client-List';
|
||||||
|
// },
|
||||||
className: 'app-btn-primary ',
|
className: 'app-btn-primary ',
|
||||||
exportOptions: {
|
exportOptions: {
|
||||||
columns: ':not(:last-child)'
|
columns: ':not(:last-child)'
|
||||||
@ -340,13 +345,104 @@ $(document).ready(function()
|
|||||||
_INPUT_
|
_INPUT_
|
||||||
<i class="mdi mdi-magnify datatable-search-icon"></i>
|
<i class="mdi mdi-magnify datatable-search-icon"></i>
|
||||||
</div>`,
|
</div>`,
|
||||||
searchPlaceholder: "Search"
|
searchPlaceholder: "Search",
|
||||||
|
emptyTable: '<div class="text-center text-muted">No Data found</div>'
|
||||||
},
|
},
|
||||||
paging: true ,
|
paging: true ,
|
||||||
// pagingType: 'full_numbers'
|
// pagingType: 'full_numbers'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// $(".datatable-buttons").prepend(`
|
||||||
|
// <label class="switch">
|
||||||
|
// <input type="checkbox" id="toggleButtons">
|
||||||
|
// <span">Group</span>
|
||||||
|
// </label>
|
||||||
|
// `);
|
||||||
|
|
||||||
|
$(".datatable-buttons").prepend(`
|
||||||
|
<span id="statusSwitchWrapper" class="dt-switch-wrapper">
|
||||||
|
<span class="custom-switch" style="text-align: left;">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="toggleButtons" checked>
|
||||||
|
<label class="custom-control-label" for="toggleButtons" style="vertical-align: middle !important;">Group Client</label>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
`);
|
||||||
|
$('#toggleButtons').on('change', function() {
|
||||||
|
let type = $(this).is(':checked') ? 1 : 2;
|
||||||
|
// $('div.col-6 h4').text(
|
||||||
|
// $(this).is(':checked')
|
||||||
|
// ? "GC Client List"
|
||||||
|
// : "RC Client List"
|
||||||
|
// );
|
||||||
|
let url = '<?= base_url('client/typeList/') ?>' + type;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: url,
|
||||||
|
method: 'GET',
|
||||||
|
success: function(response) {
|
||||||
|
if (response.status === "success" && Array.isArray(response.data)) {
|
||||||
|
renderRows(response.data);
|
||||||
|
} else {
|
||||||
|
renderRows([]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
console.error("Error loading:", error);
|
||||||
|
renderRows([]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function renderRows(data) {
|
||||||
|
table.clear();
|
||||||
|
if (Array.isArray(data) && data.length) {
|
||||||
|
data.forEach((row, index) => {
|
||||||
|
let clientrm = <?= json_encode($client_rm) ?>;
|
||||||
|
let account_managers = "";
|
||||||
|
|
||||||
|
clientrm.forEach(client => {
|
||||||
|
if (client.client_id == row.id) {
|
||||||
|
account_managers += client.account_manager + ", ";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
account_managers = account_managers.replace(/,\s*$/, "");
|
||||||
|
if (account_managers === "") account_managers = "N/A";
|
||||||
|
|
||||||
|
let rowData = [
|
||||||
|
index + 1,
|
||||||
|
`<span class="client_info" data-id="${row.id}">${row.client_name} (${row.short_name})</span>`,
|
||||||
|
account_managers,
|
||||||
|
`<div class="btn-group dropdown">
|
||||||
|
<a href="javascript:void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown">
|
||||||
|
<i class="mdi mdi-dots-horizontal"></i>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
<a class="dropdown-item" href="<?= base_url("client/list/") ?>${row.id}">
|
||||||
|
<i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>Edit
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="<?= base_url("client/deposit/") ?>${row.id}">
|
||||||
|
<i class="mdi mdi-cash mr-2 text-muted font-18 vertical-middle"></i>CD Transactions
|
||||||
|
</a>
|
||||||
|
<?php if(in_array(get_role_id(), [1, 5])) { ?>
|
||||||
|
<a class="dropdown-item" data-id="${row.id}" onclick="removeClient(this)">
|
||||||
|
<i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete
|
||||||
|
</a>
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>`
|
||||||
|
];
|
||||||
|
|
||||||
|
let newRow = table.row.add(rowData);
|
||||||
|
$(newRow.node()).find('td:eq(0)').addClass('text-center');
|
||||||
|
$(newRow.node()).find('td:eq(1)').addClass('client_info').attr('data-id', row.id);
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
table.draw();
|
||||||
|
}
|
||||||
|
|
||||||
//DO NOT REMOVE THIS FUNCTION >>> THI FUNCTION FOR CLIENT SOFT DELETE
|
//DO NOT REMOVE THIS FUNCTION >>> THI FUNCTION FOR CLIENT SOFT DELETE
|
||||||
// function removeClient(element)
|
// function removeClient(element)
|
||||||
// {
|
// {
|
||||||
|
|||||||
@ -332,7 +332,8 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="#hr-access-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2" id="hr_access_tab" onclick="appendHrAccessControllHtml(this)">
|
<a href="#hr-access-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2" id="hr_access_tab" onclick="appendHrAccessControllHtml(this)">
|
||||||
<span class="mr-1"><i class="mdi mdi-book-open-page-variant"></i></span>
|
<span class="mr-1"><i class="mdi mdi-book-open-page-variant"></i></span>
|
||||||
<span class="d-none d-sm-inline-block">HR Access Control</span>
|
<span class="d-none d-sm-inline-block">Client Access Control</span>
|
||||||
|
<!-- Name Changed "HR Access Controll" into "Client Access Control" -->
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
@ -563,7 +564,7 @@
|
|||||||
client_notification();
|
client_notification();
|
||||||
});
|
});
|
||||||
|
|
||||||
//HR Access Controll
|
//HR Access Controll also know as "Client Access Control"
|
||||||
function appendHrAccessControllHtml(input) {
|
function appendHrAccessControllHtml(input) {
|
||||||
console.log(input.id);
|
console.log(input.id);
|
||||||
let client_id = $('#general_PrimaryKey').val();
|
let client_id = $('#general_PrimaryKey').val();
|
||||||
|
|||||||
@ -200,7 +200,8 @@
|
|||||||
<span class="slider round" style="height: 27px;"></span>
|
<span class="slider round" style="height: 27px;"></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label for="policy_visibility" style="position: relative;bottom: 5px;left: 85px;">Policy Visibilty in Enrollment App</label>
|
<!-- <label for="policy_visibility" style="position: relative;bottom: 5px;left: 85px;">Policy Visibilty in Enrollment App</label> -->
|
||||||
|
<label for="policy_visibility" style="position: relative;bottom: 5px;left: 85px;">Policy Visibilty in Employee App</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-4 EB">
|
<div class="form-group col-md-4 EB">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user