MERGE_TEST_BDS&AUTO_MAIL_TEMPLATES
This commit is contained in:
commit
1a3ff04f85
@ -100,5 +100,7 @@ class Autoload extends AutoloadConfig
|
|||||||
* @var string[]
|
* @var string[]
|
||||||
* @phpstan-var list<string>
|
* @phpstan-var list<string>
|
||||||
*/
|
*/
|
||||||
public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload', 'excel_import_export', 'file', 'drive','ExcelSanitizeHelper', 'api_helper'];
|
public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload',
|
||||||
|
'excel_import_export', 'file', 'drive','ExcelSanitizeHelper', 'api_helper','exception'
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -329,6 +329,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) {
|
|||||||
$routes->get("getCDAccNoByClientAndInsurer/(:any)", "ClientController::getCDAccNoByClientAndInsurer/$1");
|
$routes->get("getCDAccNoByClientAndInsurer/(:any)", "ClientController::getCDAccNoByClientAndInsurer/$1");
|
||||||
$routes->post("createClientWithMinimalData", "ClientController::createClientWithMinimalData");
|
$routes->post("createClientWithMinimalData", "ClientController::createClientWithMinimalData");
|
||||||
$routes->post("createVehicleWithMinimalData", "ClientController::createVehicleWithMinimalData");
|
$routes->post("createVehicleWithMinimalData", "ClientController::createVehicleWithMinimalData");
|
||||||
|
$routes->post("createVehicleWithMinimalDataForBDS", "ClientController::createVehicleWithMinimalDataForBDS");
|
||||||
$routes->post("createClientBranchWithMinamalData", "ClientController::createClientBranchWithMinamalData");
|
$routes->post("createClientBranchWithMinamalData", "ClientController::createClientBranchWithMinamalData");
|
||||||
$routes->post("createClientPolicyWithMinimalData", "ClientController::createClientPolicyWithMinimalData");
|
$routes->post("createClientPolicyWithMinimalData", "ClientController::createClientPolicyWithMinimalData");
|
||||||
$routes->post("createCDAccountNumberUsingAjax", "MasterController::createCDAccountNumberUsingAjax");
|
$routes->post("createCDAccountNumberUsingAjax", "MasterController::createCDAccountNumberUsingAjax");
|
||||||
@ -690,6 +691,7 @@ $routes->group('test', function($routes) {
|
|||||||
$routes->get('generatePDF', 'TestingController::generatePDF');
|
$routes->get('generatePDF', 'TestingController::generatePDF');
|
||||||
$routes->get('viewPDF', 'TestingController::viewPDF');
|
$routes->get('viewPDF', 'TestingController::viewPDF');
|
||||||
$routes->get('generate-pdf-view', 'TestingController::generatePDFWithView');
|
$routes->get('generate-pdf-view', 'TestingController::generatePDFWithView');
|
||||||
|
$routes->get('param/(:any)', 'TestingController::ptedfitdata/$1');
|
||||||
});
|
});
|
||||||
$routes->cli('cli/testcli', 'TestingController::testcli');
|
$routes->cli('cli/testcli', 'TestingController::testcli');
|
||||||
|
|
||||||
|
|||||||
@ -999,31 +999,52 @@ class ClientController extends AdminController
|
|||||||
$data['client_id'] = $this->request->getPost('client_id');
|
$data['client_id'] = $this->request->getPost('client_id');
|
||||||
$data['updated_by'] = get_session_userid();
|
$data['updated_by'] = get_session_userid();
|
||||||
$inserted = false;
|
$inserted = false;
|
||||||
|
// print_r($this->request->getPost()); die;
|
||||||
|
|
||||||
if ($this->request->getPost('head')) {
|
if ($this->request->getPost('head')) {
|
||||||
|
|
||||||
$data['user_id'] = $this->request->getPost('head');
|
$data['user_id'] = $this->request->getPost('head');
|
||||||
$checkHead = $this->clientRMModel->checkExistenceOfClientRelation($id, $this->request->getPost('head'), 1);
|
$this->clientRMModel->where('client_id', $id)->where('level', 1)->delete();
|
||||||
if ($checkHead) {
|
|
||||||
$inserted = $this->clientRMModel->where('client_id', $id)->where('level', 1)->set($data)->update();
|
$data['level'] = "1";
|
||||||
} else {
|
$data['user_id'] = $this->request->getPost('head');
|
||||||
$data['level'] = "1";
|
$inserted = $this->clientRMModel->insert($data);
|
||||||
$data['user_id'] = $this->request->getPost('head');
|
|
||||||
$inserted = $this->clientRMModel->insert($data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->request->getPost('manager')) {
|
if ($this->request->getPost('manager')) {
|
||||||
|
|
||||||
$data['user_id'] = $this->request->getPost('manager');
|
$data['user_id'] = $this->request->getPost('manager');
|
||||||
$checkHead = $this->clientRMModel->checkExistenceOfClientRelation($id, $this->request->getPost('manager'), 2);
|
$this->clientRMModel->where('client_id', $id)->where('level', 2)->delete();
|
||||||
if ($checkHead) {
|
|
||||||
$inserted = $this->clientRMModel->where('client_id', $id)->where('level', 2)->set($data)->update();
|
$data['level'] = "2";
|
||||||
} else {
|
$data['user_id'] = $this->request->getPost('manager');
|
||||||
$data['level'] = "2";
|
$inserted = $this->clientRMModel->insert($data);
|
||||||
$data['user_id'] = $this->request->getPost('manager');
|
|
||||||
$inserted = $this->clientRMModel->insert($data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if ($this->request->getPost('head')) {
|
||||||
|
// $data['user_id'] = $this->request->getPost('head');
|
||||||
|
// $checkHead = $this->clientRMModel->checkExistenceOfClientRelation($id, $this->request->getPost('head'), 1);
|
||||||
|
// if ($checkHead) {
|
||||||
|
// $inserted = $this->clientRMModel->where('client_id', $id)->where('level', 1)->set($data)->update();
|
||||||
|
// } else {
|
||||||
|
// $data['level'] = "1";
|
||||||
|
// $data['user_id'] = $this->request->getPost('head');
|
||||||
|
// $inserted = $this->clientRMModel->insert($data);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if ($this->request->getPost('manager')) {
|
||||||
|
// $data['user_id'] = $this->request->getPost('manager');
|
||||||
|
// $checkHead = $this->clientRMModel->checkExistenceOfClientRelation($id, $this->request->getPost('manager'), 2);
|
||||||
|
// if ($checkHead) {
|
||||||
|
// $inserted = $this->clientRMModel->where('client_id', $id)->where('level', 2)->set($data)->update();
|
||||||
|
// } else {
|
||||||
|
// $data['level'] = "2";
|
||||||
|
// $data['user_id'] = $this->request->getPost('manager');
|
||||||
|
// $inserted = $this->clientRMModel->insert($data);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if ($this->request->getPost('account_manager')) {
|
if ($this->request->getPost('account_manager')) {
|
||||||
|
|
||||||
$this->clientRMModel->where('client_id', $id)->where('level', 3)->delete();
|
$this->clientRMModel->where('client_id', $id)->where('level', 3)->delete();
|
||||||
@ -1517,7 +1538,7 @@ class ClientController extends AdminController
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Save Rack Rate function
|
||||||
public function createClientPolicyPremium()
|
public function createClientPolicyPremium()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -4422,7 +4443,9 @@ class ClientController extends AdminController
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public function createClientWithMinimalData()
|
// ------------- CLIENT AND VEHICLE ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
public function createClientWithMinimalData2()
|
||||||
{
|
{
|
||||||
$postData = $this->request->getPost();
|
$postData = $this->request->getPost();
|
||||||
// print_r($postData); die;
|
// print_r($postData); die;
|
||||||
@ -4474,7 +4497,6 @@ class ClientController extends AdminController
|
|||||||
'name' => $postData['name'],
|
'name' => $postData['name'],
|
||||||
'mobile' => $postData['mobile'],
|
'mobile' => $postData['mobile'],
|
||||||
'email' => $postData['email'],
|
'email' => $postData['email'],
|
||||||
|
|
||||||
];
|
];
|
||||||
$this->levelContactModel->insert($contact_data);
|
$this->levelContactModel->insert($contact_data);
|
||||||
}
|
}
|
||||||
@ -4489,6 +4511,89 @@ class ClientController extends AdminController
|
|||||||
], 200);
|
], 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createClientWithMinimalData()
|
||||||
|
{
|
||||||
|
$postData = $this->request->getPost();
|
||||||
|
|
||||||
|
// print_r($postData); die;
|
||||||
|
$client_type = $postData['client_type'] ?? null;
|
||||||
|
|
||||||
|
$client_insert = null;
|
||||||
|
if($client_type == 2){
|
||||||
|
|
||||||
|
$client_data = [
|
||||||
|
'client_type' => $postData['client_type'],
|
||||||
|
'client_name' => $postData['client_name'],
|
||||||
|
'email' => $postData['short_name'] ?? $postData['client_name'],
|
||||||
|
'phone' => $postData['mobile'],
|
||||||
|
'client_code' => generate_client_code()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client_insert = $this->clientModel->insert($client_data);
|
||||||
|
|
||||||
|
}else if($client_type == 1){
|
||||||
|
|
||||||
|
$client_data = [
|
||||||
|
'client_type' => $postData['client_type'],
|
||||||
|
'client_name' => $postData['client_name'],
|
||||||
|
'short_name' => $postData['short_name'] ?? $postData['client_name'],
|
||||||
|
'client_code' => generate_client_code(),
|
||||||
|
'entity_type_id' => 2
|
||||||
|
];
|
||||||
|
|
||||||
|
$client_insert = $this->clientModel->insert($client_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$client_insert) {
|
||||||
|
return $this->respond(['status' => false, 'message' => 'Failed to create client'], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Additional logic for non-individual clients (client_type != 2)
|
||||||
|
$branch_insert = null;
|
||||||
|
if ($client_type != 2) {
|
||||||
|
$unit[] = $postData['short_name'] . '-' . 001;
|
||||||
|
$branch_data = [
|
||||||
|
'client_id' => $client_insert,
|
||||||
|
'branch_name' => $postData['branch_name'],
|
||||||
|
'branch_code' => 001,
|
||||||
|
'gst' => $postData['gst'],
|
||||||
|
'units' => json_encode($unit) ?? null,
|
||||||
|
];
|
||||||
|
|
||||||
|
$branch_insert = $this->clientBranchModel->insert($branch_data);
|
||||||
|
if ($branch_insert) {
|
||||||
|
$contact_data = [
|
||||||
|
'ref_id' => $branch_insert,
|
||||||
|
'contact_type' => 'client',
|
||||||
|
'name' => $postData['name'],
|
||||||
|
'email' => $postData['email'],
|
||||||
|
];
|
||||||
|
$this->levelContactModel->insert($contact_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$clients = $this->clientModel
|
||||||
|
->select("*, DATE_FORMAT(dob, '%d-%m-%Y') as dob")
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
// Fetch branches in a single query
|
||||||
|
$branches = $this->clientBranchModel
|
||||||
|
->where('client_id', $client_insert)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'data' => $postData,
|
||||||
|
'client_id' => $client_insert,
|
||||||
|
'branch_id' => $branch_insert ?? null,
|
||||||
|
'clients' => $clients,
|
||||||
|
'branches' => $branches,
|
||||||
|
'message' => 'Client created successfully'
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
|
|
||||||
public function createVehicleWithMinimalData()
|
public function createVehicleWithMinimalData()
|
||||||
{
|
{
|
||||||
$data = $this->request->getPost();
|
$data = $this->request->getPost();
|
||||||
@ -4508,7 +4613,13 @@ class ClientController extends AdminController
|
|||||||
$vehicle_insert = $this->vehicleModel->insert($data);
|
$vehicle_insert = $this->vehicleModel->insert($data);
|
||||||
|
|
||||||
if ($vehicle_insert) {
|
if ($vehicle_insert) {
|
||||||
$vehicles = $this->vehicleModel->where('is_active', 1)->findAll();
|
|
||||||
|
// $vehicles = $this->vehicleModel->where('is_active', 1)->findAll();
|
||||||
|
$vehicles = $this->vehicleModel->select('vehicle.*, clients.client_type')
|
||||||
|
->join('clients', 'clients.id=vehicle.owner')
|
||||||
|
->where('vehicle.is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
return $this->respond([
|
return $this->respond([
|
||||||
'status' => true,
|
'status' => true,
|
||||||
'vehicle_id' => $vehicle_insert,
|
'vehicle_id' => $vehicle_insert,
|
||||||
@ -4525,6 +4636,160 @@ class ClientController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createVehicleWithMinimalDataForBDS()
|
||||||
|
{
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
// print_r($data); die;
|
||||||
|
if (isset($data['client_name']) && !empty($data['client_name'])) {
|
||||||
|
|
||||||
|
$client_type = $data['client_type'] ?? null;
|
||||||
|
|
||||||
|
$client_insert = null;
|
||||||
|
if ($client_type == 2) {
|
||||||
|
|
||||||
|
$client_data = [
|
||||||
|
'client_type' => $data['client_type'],
|
||||||
|
'client_name' => $data['client_name'],
|
||||||
|
'email' => $data['short_name'] ?? $data['client_name'],
|
||||||
|
'phone' => $data['mobile'],
|
||||||
|
'client_code' => generate_client_code()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client_insert = $this->clientModel->insert($client_data);
|
||||||
|
|
||||||
|
} else if ($client_type == 1) {
|
||||||
|
|
||||||
|
$client_data = [
|
||||||
|
'client_type' => $data['client_type'],
|
||||||
|
'client_name' => $data['client_name'],
|
||||||
|
'short_name' => $data['short_name'] ?? $data['client_name'],
|
||||||
|
'client_code' => generate_client_code(),
|
||||||
|
'entity_type_id' => 2
|
||||||
|
];
|
||||||
|
|
||||||
|
$client_insert = $this->clientModel->insert($client_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Additional logic for non-individual clients (client_type != 2)
|
||||||
|
$branch_insert = null;
|
||||||
|
if ($client_type != 2) {
|
||||||
|
$unit[] = $data['short_name'] . '-' . 001;
|
||||||
|
$branch_data = [
|
||||||
|
'client_id' => $client_insert,
|
||||||
|
'branch_name' => $data['branch_name'],
|
||||||
|
'branch_code' => 001,
|
||||||
|
'gst' => $data['gst'],
|
||||||
|
'units' => json_encode($unit) ?? null,
|
||||||
|
];
|
||||||
|
|
||||||
|
$branch_insert = $this->clientBranchModel->insert($branch_data);
|
||||||
|
if ($branch_insert) {
|
||||||
|
$contact_data = [
|
||||||
|
'ref_id' => $branch_insert,
|
||||||
|
'contact_type' => 'client',
|
||||||
|
'name' => $data['name'],
|
||||||
|
'email' => $data['email'],
|
||||||
|
];
|
||||||
|
$this->levelContactModel->insert($contact_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$vehicle_data = [
|
||||||
|
'vehicle_no' => $data['vehicle_no'],
|
||||||
|
'type' => $data['type'],
|
||||||
|
'rc' => $data['rc'],
|
||||||
|
'branch_id' => $branch_insert,
|
||||||
|
'owner' => $client_insert,
|
||||||
|
];
|
||||||
|
|
||||||
|
$vehicle_insert = $this->vehicleModel->insert($vehicle_data);
|
||||||
|
|
||||||
|
if ($vehicle_insert) {
|
||||||
|
|
||||||
|
// $vehicles = $this->vehicleModel->where('is_active', 1)->findAll();
|
||||||
|
$vehicles = $this->vehicleModel->select('vehicle.*, clients.client_type')
|
||||||
|
->join('clients', 'clients.id = vehicle.owner')
|
||||||
|
->where('vehicle.is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$clients = $this->clientModel
|
||||||
|
->select("*, DATE_FORMAT(dob, '%d-%m-%Y') as dob")
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
// Fetch branches in a single query
|
||||||
|
$branches = $this->clientBranchModel
|
||||||
|
->where('client_id', $client_insert)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'vehicle_id' => $vehicle_insert,
|
||||||
|
'client_id' => $client_insert,
|
||||||
|
'branch_id' => $branch_insert,
|
||||||
|
'data' => $data,
|
||||||
|
'clients' => $clients,
|
||||||
|
'branches' => $branches,
|
||||||
|
'vehicles' => $vehicles,
|
||||||
|
'message' => 'Vehicle created successfully'
|
||||||
|
], 200);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return $this->respond(['status' => false, 'message' => 'Failed to created vehicle'], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (isset($data['owner']) && !empty($data['owner'])) {
|
||||||
|
|
||||||
|
$vehicle_data = [
|
||||||
|
'vehicle_no' => $data['vehicle_no'],
|
||||||
|
'type' => $data['type'],
|
||||||
|
'rc' => $data['rc'],
|
||||||
|
'branch_id' => $data['branch_id'] ?? null,
|
||||||
|
'owner' => $data['owner'],
|
||||||
|
];
|
||||||
|
|
||||||
|
$vehicle_insert = $this->vehicleModel->insert($vehicle_data);
|
||||||
|
|
||||||
|
$vehicles = $this->vehicleModel->select('vehicle.*, clients.client_type')
|
||||||
|
->join('clients', 'clients.id = vehicle.owner')
|
||||||
|
->where('vehicle.is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$clients = $this->clientModel
|
||||||
|
->select("*, DATE_FORMAT(dob, '%d-%m-%Y') as dob")
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
// Fetch branches in a single query
|
||||||
|
$branches = $this->clientBranchModel
|
||||||
|
->where('client_id', $data['owner'])
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
if ($vehicle_insert) {
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'vehicle_id' => $vehicle_insert,
|
||||||
|
'client_id' => $data['owner'],
|
||||||
|
'branch_id' => $data['branch_id'],
|
||||||
|
'data' => $data,
|
||||||
|
'clients' => $clients,
|
||||||
|
'branches' => $branches,
|
||||||
|
'vehicles' => $vehicles,
|
||||||
|
'message' => 'Vehicle created successfully'
|
||||||
|
], 200);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return $this->respond(['status' => false, 'message' => 'Failed to created vehicle'], 200);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return $this->respond(['status' => false, 'message' => 'Failed to created vehicle'], 200);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function createClientPolicyWithMinimalData()
|
public function createClientPolicyWithMinimalData()
|
||||||
{
|
{
|
||||||
$data = $this->request->getPost();
|
$data = $this->request->getPost();
|
||||||
@ -4560,6 +4825,9 @@ class ClientController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ------------- CLIENT AND VEHICLE ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
public function getPolicyDetailsByPolicyId($id)
|
public function getPolicyDetailsByPolicyId($id)
|
||||||
{
|
{
|
||||||
$policies = $this->clientPolicyModel
|
$policies = $this->clientPolicyModel
|
||||||
@ -4604,6 +4872,68 @@ class ClientController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public function get_client_policy_data_using_policy_no()
|
||||||
|
// {
|
||||||
|
// $received_data = $this->request->getGet();
|
||||||
|
// $policy_no = $this->request->getGet('policy_no');
|
||||||
|
// $client_id = $this->request->getGet('client_id');
|
||||||
|
// $client_branch_id = $this->request->getGet('client_branch_id');
|
||||||
|
// $policy_type_id = $this->request->getGet('policy_type_id');
|
||||||
|
// $client_type = $this->request->getGet('client_type');
|
||||||
|
|
||||||
|
// $data = $this->clientPolicyModel
|
||||||
|
// ->select("
|
||||||
|
// client_policy.*,
|
||||||
|
// policy_type.policy_type,
|
||||||
|
// clients.client_type,
|
||||||
|
// clients.client_name,
|
||||||
|
// DATE_FORMAT(client_policy.policy_start_date, '%d/%m/%Y') as policy_start_date,
|
||||||
|
// DATE_FORMAT(client_policy.policy_end_date, '%d/%m/%Y') as policy_end_date
|
||||||
|
// ")
|
||||||
|
// ->join('clients', 'client_policy.client_id = clients.id')
|
||||||
|
// ->join('policy_type', 'client_policy.policy_type_id = policy_type.id')
|
||||||
|
// ->where('client_policy.policy_no', $policy_no)
|
||||||
|
// ->where('client_policy.is_active', 1)
|
||||||
|
// ->where('client_policy.policy_status', 1)
|
||||||
|
// ->first();
|
||||||
|
|
||||||
|
// if ($data) {
|
||||||
|
|
||||||
|
// if ($client_type == 1) {
|
||||||
|
// if ($data['client_id'] == $client_id && $data['client_branch_id'] == $client_branch_id) {
|
||||||
|
|
||||||
|
// if ($data['policy_type_id'] == $policy_type_id) {
|
||||||
|
// return $this->respond(['status' => true, 'data' => $data, 'code' => 200, 'received_data' => $received_data], 200);
|
||||||
|
// } else {
|
||||||
|
// $policy_type = $this->policyTypeModel->where('id', $policy_type_id)->first();
|
||||||
|
// $message = 'This policy number is mapped to the selected client with policy type: ' . (!empty($data['policy_type']) ? $data['policy_type'] : 'N/A') . '. You selected: ' . (!empty($policy_type['policy_type']) ? $policy_type['policy_type'] : 'N/A') . '. Please check.';
|
||||||
|
// return $this->respond(['status' => true, 'data' => $data, 'code' => 409, "message" => $message, 'received_data' => $received_data], 200);
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// $message = 'This policy number is already linked to another client' . (!empty($data['client_name']) ? '. Client name : ' . $data['client_name'] : '') . '. Please check';
|
||||||
|
// return $this->respond(['status' => true, 'code' => 409, "message" => $message, 'received_data' => $received_data, 'db_data' => $data], 200);
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// if ($data['client_id'] == $client_id) {
|
||||||
|
|
||||||
|
// if ($data['policy_type_id'] == $policy_type_id) {
|
||||||
|
// return $this->respond(['status' => true, 'data' => $data, 'code' => 200, 'received_data' => $received_data], 200);
|
||||||
|
// } else {
|
||||||
|
// $policy_type = $this->policyTypeModel->where('id', $policy_type_id)->first();
|
||||||
|
// $message = 'This policy number is mapped to the selected client with policy type: ' . (!empty($data['policy_type']) ? $data['policy_type'] : 'N/A') . '. You selected: ' . (!empty($policy_type['policy_type']) ? $policy_type['policy_type'] : 'N/A') . '. Please check.';
|
||||||
|
// return $this->respond(['status' => true, 'data' => $data, 'code' => 409, "message" => $message, 'received_data' => $received_data], 200);
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// $message = 'This policy number is already linked to another client' . (!empty($data['client_name']) ? '. Client name : ' . $data['client_name'] : '') . '. Please check';
|
||||||
|
// return $this->respond(['status' => true, 'code' => 409, "message" => $message, 'received_data' => $received_data, 'db_data' => $data], 200);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// } else {
|
||||||
|
// return $this->respond(['status' => false, 'message' => 'No Data Found', 'code' => 404, 'received_data' => $received_data], 200);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
public function get_client_policy_data_using_policy_no()
|
public function get_client_policy_data_using_policy_no()
|
||||||
{
|
{
|
||||||
$received_data = $this->request->getGet();
|
$received_data = $this->request->getGet();
|
||||||
@ -4613,54 +4943,14 @@ class ClientController extends AdminController
|
|||||||
$policy_type_id = $this->request->getGet('policy_type_id');
|
$policy_type_id = $this->request->getGet('policy_type_id');
|
||||||
$client_type = $this->request->getGet('client_type');
|
$client_type = $this->request->getGet('client_type');
|
||||||
|
|
||||||
$data = $this->clientPolicyModel
|
$data = $this->policyTransactionModel
|
||||||
->select("
|
->where('is_active', 1)
|
||||||
client_policy.*,
|
->where('action_type', 'inception')
|
||||||
policy_type.policy_type,
|
->where('policy_no', $policy_no)
|
||||||
clients.client_type,
|
->countAllResults();
|
||||||
clients.client_name,
|
|
||||||
DATE_FORMAT(client_policy.policy_start_date, '%d/%m/%Y') as policy_start_date,
|
|
||||||
DATE_FORMAT(client_policy.policy_end_date, '%d/%m/%Y') as policy_end_date
|
|
||||||
")
|
|
||||||
->join('clients', 'client_policy.client_id = clients.id')
|
|
||||||
->join('policy_type', 'client_policy.policy_type_id = policy_type.id')
|
|
||||||
->where('client_policy.policy_no', $policy_no)
|
|
||||||
->where('client_policy.is_active', 1)
|
|
||||||
->where('client_policy.policy_status', 1)
|
|
||||||
->first();
|
|
||||||
|
|
||||||
if ($data) {
|
|
||||||
|
|
||||||
if ($client_type == 1) {
|
|
||||||
if ($data['client_id'] == $client_id && $data['client_branch_id'] == $client_branch_id) {
|
|
||||||
|
|
||||||
if ($data['policy_type_id'] == $policy_type_id) {
|
|
||||||
return $this->respond(['status' => true, 'data' => $data, 'code' => 200, 'received_data' => $received_data], 200);
|
|
||||||
} else {
|
|
||||||
$policy_type = $this->policyTypeModel->where('id', $policy_type_id)->first();
|
|
||||||
$message = 'This policy number is mapped to the selected client with policy type: ' . (!empty($data['policy_type']) ? $data['policy_type'] : 'N/A') . '. You selected: ' . (!empty($policy_type['policy_type']) ? $policy_type['policy_type'] : 'N/A') . '. Please check.';
|
|
||||||
return $this->respond(['status' => true, 'data' => $data, 'code' => 409, "message" => $message, 'received_data' => $received_data], 200);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$message = 'This policy number is already linked to another client' . (!empty($data['client_name']) ? '. Client name : ' . $data['client_name'] : '') . '. Please check';
|
|
||||||
return $this->respond(['status' => true, 'code' => 409, "message" => $message, 'received_data' => $received_data, 'db_data' => $data], 200);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($data['client_id'] == $client_id) {
|
|
||||||
|
|
||||||
if ($data['policy_type_id'] == $policy_type_id) {
|
|
||||||
return $this->respond(['status' => true, 'data' => $data, 'code' => 200, 'received_data' => $received_data], 200);
|
|
||||||
} else {
|
|
||||||
$policy_type = $this->policyTypeModel->where('id', $policy_type_id)->first();
|
|
||||||
$message = 'This policy number is mapped to the selected client with policy type: ' . (!empty($data['policy_type']) ? $data['policy_type'] : 'N/A') . '. You selected: ' . (!empty($policy_type['policy_type']) ? $policy_type['policy_type'] : 'N/A') . '. Please check.';
|
|
||||||
return $this->respond(['status' => true, 'data' => $data, 'code' => 409, "message" => $message, 'received_data' => $received_data], 200);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$message = 'This policy number is already linked to another client' . (!empty($data['client_name']) ? '. Client name : ' . $data['client_name'] : '') . '. Please check';
|
|
||||||
return $this->respond(['status' => true, 'code' => 409, "message" => $message, 'received_data' => $received_data, 'db_data' => $data], 200);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if ($data > 0) {
|
||||||
|
return $this->respond(['status' => true, 'message' => 'This policy number is already linked to another client', 'data' => $data, 'code' => 409, 'received_data' => $received_data], 200);
|
||||||
} else {
|
} else {
|
||||||
return $this->respond(['status' => false, 'message' => 'No Data Found', 'code' => 404, 'received_data' => $received_data], 200);
|
return $this->respond(['status' => false, 'message' => 'No Data Found', 'code' => 404, 'received_data' => $received_data], 200);
|
||||||
}
|
}
|
||||||
@ -5259,15 +5549,15 @@ class ClientController extends AdminController
|
|||||||
// ---------- EMP SERVICE CONTROLLER --------------------------------------------------------------------------------
|
// ---------- EMP SERVICE CONTROLLER --------------------------------------------------------------------------------
|
||||||
|
|
||||||
$empServiceController = new EmployeeServiceController();
|
$empServiceController = new EmployeeServiceController();
|
||||||
// $res = $empServiceController->excelFileFormatValidation(['file_id' => '865']);
|
$res = $empServiceController->excelFileFormatValidation(['file_id' => '2055']);
|
||||||
// $res = $empServiceController->excelFileDataValidation(['file_id' => '865']);
|
// $res = $empServiceController->excelFileDataValidation(['file_id' => '865']);
|
||||||
// $res = $empServiceController->employeesOnboardPreprocess(['file_id' => 726]);
|
// $res = $empServiceController->employeesOnboardPreprocess(['file_id' => 726]);
|
||||||
// $res = $empServiceController->employeesOnboardProcess(['file_id' => 835]);
|
// $res = $empServiceController->employeesOnboardProcess(['file_id' => 835]);
|
||||||
// $res = $empServiceController->employeesEnrollmentInsert(['file_id' => 836]);
|
// $res = $empServiceController->employeesEnrollmentInsert(['file_id' => 836]);
|
||||||
// $res = $empServiceController->employeesSIEnhanceProcess(['file_id' => '978']);
|
// $res = $empServiceController->employeesSIEnhanceProcess(['file_id' => '978']);
|
||||||
// $res = $empServiceController->employeeDisembark(['file_id' => '1681']);
|
// $res = $empServiceController->employeeDisembark(['file_id' => '1681']);
|
||||||
// $res = $empServiceController->employeesCorrectionProcess(['file_id' => '1681']);
|
// $res = $empServiceController->employeesCorrectionProcess(['file_id' => '2033']);
|
||||||
// dd( $res);
|
dd( $res);
|
||||||
|
|
||||||
$EmployeeMultiEventServiceController = new EmployeeMultiEventServiceController();
|
$EmployeeMultiEventServiceController = new EmployeeMultiEventServiceController();
|
||||||
// $res = $EmployeeMultiEventServiceController->constructMultiEventData(['file_id' => '1069']);
|
// $res = $EmployeeMultiEventServiceController->constructMultiEventData(['file_id' => '1069']);
|
||||||
@ -5324,6 +5614,7 @@ class ClientController extends AdminController
|
|||||||
$EmpDataServiceController = new EmpDataServiceController();
|
$EmpDataServiceController = new EmpDataServiceController();
|
||||||
// $res = $EmpDataServiceController->generateExcelForDeletion($batch_data); dd($return); die;
|
// $res = $EmpDataServiceController->generateExcelForDeletion($batch_data); dd($return); die;
|
||||||
// $res = $EmpDataServiceController->generateExcelForSIEnhancement($batch_data); die;
|
// $res = $EmpDataServiceController->generateExcelForSIEnhancement($batch_data); die;
|
||||||
|
// $res = $EmpDataServiceController->generateExcelForCorrection($batch_data);
|
||||||
// $res = $EmpDataServiceController->importInceptionFileValidation(['file_id' => 1932]); die;
|
// $res = $EmpDataServiceController->importInceptionFileValidation(['file_id' => 1932]); die;
|
||||||
// $res = $EmpDataServiceController->importDeletionValidation(['file_id' => 304]); //for live
|
// $res = $EmpDataServiceController->importDeletionValidation(['file_id' => 304]); //for live
|
||||||
// $res = $EmpDataServiceController->importSIEnhancementUpdateEndorsementID(['file_id' => 1199]); //for live
|
// $res = $EmpDataServiceController->importSIEnhancementUpdateEndorsementID(['file_id' => 1199]); //for live
|
||||||
|
|||||||
@ -2020,7 +2020,16 @@ class EmpDataServiceController extends BaseController
|
|||||||
// dd($emp_endorsement_table_data, $enrollment_file_id, $no_of_insured, $no_of_dependent);
|
// dd($emp_endorsement_table_data, $enrollment_file_id, $no_of_insured, $no_of_dependent);
|
||||||
|
|
||||||
//update the employee policy data (TPAID or UHID)
|
//update the employee policy data (TPAID or UHID)
|
||||||
$return = $this->employeePolicyModel->bulkUpdate($emp_details);
|
if(!empty($emp_details)){
|
||||||
|
$return = $this->employeePolicyModel->bulkUpdate($emp_details);
|
||||||
|
}else{
|
||||||
|
$this->batchFileModel->update($file_id, [
|
||||||
|
'count' => 0,
|
||||||
|
'status' => "failed-6",
|
||||||
|
'amount' => 0,
|
||||||
|
]);
|
||||||
|
return ['status' => 'error', 'message' => 'There is no data to update']; // Return error code
|
||||||
|
}
|
||||||
|
|
||||||
if(in_array($file['event_type'], ['addition', 'dependent_addition']) && !empty($emp_endorsement_table_data)){
|
if(in_array($file['event_type'], ['addition', 'dependent_addition']) && !empty($emp_endorsement_table_data)){
|
||||||
$this->employeePolicyModel->updateEmpEndorsementAddition($emp_endorsement_table_data);
|
$this->employeePolicyModel->updateEmpEndorsementAddition($emp_endorsement_table_data);
|
||||||
@ -2048,7 +2057,6 @@ class EmpDataServiceController extends BaseController
|
|||||||
$this->storeEndorsementNumber($file_id, $endorsement_id, $enrollment_file_id);
|
$this->storeEndorsementNumber($file_id, $endorsement_id, $enrollment_file_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', 'Inception Update TPA and UHID -- set cashDepositCalculationForInception and sendMailForDownloadingECard in JOB QUEUE');
|
$this->myLogger->logme('error', 'Inception Update TPA and UHID -- set cashDepositCalculationForInception and sendMailForDownloadingECard in JOB QUEUE');
|
||||||
|
|
||||||
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
|
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
|
||||||
@ -2078,18 +2086,18 @@ class EmpDataServiceController extends BaseController
|
|||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
$r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
// $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
||||||
'client_policy_id' => $client_policy_id ?? null,
|
// 'client_policy_id' => $client_policy_id ?? null,
|
||||||
'endorsement_no' => $endorsement_id ?? null,
|
// 'endorsement_no' => $endorsement_id ?? null,
|
||||||
'emp_count' => $emp_count ?? null,
|
// 'emp_count' => $emp_count ?? null,
|
||||||
'action_type' => $file['event_type'] ?? null,
|
// 'action_type' => $file['event_type'] ?? null,
|
||||||
'no_of_insured' => count($no_of_insured ?? []) ?? null,
|
// 'no_of_insured' => count($no_of_insured ?? []) ?? null,
|
||||||
'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
|
// 'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
|
||||||
'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
|
// 'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
|
||||||
'gst' => $base_bremium_and_gst['gst'] ?? null,
|
// 'gst' => $base_bremium_and_gst['gst'] ?? null,
|
||||||
'policy_issue_date' => $policy_issue_date ?? null,
|
// 'policy_issue_date' => $policy_issue_date ?? null,
|
||||||
'created_by' => $file['created_by'] ?? null,
|
// 'created_by' => $file['created_by'] ?? null,
|
||||||
]]);
|
// ]]);
|
||||||
|
|
||||||
// $this->cashDepositCalculationForInception($depositeData);
|
// $this->cashDepositCalculationForInception($depositeData);
|
||||||
// $this->sendMailForDownloadingECard($emp_policy_ids);
|
// $this->sendMailForDownloadingECard($emp_policy_ids);
|
||||||
@ -2518,14 +2526,14 @@ class EmpDataServiceController extends BaseController
|
|||||||
$file_data = $this->getDataByFileId($file_id, 'success');
|
$file_data = $this->getDataByFileId($file_id, 'success');
|
||||||
$this->setPullNotification($file_data);
|
$this->setPullNotification($file_data);
|
||||||
|
|
||||||
$r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
// $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
||||||
'client_policy_id' => $client_policy_id ?? null,
|
// 'client_policy_id' => $client_policy_id ?? null,
|
||||||
'endorsement_no' => $endorsement_id[0] ?? null,
|
// 'endorsement_no' => $endorsement_id[0] ?? null,
|
||||||
'emp_count' => $emp_count ?? null,
|
// 'emp_count' => $emp_count ?? null,
|
||||||
'action_type' => $file['event_type'] ?? null,
|
// 'action_type' => $file['event_type'] ?? null,
|
||||||
'policy_issue_date' => $policy_issue_date ?? null,
|
// 'policy_issue_date' => $policy_issue_date ?? null,
|
||||||
'created_by' => $file['created_by'] ?? null,
|
// 'created_by' => $file['created_by'] ?? null,
|
||||||
]]);
|
// ]]);
|
||||||
|
|
||||||
|
|
||||||
//import file to upload Google Drive
|
//import file to upload Google Drive
|
||||||
@ -3177,18 +3185,18 @@ class EmpDataServiceController extends BaseController
|
|||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
$r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
// $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
||||||
'client_policy_id' => $client_policy_id ?? null,
|
// 'client_policy_id' => $client_policy_id ?? null,
|
||||||
'endorsement_no' => $endorsement_id ?? null,
|
// 'endorsement_no' => $endorsement_id ?? null,
|
||||||
'emp_count' => $emp_count ?? null,
|
// 'emp_count' => $emp_count ?? null,
|
||||||
'action_type' => $file['event_type'] ?? null,
|
// 'action_type' => $file['event_type'] ?? null,
|
||||||
'no_of_insured' => count($no_of_insured ?? []) ?? null,
|
// 'no_of_insured' => count($no_of_insured ?? []) ?? null,
|
||||||
'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
|
// 'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
|
||||||
'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
|
// 'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
|
||||||
'gst' => $base_bremium_and_gst['gst'] ?? null,
|
// 'gst' => $base_bremium_and_gst['gst'] ?? null,
|
||||||
'policy_issue_date' => $policy_issue_date ?? null,
|
// 'policy_issue_date' => $policy_issue_date ?? null,
|
||||||
'created_by' => $file['created_by'] ?? null,
|
// 'created_by' => $file['created_by'] ?? null,
|
||||||
]]);
|
// ]]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3688,18 +3696,18 @@ class EmpDataServiceController extends BaseController
|
|||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
$r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
// $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [
|
||||||
'client_policy_id' => $client_policy_id ?? null,
|
// 'client_policy_id' => $client_policy_id ?? null,
|
||||||
'endorsement_no' => $endorsement_id ?? null,
|
// 'endorsement_no' => $endorsement_id ?? null,
|
||||||
'emp_count' => $emp_count ?? null,
|
// 'emp_count' => $emp_count ?? null,
|
||||||
'action_type' => $file['event_type'] ?? null,
|
// 'action_type' => $file['event_type'] ?? null,
|
||||||
'no_of_insured' => count($no_of_insured ?? []) ?? null,
|
// 'no_of_insured' => count($no_of_insured ?? []) ?? null,
|
||||||
'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
|
// 'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
|
||||||
'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
|
// 'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
|
||||||
'gst' => $base_bremium_and_gst['gst'] ?? null,
|
// 'gst' => $base_bremium_and_gst['gst'] ?? null,
|
||||||
'policy_issue_date' => $policy_issue_date ?? null,
|
// 'policy_issue_date' => $policy_issue_date ?? null,
|
||||||
'created_by' => $file['created_by'] ?? null,
|
// 'created_by' => $file['created_by'] ?? null,
|
||||||
]]);
|
// ]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$file_data = $this->getDataByFileId($file_id, 'success');
|
$file_data = $this->getDataByFileId($file_id, 'success');
|
||||||
|
|||||||
@ -526,7 +526,7 @@ class EmployeeController extends AdminController
|
|||||||
$client_branch_id = $this->request->getPost('client_branch_id');
|
$client_branch_id = $this->request->getPost('client_branch_id');
|
||||||
$insurer_or_tpa = $this->request->getPost('insurer_or_tpa');
|
$insurer_or_tpa = $this->request->getPost('insurer_or_tpa');
|
||||||
$actions = $this->request->getPost('action_type');
|
$actions = $this->request->getPost('action_type');
|
||||||
$policy_issue_date = $this->request->getPost('policy_issue_date');
|
$policy_issue_date = $this->request->getPost('policy_issue_date') ?? null;
|
||||||
|
|
||||||
$client_data = $this->clientPolicyModel->getCliendDataForExcelFileName($client_policy_id);
|
$client_data = $this->clientPolicyModel->getCliendDataForExcelFileName($client_policy_id);
|
||||||
$file_name = generate_filename($client_data['short_name'], $event_type, $actions, $insurer_or_tpa, $client_data['policy_type'], $client_data['branch_code']);
|
$file_name = generate_filename($client_data['short_name'], $event_type, $actions, $insurer_or_tpa, $client_data['policy_type'], $client_data['branch_code']);
|
||||||
@ -544,9 +544,7 @@ class EmployeeController extends AdminController
|
|||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
$batch_data['policy_issue_date'] = (!empty($policy_issue_date) && strtotime($policy_issue_date) !== false)
|
$batch_data['policy_issue_date'] = (!empty($policy_issue_date) && strtotime($policy_issue_date) !== false) ? change_date_format($policy_issue_date) : null;
|
||||||
? change_date_format($policy_issue_date)
|
|
||||||
: null;
|
|
||||||
|
|
||||||
|
|
||||||
if ($actions == 'export') {
|
if ($actions == 'export') {
|
||||||
|
|||||||
@ -1956,14 +1956,29 @@ class EmployeeMultiEventServiceController extends BaseController
|
|||||||
$field_value = ($field_name == 'dob' ? change_date_format($row[4], 'd-M-Y', 'Y-m-d') : $row[4]);
|
$field_value = ($field_name == 'dob' ? change_date_format($row[4], 'd-M-Y', 'Y-m-d') : $row[4]);
|
||||||
|
|
||||||
|
|
||||||
|
// $employee = $this->employeeModel
|
||||||
|
// ->where('emp_code', $row[1])
|
||||||
|
// ->where('name', $row[2])
|
||||||
|
// ->where('client_id', $file['client_id'])
|
||||||
|
// ->where('client_branch_id', $file['client_branch_id'])
|
||||||
|
// ->where('emp_status', 'active')
|
||||||
|
// ->where('is_active', 1)
|
||||||
|
// ->first();
|
||||||
|
|
||||||
$employee = $this->employeeModel
|
$employee = $this->employeeModel
|
||||||
->where('emp_code', $row[1])
|
->select('employees.*')
|
||||||
->where('name', $row[2])
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||||
->where('client_id', $file['client_id'])
|
->where('employees.emp_code', $row[1])
|
||||||
->where('client_branch_id', $file['client_branch_id'])
|
->where('employees.name',$row[2])
|
||||||
->where('emp_status', 'active')
|
->where('employees.client_id',$file['client_id'])
|
||||||
->where('is_active', 1)
|
->where('employees.client_branch_id',$file['client_branch_id'])
|
||||||
->first();
|
->where('employee_polices.client_policy_id',$file['policy_id'])
|
||||||
|
->where('employees.emp_status','active')
|
||||||
|
->where('employees.is_active',1)
|
||||||
|
->where('employee_polices.status','active')
|
||||||
|
->where('employee_polices.is_active',1)
|
||||||
|
->first();
|
||||||
|
|
||||||
$existing_endorsements = $this->empEndorsementModel->where('actions', 'c')
|
$existing_endorsements = $this->empEndorsementModel->where('actions', 'c')
|
||||||
->where('table_name', 'employees')
|
->where('table_name', 'employees')
|
||||||
->where('endorsement_id is null')
|
->where('endorsement_id is null')
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
namespace App\Controllers;
|
namespace App\Controllers;
|
||||||
|
|
||||||
use App\Helpers\MailHelper;
|
use App\Helpers\MailHelper;
|
||||||
|
use App\Helpers\NhanceWelnessSsoHelper;
|
||||||
|
|
||||||
use CodeIgniter\HTTP\IncomingRequest;
|
use CodeIgniter\HTTP\IncomingRequest;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
@ -133,12 +134,25 @@ class EmployeeRestController extends AdminController
|
|||||||
$client_branch_id = $this->request->getGet('client_branch_id');
|
$client_branch_id = $this->request->getGet('client_branch_id');
|
||||||
if ($emp_code) {
|
if ($emp_code) {
|
||||||
$relationship = 'self';
|
$relationship = 'self';
|
||||||
$employee = $this->employeeModel->where('emp_code', $emp_code)
|
// $employee = $this->employeeModel->where('emp_code', $emp_code)
|
||||||
->where('client_id', $client_id)
|
// ->where('client_id', $client_id)
|
||||||
->where('client_branch_id', $client_branch_id)
|
// ->where('client_branch_id', $client_branch_id)
|
||||||
->where('is_active', 1 )
|
// ->where('is_active', 1 )
|
||||||
->where('relationship', $relationship)
|
// ->where('relationship', $relationship)
|
||||||
->first();
|
// ->first();
|
||||||
|
$employee = $this->employeeModel
|
||||||
|
->select('employees.*')
|
||||||
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||||
|
->where('employees.emp_code', $emp_code)
|
||||||
|
->where('employees.client_id', $client_id)
|
||||||
|
->where('employees.client_branch_id', $client_branch_id)
|
||||||
|
->where('employees.is_active', 1 )
|
||||||
|
->where('employees.relationship', $relationship)
|
||||||
|
->where('employee_polices.status', ['active'])
|
||||||
|
->where('employees.is_active', 1)
|
||||||
|
->where('employees.emp_status', ['active'])
|
||||||
|
->first();
|
||||||
|
|
||||||
if (null !== $this->request->getGet('client_policy_id'))
|
if (null !== $this->request->getGet('client_policy_id'))
|
||||||
{
|
{
|
||||||
$date_coverage = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$this->request->getGet('client_policy_id'))->get()->getRow()->date_coverage;
|
$date_coverage = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$this->request->getGet('client_policy_id'))->get()->getRow()->date_coverage;
|
||||||
@ -3809,22 +3823,147 @@ class EmployeeRestController extends AdminController
|
|||||||
|
|
||||||
public function getWellnessUrl()
|
public function getWellnessUrl()
|
||||||
{
|
{
|
||||||
// $url = "https://aam.mohfw.gov.in/home/login";
|
|
||||||
$url = "";
|
|
||||||
|
|
||||||
if (!empty($url)) {
|
$emp_id = $this->request->getGet('emp_id');
|
||||||
return $this->respond([
|
$db = \Config\Database::connect();
|
||||||
'status' => 'success',
|
$data = $db->table('employees e')
|
||||||
'data' => $url
|
->select('pt.policy_type,
|
||||||
], 200);
|
e.name, e.email_corporate as email, e.mobile as phone, e.emp_code as memberId, e.gender, e.dob, e.relationship as relation,
|
||||||
|
cp.policy_no as policyNumber, cp.policy_no as employeeId, cp.policy_start_date as policyStartDate, cp.policy_end_date as policyEndDate')
|
||||||
|
->join('employee_polices ep', 'e.id = ep.employee_id')
|
||||||
|
->join('client_policy cp', 'ep.client_policy_id = cp.id')
|
||||||
|
->join('policy_type pt', 'cp.policy_type_id = pt.id')
|
||||||
|
->where('e.id', $emp_id)
|
||||||
|
->where('e.emp_status', 'active')
|
||||||
|
->where('ep.status', 'active')
|
||||||
|
->where('e.is_active', 1)
|
||||||
|
->where('ep.is_active', 1)
|
||||||
|
->get()
|
||||||
|
->getResultArray();
|
||||||
|
|
||||||
|
|
||||||
|
// Loop through $data and check for policy_type = GMC
|
||||||
|
$userParams = [];
|
||||||
|
foreach ($data as $row) {
|
||||||
|
if ($row['policy_type'] === 'GMC') {
|
||||||
|
$userParams['name'] = $row['name'];
|
||||||
|
$userParams['email'] = $row['email'];
|
||||||
|
$userParams['phone'] = $row['phone'];
|
||||||
|
$userParams['memberId'] = $row['memberId'];
|
||||||
|
$userParams['gender'] = $row['gender'];
|
||||||
|
$userParams['dob'] = $row['dob'];
|
||||||
|
$userParams['relation'] = $row['relation'];
|
||||||
|
$userParams['policyNumber'] = $row['policyNumber'];
|
||||||
|
$userParams['employeeId'] = $row['employeeId'];
|
||||||
|
$userParams['policyStartDate']= $row['policyStartDate'];
|
||||||
|
$userParams['policyEndDate'] = $row['policyEndDate'];
|
||||||
|
$userParams['policyName'] = 'Nhance ' . $row['policy_type'];
|
||||||
|
$userParams['planId'] = 'NHANCE-PLAN-' . $row['policy_type'];
|
||||||
|
$userParams['moduleName'] = 'home';
|
||||||
|
break; // stop after first GMC match
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($userParams)) {
|
||||||
|
return $this->respond(['status' => 'failed','message' => 'Coming soon........!'], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Derive 32-byte key from SHA256
|
||||||
|
$derivedKey = hash('sha256', env('VISIT_SECRET_KEY'), true);
|
||||||
|
|
||||||
|
// Build query string like Node.js
|
||||||
|
$plainText = '';
|
||||||
|
foreach ($userParams as $k => $v) {
|
||||||
|
$plainText .= "&{$k}={$v}";
|
||||||
|
}
|
||||||
|
$plainText = ltrim($plainText, '&');
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
$algorithm = "aes-256-cbc";
|
||||||
|
$encrypted = openssl_encrypt($plainText, $algorithm, $derivedKey, OPENSSL_RAW_DATA, env('VISIT_IV'));
|
||||||
|
|
||||||
|
// Base64URL encode (same as Node.js output)
|
||||||
|
$output = rtrim(strtr(base64_encode($encrypted), '+/', '-_'), '=');
|
||||||
|
|
||||||
|
$baseURL = env('VISIT_BASE_URL');
|
||||||
|
$clientId = env('VISIT_CLIENT_ID');
|
||||||
|
$finalUrl = $baseURL . '/sso?userParams=' . $output . '&clientId=' . $clientId;
|
||||||
|
|
||||||
|
if (!empty($finalUrl)) {
|
||||||
|
return $this->respond(['status' => 'success','data' => $finalUrl], 200);
|
||||||
} else {
|
} else {
|
||||||
return $this->respond([
|
return $this->respond(['status' => 'failed','message' => 'Coming soon........!'], 200);
|
||||||
'status' => 'failed',
|
|
||||||
'message' => 'Coming soon........!'
|
|
||||||
], 200);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// not in use did for testing
|
||||||
|
function encrypt_for_sso(): string {
|
||||||
|
|
||||||
|
|
||||||
|
$key = "32D1D5535157AF3D4667ADAB0CC795D77D022BB281AD3272EB134C72BD0B185E";
|
||||||
|
|
||||||
|
$userParams = [
|
||||||
|
"name" => "John Doe 3",
|
||||||
|
"email" => "john.doe3@email.com",
|
||||||
|
"memberId" => "TEST-REL-01",
|
||||||
|
"gender" => "Male",
|
||||||
|
"dob" => "1997-01-01",
|
||||||
|
"policyName" => "Nhance DEMO",
|
||||||
|
"phone" => "6676126763",
|
||||||
|
"employeeId" => "EMP-NHANCE-TEST-03",
|
||||||
|
"policyNumber" => "EMP-NHANCE-TEST-03",
|
||||||
|
"policyStartDate" => "2025-09-08",
|
||||||
|
"policyEndDate" => "2026-09-08",
|
||||||
|
"moduleName" => "home",
|
||||||
|
"relation" => "self",
|
||||||
|
"planId" => "NHANCE-PLAN-1"
|
||||||
|
];
|
||||||
|
|
||||||
|
$algorithm = "aes-256-cbc";
|
||||||
|
|
||||||
|
// Derive 32-byte key from SHA256
|
||||||
|
$derivedKey = hash('sha256', $key, true);
|
||||||
|
|
||||||
|
// Fixed IV (must be 16 bytes)
|
||||||
|
$iv = "getvisitappdocom";
|
||||||
|
|
||||||
|
// Build query string like Node.js
|
||||||
|
$plainText = '';
|
||||||
|
foreach ($userParams as $k => $v) {
|
||||||
|
$plainText .= "&{$k}={$v}";
|
||||||
|
}
|
||||||
|
$plainText = ltrim($plainText, '&');
|
||||||
|
|
||||||
|
|
||||||
|
// echo ($plainText); die;
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
$encrypted = openssl_encrypt($plainText, $algorithm, $derivedKey, OPENSSL_RAW_DATA, $iv);
|
||||||
|
|
||||||
|
// Base64URL encode (same as Node.js output)
|
||||||
|
$output = rtrim(strtr(base64_encode($encrypted), '+/', '-_'), '=');
|
||||||
|
|
||||||
|
// return $output;
|
||||||
|
|
||||||
|
|
||||||
|
$baseURL = 'https://web.getvisitapp.net';
|
||||||
|
$clientId = 'nhance-gt-2tx7';
|
||||||
|
$finalUrl = $baseURL . '/sso?userParams=' . $output . '&clientId=' . $clientId;
|
||||||
|
|
||||||
|
return $finalUrl;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function getEmployeePolicyCount()
|
public function getEmployeePolicyCount()
|
||||||
{
|
{
|
||||||
$db2 = \Config\Database::connect('preDB');
|
$db2 = \Config\Database::connect('preDB');
|
||||||
|
|||||||
@ -1470,10 +1470,11 @@ class EmployeeServiceController extends AdminController
|
|||||||
//get file name
|
//get file name
|
||||||
$file_id = $params['file_id'];
|
$file_id = $params['file_id'];
|
||||||
$file = $this->fileModel->find($file_id);
|
$file = $this->fileModel->find($file_id);
|
||||||
|
// dd($file);
|
||||||
|
|
||||||
$file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
|
$file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
|
||||||
|
|
||||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
|
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
|
||||||
$sheet = $spreadsheet->getActiveSheet();
|
$sheet = $spreadsheet->getActiveSheet();
|
||||||
|
|
||||||
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
|
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
|
||||||
@ -1498,13 +1499,21 @@ class EmployeeServiceController extends AdminController
|
|||||||
|
|
||||||
|
|
||||||
$employee = $this->employeeModel
|
$employee = $this->employeeModel
|
||||||
->where('emp_code', $row[1])
|
->select('employees.*')
|
||||||
->where('name',$row[2])
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||||
->where('client_id',$file['client_id'])
|
->where('employees.emp_code', $row[1])
|
||||||
->where('client_branch_id',$file['client_branch_id'])
|
->where('employees.name',$row[2])
|
||||||
->where('emp_status','active')
|
->where('employees.client_id',$file['client_id'])
|
||||||
->where('is_active',1)
|
->where('employees.client_branch_id',$file['client_branch_id'])
|
||||||
|
->where('employee_polices.client_policy_id',$file['policy_id'])
|
||||||
|
->where('employees.emp_status','active')
|
||||||
|
->where('employees.is_active',1)
|
||||||
|
->where('employee_polices.status','active')
|
||||||
|
->where('employee_polices.is_active',1)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
// Kint::dump($employee);
|
||||||
|
|
||||||
$existing_endorsements = $this->empEndorsementModel->where('actions','c')
|
$existing_endorsements = $this->empEndorsementModel->where('actions','c')
|
||||||
->where('table_name','employees')
|
->where('table_name','employees')
|
||||||
->where('endorsement_id is null')
|
->where('endorsement_id is null')
|
||||||
@ -1530,7 +1539,7 @@ class EmployeeServiceController extends AdminController
|
|||||||
$this->myLogger->logme("error",'{file_id} uploaded success',['file_id' => $file_id]);
|
$this->myLogger->logme("error",'{file_id} uploaded success',['file_id' => $file_id]);
|
||||||
//set success msg to pull notifications
|
//set success msg to pull notifications
|
||||||
$this->setPullNotification($this->getFileMetaDataByFileId($file_id,'success'));
|
$this->setPullNotification($this->getFileMetaDataByFileId($file_id,'success'));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,30 +4,31 @@ namespace App\Controllers;
|
|||||||
|
|
||||||
use CodeIgniter\Controller;
|
use CodeIgniter\Controller;
|
||||||
use Kint;
|
use Kint;
|
||||||
|
use Ramsey\Uuid\Uuid;
|
||||||
|
|
||||||
|
|
||||||
class ICICILombardController extends AdminController
|
class ICICILombardController extends AdminController
|
||||||
{
|
{
|
||||||
public function generateAuthToken($scope = 'esbhealth')
|
public function generateAuthToken($scope = 'esbhealth')
|
||||||
{
|
{
|
||||||
helper('api');
|
helper('api');
|
||||||
// dd($scope);
|
$url = env('ICICI_TOKEN_URL');
|
||||||
$url = 'https://ilesbapigee.insurancearticlez.com/generate-jwt-token';
|
|
||||||
$method = 'POST';
|
$method = 'POST';
|
||||||
$headers = [
|
$headers = [
|
||||||
'Content-Type: application/x-www-form-urlencoded'
|
'Content-Type: application/x-www-form-urlencoded'
|
||||||
];
|
];
|
||||||
$body = [
|
$body = [
|
||||||
'grant_type' => 'password',
|
'grant_type' => env('ICICI_GRANT_TYPE'),
|
||||||
'username' => 'Nhanceins',
|
'username' => env('ICICI_USER_NAME'),
|
||||||
'password' => 'SSWW7bFNaLxxQyw',
|
'password' => env('ICICI_PASSWORD'),
|
||||||
'scope' => $scope,
|
'scope' => env('ICICI_API_SCOPE'),
|
||||||
'client_id' => 'Nhanceins',
|
'client_id' => env('ICICI_CLIENT_ID'),
|
||||||
'client_secret' => 'P4W0G6TAYMa0MV8bbVSx4pTAqbCcUIg48kCWa6PJykAhGWzPmpPr0iLuNWtz5wqN'
|
'client_secret' => env('ICICI_CLIENT_SECRET')
|
||||||
];
|
];
|
||||||
print_rr(json_encode($body));//die;
|
|
||||||
$response = call_third_party_api($url, $method, $headers, $body);
|
$response = call_third_party_api($url, $method, $headers, $body);
|
||||||
|
|
||||||
print_rr(json_encode($response));//die;
|
|
||||||
if($response['status'] != true){
|
if($response['status'] != true){
|
||||||
return $this->response->setJSON([
|
return $this->response->setJSON([
|
||||||
'status' => false,
|
'status' => false,
|
||||||
@ -40,6 +41,56 @@ class ICICILombardController extends AdminController
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function createEnrollmentBatch()
|
public function createEnrollmentBatch()
|
||||||
|
{
|
||||||
|
$client_id = $this->request->getGet('client_id');
|
||||||
|
$client_branch_id = $this->request->getGet('client_branch_id');
|
||||||
|
$policy_id = $this->request->getGet('policy_id');
|
||||||
|
$event = $this->request->getGet('event');
|
||||||
|
|
||||||
|
//fetch token
|
||||||
|
$tokenResponse = $this->generateAuthToken();
|
||||||
|
if (!$tokenResponse || empty($tokenResponse['data']['access_token'])) {
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Token generation failed.',
|
||||||
|
'data' => $tokenResponse
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$token = $tokenResponse['data']['access_token'];
|
||||||
|
|
||||||
|
|
||||||
|
$url = env('ICICI_BASE_URL').'/batchcreation';
|
||||||
|
$headers = [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
//Prepare body data
|
||||||
|
$db = \Config\Database::connect();
|
||||||
|
$data = $db->table('employee_polices ep')
|
||||||
|
->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.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('client_policy cp', 'ep.client_policy_id = cp.id')
|
||||||
|
->where('ep.client_policy_id', $policy_id)
|
||||||
|
->where('ep.status', 'active')
|
||||||
|
->where('ep.is_active', 1)
|
||||||
|
// ->where('ep.uhid', null)
|
||||||
|
->get()
|
||||||
|
->getResultArray();
|
||||||
|
|
||||||
|
$body = $this->formatPolicyData($data);
|
||||||
|
// dd($body);
|
||||||
|
|
||||||
|
$response = call_third_party_api($url, 'POST', $headers, $body, true); // true = raw body mode
|
||||||
|
// print_rr(json_encode($response));die();
|
||||||
|
return $this->response->setJSON($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEnrollmentBatchStatus()
|
||||||
{
|
{
|
||||||
helper('api');
|
helper('api');
|
||||||
|
|
||||||
@ -53,104 +104,23 @@ class ICICILombardController extends AdminController
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$token = $tokenResponse['data']['access_token'];
|
$token = $tokenResponse['data']['access_token'];
|
||||||
// dd($token);
|
|
||||||
|
|
||||||
$url = 'https://ilesbapigee.insurancearticlez.com/health/ilservices/health/v1/enrollment/batchcreation';
|
|
||||||
$headers = [
|
|
||||||
'Authorization: Bearer ' . $token,
|
|
||||||
'Content-Type: application/json',
|
|
||||||
//'Scope: esbgpabatchcreation'
|
|
||||||
];
|
|
||||||
|
|
||||||
#old policy info start
|
|
||||||
#"PolicyNumber" => "4016/A/51974976/00/000",
|
|
||||||
# "CDBGAccountNumber" => "CD-MUM-3344",
|
|
||||||
#"CorrelationId" => "86383c78-4c67-4e4d-9aa0-8f926fb0d55f",
|
|
||||||
#old policy inf end
|
|
||||||
|
|
||||||
$body = [
|
|
||||||
"PolicyNumber" => "4016/A/O/53077718/00/000",
|
|
||||||
"CDBGAccountNumber" => "CD-MUM-0026",
|
|
||||||
"CorrelationId" => "86383c78-4c67-4e4d-9aa0-8f926fb0d55f",
|
|
||||||
"MemberDetails" => [
|
|
||||||
[
|
|
||||||
"EmployeeMemberId" => "EMPID3625556",
|
|
||||||
"DOJ" => "21-MAR-2019",
|
|
||||||
"InsuredName" => "ABC28144",
|
|
||||||
"DOB" => "7-JUL-1983",
|
|
||||||
"Relationship" => "SELF",
|
|
||||||
"Gender" => "MALE",
|
|
||||||
"DOC" => "08-JUL-2025",
|
|
||||||
"SumInsured" => "400000",
|
|
||||||
"EmailId" => "ABC@GMAIL.COM",
|
|
||||||
"FlagStatus" => "A"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"EmployeeMemberId" => "EMPID3625556",
|
|
||||||
"DOJ" => "21-MAR-2019",
|
|
||||||
"InsuredName" => "ABC28146",
|
|
||||||
"DOB" => "8-AUG-1970",
|
|
||||||
"Relationship" => "MOTHER",
|
|
||||||
"Gender" => "FEMALE",
|
|
||||||
"DOC" => "08-JUL-2025",
|
|
||||||
"SumInsured" => "400000",
|
|
||||||
"EmailId" => "ABC@GMAIL.COM",
|
|
||||||
"FlagStatus" => "A"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"EmployeeMemberId" => "EMPID0502220011",
|
|
||||||
"UHID" => "IL00688842553",
|
|
||||||
"InsuredName" => "ABC28142",
|
|
||||||
"DOB" => "8-SEP-1970",
|
|
||||||
"Gender" => "MALE",
|
|
||||||
"SumInsured" => "400000",
|
|
||||||
"EmailId" => "ABC@GMAIL.COM",
|
|
||||||
"FlagStatus" => "M"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"UHID" => "IL00688842552",
|
|
||||||
"DOL" => "08-JUL-2025",
|
|
||||||
"FlagStatus" => "D"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
// Kint::dump($body);
|
|
||||||
print_rr(json_encode($body));
|
|
||||||
// dd();
|
|
||||||
$response = call_third_party_api($url, 'POST', $headers, ($body),true); // true = raw body mode
|
|
||||||
print_rr(json_encode($response));die();
|
|
||||||
return $this->response->setJSON($response);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getEnrollmentBatchStatus()
|
|
||||||
{
|
|
||||||
helper('api');
|
|
||||||
|
|
||||||
//fetch token
|
|
||||||
$tokenResponse = $this->generateAuthToken('esbgpabatchstatus');
|
|
||||||
if (!$tokenResponse || empty($tokenResponse['data']['access_token'])) {
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => false,
|
|
||||||
'message' => 'Token generation failed.',
|
|
||||||
'data' => $tokenResponse
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$token = $tokenResponse['data']['access_token'];
|
|
||||||
|
|
||||||
|
|
||||||
$url = 'https://ilesbapigee.insurancearticlez.com/health/ilservices/health/v1/enrollment/batchstatus';
|
$url = env('ICICI_BASE_URL').'/batchstatus';
|
||||||
$headers = [
|
$headers = [
|
||||||
'Authorization: Bearer ' . $token,
|
'Authorization: Bearer ' . $token,
|
||||||
'Content-Type: application/json'
|
'Content-Type: application/json'
|
||||||
];
|
];
|
||||||
|
|
||||||
$body = [
|
// dd($headers);
|
||||||
"PolicyNumber" => "4016/A/51974976/00/000",
|
|
||||||
"BatchId" => "2345617878",
|
$body = [
|
||||||
"CorrelationId" => "86383c78-4c67-4e4d-9aa0-8f926fb0d55f"
|
"PolicyNumber" => "4016/A/O/53077718/00/000",
|
||||||
|
"BatchId" => "3646145",
|
||||||
|
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440001"
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = call_third_party_api($url, 'POST', $headers, json_encode($body), true);
|
$response = call_third_party_api($url, 'POST', $headers, $body, true);
|
||||||
|
|
||||||
return $this->response->setJSON($response);
|
return $this->response->setJSON($response);
|
||||||
}
|
}
|
||||||
@ -170,7 +140,9 @@ class ICICILombardController extends AdminController
|
|||||||
}
|
}
|
||||||
$token = $tokenResponse['data']['access_token'];
|
$token = $tokenResponse['data']['access_token'];
|
||||||
|
|
||||||
$url = 'https://ilesbapigee.insurancearticlez.com/health/ilservices/health/v1/enrollment/fetchuhid';
|
// print_rr($token);
|
||||||
|
|
||||||
|
$url = env('ICICI_BASE_URL').'/fetchuhid';
|
||||||
$headers = [
|
$headers = [
|
||||||
'Authorization: Bearer ' . $token,
|
'Authorization: Bearer ' . $token,
|
||||||
'Content-Type: application/json'
|
'Content-Type: application/json'
|
||||||
@ -179,14 +151,113 @@ class ICICILombardController extends AdminController
|
|||||||
$body = [
|
$body = [
|
||||||
"PolicyNumber" => "4016/A/51974976/00/000",
|
"PolicyNumber" => "4016/A/51974976/00/000",
|
||||||
"IMID" => "2345617878",
|
"IMID" => "2345617878",
|
||||||
"CorrelationId" => "86383c78-4c67-4e4d-9aa0-8f926fb0d55f"
|
"CorrelationId" => "86383c78-4c67-4e4d-9aa0-9f926fb0d55e"
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = call_third_party_api($url, 'POST', $headers, json_encode($body), true);
|
$response = call_third_party_api($url, 'POST', $headers, $body, true);
|
||||||
|
|
||||||
return $this->response->setJSON($response);
|
return $this->response->setJSON($response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function formatPolicyData($data)
|
||||||
|
{
|
||||||
|
// Helper to format date
|
||||||
|
$formatDate = function ($date) {
|
||||||
|
return strtoupper(date('j-M-Y', strtotime($date))); // Example: 7-JUL-1983
|
||||||
|
};
|
||||||
|
|
||||||
|
// Generate UUID v4 for CorrelationId
|
||||||
|
$generateUUID = function () {
|
||||||
|
return sprintf(
|
||||||
|
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||||
|
mt_rand(0, 0xffff),
|
||||||
|
mt_rand(0, 0xffff),
|
||||||
|
mt_rand(0, 0xffff),
|
||||||
|
mt_rand(0, 0x0fff) | 0x4000,
|
||||||
|
mt_rand(0, 0x3fff) | 0x8000,
|
||||||
|
mt_rand(0, 0xffff),
|
||||||
|
mt_rand(0, 0xffff),
|
||||||
|
mt_rand(0, 0xffff)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Map MemberDetails
|
||||||
|
$memberDetails = array_map(function ($row) use ($formatDate) {
|
||||||
|
return [
|
||||||
|
"MemberEmpId" => $row['MemberEmpId'],
|
||||||
|
"DOJ" => $formatDate($row['DOJ']),
|
||||||
|
"InsuredName" => $row['InsuredName'],
|
||||||
|
"DOB" => $formatDate($row['DOB']),
|
||||||
|
"Relationship" => strtoupper($row['Relationship']),
|
||||||
|
"Gender" => strtoupper($row['Gender']),
|
||||||
|
"DOC" => $formatDate($row['DOC']),
|
||||||
|
"SumInsured" => $row['SumInsured'],
|
||||||
|
"EmailId" => $row['EmailId'],
|
||||||
|
"FlagStatus" => "A" // fixed value
|
||||||
|
];
|
||||||
|
}, $data);
|
||||||
|
|
||||||
|
// Final body
|
||||||
|
return [
|
||||||
|
"PolicyNumber" => $data[0]['policyNumber'] ?? null,
|
||||||
|
"CDBGAccountNumber" => $data[0]['CDBGAccountNumber'] ?? null , // "CD-MUM-0026",
|
||||||
|
"CorrelationId" => $generateUUID(),
|
||||||
|
"MemberDetails" => $memberDetails
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// $body = [
|
||||||
|
// "PolicyNumber" => "4016/A/O/53077718/00/000",
|
||||||
|
// "CDBGAccountNumber" => "CD-MUM-0026",
|
||||||
|
// "CorrelationId" => "550e8400-e29b-41d4-a716-446655440001",
|
||||||
|
// "MemberDetails" => [
|
||||||
|
// [
|
||||||
|
// "MemberEmpId" => "EMPID3625557",
|
||||||
|
// "DOJ" => "21-MAR-2019",
|
||||||
|
// "InsuredName" => "Kumar",
|
||||||
|
// "DOB" => "7-JUL-1983",
|
||||||
|
// "Relationship" => "SELF",
|
||||||
|
// "Gender" => "MALE",
|
||||||
|
// "DOC" => "08-JUL-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" => "08-JUL-2025",
|
||||||
|
// "SumInsured" => "400000",
|
||||||
|
// "EmailId" => "Saranya@GMAIL.COM",
|
||||||
|
// "FlagStatus" => "A"
|
||||||
|
// ],
|
||||||
|
// ]
|
||||||
|
// ];
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1550,6 +1550,14 @@ class MasterController extends AdminController
|
|||||||
$date = (string) $this->request->getPost('opening_date');
|
$date = (string) $this->request->getPost('opening_date');
|
||||||
$data['opening_date'] = date('Y-m-d', strtotime($date));
|
$data['opening_date'] = date('Y-m-d', strtotime($date));
|
||||||
|
|
||||||
|
$insurer_id = null;
|
||||||
|
$insurer_branch_id = null;
|
||||||
|
if(isset($data['insurer_and_insurer_branch']) && !empty($data['insurer_and_insurer_branch'])){
|
||||||
|
list($insurer_branch_id, $insurer_id) = explode('-', $data['insurer_and_insurer_branch']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['insurer_branch_id'] = $insurer_branch_id;
|
||||||
|
|
||||||
|
|
||||||
// array with data for CD Traction table
|
// array with data for CD Traction table
|
||||||
$cd_tranction_data = [
|
$cd_tranction_data = [
|
||||||
@ -1578,7 +1586,16 @@ class MasterController extends AdminController
|
|||||||
|
|
||||||
$cd_data = $this->CDMasterModel->where('client_id', $data['client_id'])->where('insurer_id', $data['insurer_id'])->findAll();
|
$cd_data = $this->CDMasterModel->where('client_id', $data['client_id'])->where('insurer_id', $data['insurer_id'])->findAll();
|
||||||
|
|
||||||
return $this->respond(['status' => true, 'data' => $cd_data, 'cd_ac_no'=>$data['cd_ac_no'], 'message' => 'CD Account number created successfully', "FOR BDS PURPOSE"], 200);
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'cd_ac_pk' => $insert,
|
||||||
|
'data' => $cd_data,
|
||||||
|
'received_data' => $data,
|
||||||
|
'cd_ac_no'=>$data['cd_ac_no'],
|
||||||
|
'message' => 'CD Account number created successfully',
|
||||||
|
"FOR BDS PURPOSE"
|
||||||
|
], 200);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
return $this->respond(['status' => false, 'message' => 'Failed to created CD Account number'], 200);
|
return $this->respond(['status' => false, 'message' => 'Failed to created CD Account number'], 200);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,6 +36,7 @@ use App\Models\BdsPlacementModel;
|
|||||||
use Kint\Kint;
|
use Kint\Kint;
|
||||||
use App\Helpers\MailHelper;
|
use App\Helpers\MailHelper;
|
||||||
use App\Helpers\ExcelSanitizeHelper;
|
use App\Helpers\ExcelSanitizeHelper;
|
||||||
|
use App\Models\NhanceBranchModel;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
class PolicyTransactionController extends BaseController
|
class PolicyTransactionController extends BaseController
|
||||||
@ -69,6 +70,7 @@ class PolicyTransactionController extends BaseController
|
|||||||
protected $filesModel;
|
protected $filesModel;
|
||||||
protected $coShareStmtDetailsModel;
|
protected $coShareStmtDetailsModel;
|
||||||
protected $BdsPlacementModel;
|
protected $BdsPlacementModel;
|
||||||
|
protected $nhanceBranchModel;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@ -100,6 +102,7 @@ class PolicyTransactionController extends BaseController
|
|||||||
$this->filesModel = new FileModel();
|
$this->filesModel = new FileModel();
|
||||||
$this->coShareStmtDetailsModel = new COShareStmtDetailsModel();
|
$this->coShareStmtDetailsModel = new COShareStmtDetailsModel();
|
||||||
$this->BdsPlacementModel = new BdsPlacementModel();
|
$this->BdsPlacementModel = new BdsPlacementModel();
|
||||||
|
$this->nhanceBranchModel = new NhanceBranchModel();
|
||||||
$this->invoiceStatus = [
|
$this->invoiceStatus = [
|
||||||
'pending' => 'Pending',
|
'pending' => 'Pending',
|
||||||
'generated' => 'Generated',
|
'generated' => 'Generated',
|
||||||
@ -115,6 +118,7 @@ class PolicyTransactionController extends BaseController
|
|||||||
|
|
||||||
// Static arrays for dropdowns
|
// Static arrays for dropdowns
|
||||||
$data['issuer'] = [1 => 'JIBS', 2 => 'Nhance'];
|
$data['issuer'] = [1 => 'JIBS', 2 => 'Nhance'];
|
||||||
|
$data['issuer_branch'] = $this->nhanceBranchModel->where('is_active', 1)->findAll();
|
||||||
$data['client_type'] = [1 => 'Group', 2 => 'Individual'];
|
$data['client_type'] = [1 => 'Group', 2 => 'Individual'];
|
||||||
$data['issuing_type'] = [1 => 'Fresh', 2 => 'Renewal', 3 => 'Roll Over'];
|
$data['issuing_type'] = [1 => 'Fresh', 2 => 'Renewal', 3 => 'Roll Over'];
|
||||||
$data['policy_status'] = [
|
$data['policy_status'] = [
|
||||||
@ -255,6 +259,7 @@ class PolicyTransactionController extends BaseController
|
|||||||
$id = $this->request->getPost('id');
|
$id = $this->request->getPost('id');
|
||||||
$data = $this->preparePolicyData();
|
$data = $this->preparePolicyData();
|
||||||
$data['cd_ac_pk'] = $this->request->getPost('cd_ac_no');
|
$data['cd_ac_pk'] = $this->request->getPost('cd_ac_no');
|
||||||
|
$data['issuer'] = 2;
|
||||||
$this->myLogger->logme('error', 'Policy Trancaction modified form data ( insert data ) : '. json_encode($data));
|
$this->myLogger->logme('error', 'Policy Trancaction modified form data ( insert data ) : '. json_encode($data));
|
||||||
|
|
||||||
|
|
||||||
@ -334,11 +339,8 @@ class PolicyTransactionController extends BaseController
|
|||||||
$data['policy_with_corr'] = 1;
|
$data['policy_with_corr'] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($data['is_cd_reduce_from_bds'])) {
|
$data['is_cd_reduce_from_bds'] = ($data['policy_type_id'] > 7 && $data['client_type'] == 1) ? 1 : 0;
|
||||||
$data['is_cd_reduce_from_bds'] = 0;
|
|
||||||
} elseif ($data['is_cd_reduce_from_bds']) {
|
|
||||||
$data['is_cd_reduce_from_bds'] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($data['ct_type'] == "") {
|
if ($data['ct_type'] == "") {
|
||||||
$data['ct_type'] = 1;
|
$data['ct_type'] = 1;
|
||||||
@ -400,6 +402,8 @@ class PolicyTransactionController extends BaseController
|
|||||||
private function updateInceptionPolicy($id, $data)
|
private function updateInceptionPolicy($id, $data)
|
||||||
{
|
{
|
||||||
// print_r($data); die;
|
// print_r($data); die;
|
||||||
|
$old_pt_data = $this->policyTransactionModel->where('is_active', 1)->where("id", $id)->first();
|
||||||
|
$old_pt_co_share_data = $this->PTCOShareDetailsModel->where('is_active', 1)->where("id", $id)->first();
|
||||||
if ($this->policyTransactionModel->update($id, $data)) {
|
if ($this->policyTransactionModel->update($id, $data)) {
|
||||||
|
|
||||||
$this->insertTransactionStatus($id, $data, 1);
|
$this->insertTransactionStatus($id, $data, 1);
|
||||||
@ -427,15 +431,22 @@ class PolicyTransactionController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($data['status'] == 'completed' && $data['ct_type'] == 2) {
|
if($old_pt_data['status'] != "completed"){
|
||||||
if ($data['client_type'] == 1 && $data['is_cd_reduce_from_bds'] == 1) {
|
if ($data['status'] == 'completed' && $data['ct_type'] == 2) {
|
||||||
$this->processCompletedStatus($data, $data['client_policy_id'], $data['insurer_id']);
|
if ($data['client_type'] == 1 && $data['is_cd_reduce_from_bds'] == 1) {
|
||||||
|
$this->processCompletedStatus($data, $data['client_policy_id'], $data['insurer_id']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data['pt_co_share_details'] = $this->PTCOShareDetailsModel->where('pt_id', $id)->where('is_active', 1)->findAll();
|
$data['pt_co_share_details'] = $this->PTCOShareDetailsModel->where('pt_id', $id)->where('is_active', 1)->findAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isset($data['cd_amt_changed']) && !empty($data['cd_amt_changed'])){
|
||||||
|
$policy_data = $this->policyTransactionModel->where('is_active', 1)->where('id', $id)->first();
|
||||||
|
$this->cdCorrection($policy_data, $data['cd_amt_changed']);
|
||||||
|
}
|
||||||
|
|
||||||
$client_data = $this->clientModel->where('id', $data['client_id'])->first();
|
$client_data = $this->clientModel->where('id', $data['client_id'])->first();
|
||||||
$data['client_kyc'] = $this->clientKYCDocsModel->where('client_id', $data['client_id'])->findAll();
|
$data['client_kyc'] = $this->clientKYCDocsModel->where('client_id', $data['client_id'])->findAll();
|
||||||
|
|
||||||
@ -621,6 +632,30 @@ class PolicyTransactionController extends BaseController
|
|||||||
DepositHelper::saveDeposit($cdTransactionData, get_session_userid());
|
DepositHelper::saveDeposit($cdTransactionData, get_session_userid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function cdCorrection($data, $amt)
|
||||||
|
{
|
||||||
|
$totalAmount = (int)($amt ?? 0);
|
||||||
|
$description = 'The following amount of Rs. ' . $totalAmount . '/- has been debited towards the difference arising from the change in the BDS base premium.';
|
||||||
|
|
||||||
|
$cdTransactionData = [
|
||||||
|
'amount' => abs($totalAmount),
|
||||||
|
'sub_type_id' => 4,
|
||||||
|
'client_id' => $data['client_id'],
|
||||||
|
'client_policy_id' => $data['client_policy_id'] ?? 0,
|
||||||
|
'endorsement_no' => null,
|
||||||
|
'cd_ac_no' => $data['cd_ac_no'] ?? null,
|
||||||
|
'insurer_id' => $data['insurer_id'],
|
||||||
|
'description' => $description,
|
||||||
|
'transaction_type' => $totalAmount < 0 ? 'Credit' : 'Debit',
|
||||||
|
'updated_by' => get_session_userid(),
|
||||||
|
'event_name' => 'inception',
|
||||||
|
'is_active' => 1,
|
||||||
|
'cd_ac_pk' => $data['cd_ac_pk']
|
||||||
|
];
|
||||||
|
|
||||||
|
DepositHelper::saveDeposit($cdTransactionData, get_session_userid());
|
||||||
|
}
|
||||||
|
|
||||||
private function processInsertIndividualMemberInEmpTable($data)
|
private function processInsertIndividualMemberInEmpTable($data)
|
||||||
{
|
{
|
||||||
// print_r($data);
|
// print_r($data);
|
||||||
@ -753,31 +788,6 @@ class PolicyTransactionController extends BaseController
|
|||||||
->where('policy_transaction.is_active', 1)
|
->where('policy_transaction.is_active', 1)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
// $data['policy_issue_date'] = (isset($data['policy_issue_date']) && $data['policy_issue_date'] !== null && $data['policy_issue_date'] !== '')
|
|
||||||
// ? date('d/m/Y', strtotime($data['policy_issue_date']))
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
// $data['policy_start_date'] = (isset($data['policy_start_date']) && $data['policy_start_date'] !== null && $data['policy_start_date'] !== '')
|
|
||||||
// ? date('d/m/Y', strtotime($data['policy_start_date']))
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
// $data['policy_end_date'] = (isset($data['policy_end_date']) && $data['policy_end_date'] !== null && $data['policy_end_date'] !== '')
|
|
||||||
// ? date('d/m/Y', strtotime($data['policy_end_date']))
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
// $data['renewal_date'] = (isset($data['renewal_date']) && $data['renewal_date'] !== null && $data['renewal_date'] !== '')
|
|
||||||
// ? date('d/m/Y', strtotime($data['renewal_date']))
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
// $data['rollover_date'] = (isset($data['rollover_date']) && $data['rollover_date'] !== null && $data['rollover_date'] !== '')
|
|
||||||
// ? date('d/m/Y', strtotime($data['rollover_date']))
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
// $data['month'] = (isset($data['month']) && $data['month'] !== null && $data['month'] !== '')
|
|
||||||
// ? date('M/Y', strtotime($data['month']))
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
|
|
||||||
$data['created_at'] = (isset($data['created_at']) && $data['created_at'] !== null && $data['created_at'] !== '')
|
$data['created_at'] = (isset($data['created_at']) && $data['created_at'] !== null && $data['created_at'] !== '')
|
||||||
? date('d/m/Y h:i:s A', strtotime($data['created_at']))
|
? date('d/m/Y h:i:s A', strtotime($data['created_at']))
|
||||||
: null;
|
: null;
|
||||||
@ -821,8 +831,6 @@ class PolicyTransactionController extends BaseController
|
|||||||
$data['month'] = null;
|
$data['month'] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// print_r($data); die;
|
// print_r($data); die;
|
||||||
|
|
||||||
$data['renewal_policy'] = $this->clientPolicyModel
|
$data['renewal_policy'] = $this->clientPolicyModel
|
||||||
@ -833,7 +841,6 @@ class PolicyTransactionController extends BaseController
|
|||||||
->where('client_policy.is_active', 1)
|
->where('client_policy.is_active', 1)
|
||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
|
|
||||||
$data['base_policy_data'] = $this->clientPolicyModel
|
$data['base_policy_data'] = $this->clientPolicyModel
|
||||||
->select('client_policy.*, policy_type.policy_type')
|
->select('client_policy.*, policy_type.policy_type')
|
||||||
->join('policy_type', 'policy_type.id = client_policy.policy_type_id')
|
->join('policy_type', 'policy_type.id = client_policy.policy_type_id')
|
||||||
@ -843,6 +850,16 @@ class PolicyTransactionController extends BaseController
|
|||||||
->where('client_policy.is_active', 1)
|
->where('client_policy.is_active', 1)
|
||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
|
$pt_bp_amt = $this->PTCOShareDetailsModel
|
||||||
|
->select('bp_amt, amount')
|
||||||
|
->where('pt_id', $id)
|
||||||
|
->where('co_share_type', 1)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
// dd(db_connect()->getLastQuery() ,$pt_bp_amt);
|
||||||
|
$data['base_cd_amount'] = $pt_bp_amt['amount'] ?? null;
|
||||||
|
|
||||||
|
|
||||||
$ptFileQuery = $this->PTFileModel
|
$ptFileQuery = $this->PTFileModel
|
||||||
->join('policy_transaction', 'pt_files.pt_id = policy_transaction.id')
|
->join('policy_transaction', 'pt_files.pt_id = policy_transaction.id')
|
||||||
@ -999,7 +1016,7 @@ class PolicyTransactionController extends BaseController
|
|||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
// print_r( $data['pt_co_share_details']); die;
|
// print_r( $data['pt_co_share_details']); die;
|
||||||
|
// return $data;
|
||||||
if ($data) {
|
if ($data) {
|
||||||
return $this->respond(['status' => true, 'data' => $data], 200);
|
return $this->respond(['status' => true, 'data' => $data], 200);
|
||||||
} else {
|
} else {
|
||||||
@ -1059,8 +1076,8 @@ class PolicyTransactionController extends BaseController
|
|||||||
// !dd($this->getEndorsementDataForEdit(17));
|
// !dd($this->getEndorsementDataForEdit(17));
|
||||||
|
|
||||||
$data['page_name'] = 'Endorsement';
|
$data['page_name'] = 'Endorsement';
|
||||||
|
|
||||||
$data['issuer'] = [1 => 'JIBS', 2 => 'Nhance'];
|
$data['issuer'] = [1 => 'JIBS', 2 => 'Nhance'];
|
||||||
|
$data['issuer_branch'] = $this->nhanceBranchModel->where('is_active', 1)->findAll();
|
||||||
$data['client_type'] = [1 => 'Group', 2 => 'Individual'];
|
$data['client_type'] = [1 => 'Group', 2 => 'Individual'];
|
||||||
|
|
||||||
$data['policy_status'] = [
|
$data['policy_status'] = [
|
||||||
@ -1170,11 +1187,11 @@ class PolicyTransactionController extends BaseController
|
|||||||
$data['policy_with_corr'] = 1;
|
$data['policy_with_corr'] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($data['is_cd_reduce_from_bds'])) {
|
// if (!isset($data['is_cd_reduce_from_bds'])) {
|
||||||
$data['is_cd_reduce_from_bds'] = 0;
|
// $data['is_cd_reduce_from_bds'] = 0;
|
||||||
} elseif ($data['is_cd_reduce_from_bds']) {
|
// } elseif ($data['is_cd_reduce_from_bds']) {
|
||||||
$data['is_cd_reduce_from_bds'] = 1;
|
// $data['is_cd_reduce_from_bds'] = 1;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (empty($data['data_received_date'])) {
|
if (empty($data['data_received_date'])) {
|
||||||
$data['data_received_date'] = null;
|
$data['data_received_date'] = null;
|
||||||
@ -1235,6 +1252,8 @@ class PolicyTransactionController extends BaseController
|
|||||||
$client_branch_id = $issue_type['client_branch_id'];
|
$client_branch_id = $issue_type['client_branch_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$data['is_cd_reduce_from_bds'] = (isset($issue_type['policy_type_id']) && $issue_type['policy_type_id'] > 7 && $data['client_type'] == 1) ? 1 : 0;
|
||||||
|
|
||||||
// if($data['bro_payable_by'] == ""){
|
// if($data['bro_payable_by'] == ""){
|
||||||
// $data['bro_payable_by'] = $issue_type['bro_payable_by'];
|
// $data['bro_payable_by'] = $issue_type['bro_payable_by'];
|
||||||
// }
|
// }
|
||||||
@ -1242,7 +1261,8 @@ class PolicyTransactionController extends BaseController
|
|||||||
if (!$data['id']) {
|
if (!$data['id']) {
|
||||||
|
|
||||||
$data += [
|
$data += [
|
||||||
'issuer' => $issue_type['issuer'] ?? null,
|
'issuer' => 2,
|
||||||
|
'issuer_branch' => $data['issuer_branch'] ?? 1,
|
||||||
'client_type' => $data['client_type'] ?? $issue_type['client_type'] ?? null,
|
'client_type' => $data['client_type'] ?? $issue_type['client_type'] ?? null,
|
||||||
'policy_type_id' => $issue_type['policy_type_id'] ?? null,
|
'policy_type_id' => $issue_type['policy_type_id'] ?? null,
|
||||||
'issue_type' => $issue_type['issue_type'] ?? null,
|
'issue_type' => $issue_type['issue_type'] ?? null,
|
||||||
@ -1304,12 +1324,15 @@ class PolicyTransactionController extends BaseController
|
|||||||
|
|
||||||
private function updateEndorsementTransaction($id, $data)
|
private function updateEndorsementTransaction($id, $data)
|
||||||
{
|
{
|
||||||
|
$old_endorse_data = $this->policyTransactionModel->where('id', $id)->where('is_active', 1)->first();
|
||||||
$update = $this->policyTransactionModel->where('id', $id)->set($data)->update();
|
$update = $this->policyTransactionModel->where('id', $id)->set($data)->update();
|
||||||
|
|
||||||
if ($update) {
|
if ($update) {
|
||||||
|
|
||||||
$this->insertTransactionStatus($id, $data, 1);
|
$this->insertTransactionStatus($id, $data, 1);
|
||||||
$this->handleCompletedStatus($data, $id);
|
if($old_endorse_data['status'] != "completed"){
|
||||||
|
$this->handleCompletedStatus($data, $id);
|
||||||
|
}
|
||||||
$this->insertOrUpdateCoShareDetails($data, $id);
|
$this->insertOrUpdateCoShareDetails($data, $id);
|
||||||
|
|
||||||
|
|
||||||
@ -1323,11 +1346,10 @@ class PolicyTransactionController extends BaseController
|
|||||||
{
|
{
|
||||||
if ($data['client_type'] == 1 && $data['status'] == 'completed' && $data['is_cd_reduce_from_bds'] == 1) {
|
if ($data['client_type'] == 1 && $data['status'] == 'completed' && $data['is_cd_reduce_from_bds'] == 1) {
|
||||||
|
|
||||||
$tolamt = $data['total'][0] ?? 0;
|
$tolamt = (int) $data['total'][0] ?? 0;
|
||||||
|
|
||||||
$description = 'The following amount of Rs. ' . round($tolamt, 2) . '/- has been' .
|
$description = 'The following amount of Rs. ' . round($tolamt, 2) . '/- has been' .
|
||||||
($data['action_type'] == 'deletion' ? ' Credit ' : ' Debit ') . 'from the policy transaction (BDS)';
|
($data['action_type'] == 'deletion' ? ' Credit ' : ' Debit ') . 'from the policy transaction (BDS)';
|
||||||
|
|
||||||
$cd_tranction_data = [
|
$cd_tranction_data = [
|
||||||
'amount' => $tolamt,
|
'amount' => $tolamt,
|
||||||
'sub_type_id' => $data['action_type'] == 'deletion' ? 3 : 4,
|
'sub_type_id' => $data['action_type'] == 'deletion' ? 3 : 4,
|
||||||
|
|||||||
@ -4,6 +4,7 @@ namespace App\Controllers;
|
|||||||
|
|
||||||
use App\Controllers\BaseController;
|
use App\Controllers\BaseController;
|
||||||
use App\Models\EmployeePolicyModel;
|
use App\Models\EmployeePolicyModel;
|
||||||
|
use App\Models\InsurerBranchModel;
|
||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
use CodeIgniter\API\ResponseTrait;
|
use CodeIgniter\API\ResponseTrait;
|
||||||
use Dompdf\Dompdf;
|
use Dompdf\Dompdf;
|
||||||
@ -236,4 +237,80 @@ class TestingController extends BaseController
|
|||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function ptedfitdata($id){
|
||||||
|
$policy_transaction = new PolicyTransactionController();
|
||||||
|
$data = $policy_transaction->getInceptionDataForEdit($id);
|
||||||
|
// dd($data);
|
||||||
|
$insurerBranchModel = new InsurerBranchModel();
|
||||||
|
$insurer_branch = $insurerBranchModel->getInsurerBranchesWithInsurerNames();
|
||||||
|
|
||||||
|
$dataArray = $data['pt_co_share_details']; // Example
|
||||||
|
$cd_ac_pk = 'CD12345';
|
||||||
|
$role_id = 1;
|
||||||
|
$team_id = ['6'];
|
||||||
|
$insurer_branch = $insurer_branch;
|
||||||
|
|
||||||
|
return view('pt_calc_table', [
|
||||||
|
'dataArray' => $dataArray,
|
||||||
|
'cd_ac_pk' => $cd_ac_pk,
|
||||||
|
'role_id' => $role_id,
|
||||||
|
'team_id' => $team_id,
|
||||||
|
'insurer_branch' => $insurer_branch
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateInsurerTable($dataArray, $cd_ac_pk, $role_id, $team_id, $insurer_branch)
|
||||||
|
{
|
||||||
|
$html = '<table id="insurerTable" class="table table-bordered"><tbody>';
|
||||||
|
|
||||||
|
foreach ($dataArray as $index => $data) {
|
||||||
|
$disable_td = ($data['record_count'] > 0) ? 'readonly-select' : '';
|
||||||
|
$insurer = $data['insurer_branch_id'] . '-' . $data['insurer_id'];
|
||||||
|
|
||||||
|
$html .= '<tr id="table_tr_' . ($index + 1) . '">';
|
||||||
|
|
||||||
|
// Insurer selection
|
||||||
|
$html .= '<td><select class="form-control follow_insurer ' . $disable_td . '" name="follow_insurer_id[]">';
|
||||||
|
$html .= '<option value="">Select Insurer</option>';
|
||||||
|
foreach ($insurer_branch as $value) {
|
||||||
|
$selected = ($insurer == ($value['id'] . '-' . $value['insurer_id'])) ? 'selected' : '';
|
||||||
|
$html .= '<option value="' . $value['id'] . '-' . $value['insurer_id'] . '" ' . $selected . '>'
|
||||||
|
. $value['insurer_name'] . '-' . $value['branch_code'] . '</option>';
|
||||||
|
}
|
||||||
|
$html .= '</select></td>';
|
||||||
|
|
||||||
|
// Leader toggle
|
||||||
|
$checked = ($data['co_share_type'] == 1) ? 'checked' : '';
|
||||||
|
$html .= '<td><input type="checkbox" class="' . $disable_td . '" name="co_share_type[]" ' . $checked . '></td>';
|
||||||
|
|
||||||
|
// CD Account
|
||||||
|
$html .= '<td><select class="form-control follow_insurer_cd ' . $disable_td . '" name="cd_ac_no_for_child[]">';
|
||||||
|
$html .= '<option value="">Select CD No</option>';
|
||||||
|
$html .= '<option value="add_cd">+ Add CD No</option>';
|
||||||
|
if ($cd_ac_pk) {
|
||||||
|
$html .= '<option value="' . $cd_ac_pk . '" selected>' . $cd_ac_pk . '</option>';
|
||||||
|
}
|
||||||
|
$html .= '</select></td>';
|
||||||
|
|
||||||
|
// CD Amount
|
||||||
|
$html .= '<td><input type="text" readonly value="' . htmlspecialchars($data['cd_amount'] ?? '') . '"></td>';
|
||||||
|
|
||||||
|
// Example of follower policy no
|
||||||
|
$html .= '<td><input type="text" class="' . $disable_td . '" value="' . htmlspecialchars($data['follower_policy_no']) . '"></td>';
|
||||||
|
|
||||||
|
// Add other fields (bp_amt, tp_amt, gst, etc.)
|
||||||
|
$html .= '<td><input type="text" class="' . $disable_td . '" value="' . htmlspecialchars($data['bp_amt']) . '"></td>';
|
||||||
|
$html .= '<td><input type="text" class="' . $disable_td . '" value="' . htmlspecialchars($data['tp_amt']) . '"></td>';
|
||||||
|
$html .= '<td><input type="text" class="' . $disable_td . '" value="' . htmlspecialchars($data['tep_amt']) . '"></td>';
|
||||||
|
$html .= '<td><input type="hidden" name="co_share_id[]" value="' . htmlspecialchars($data['id']) . '"></td>';
|
||||||
|
|
||||||
|
$html .= '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$html .= '</tbody></table>';
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,7 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
set_session_context('THZ-CONTROLLER');
|
||||||
$this->thzMasterModel = new ThzMasterModel();
|
$this->thzMasterModel = new ThzMasterModel();
|
||||||
$this->thzMasterNotesModel = new ThzMasterNotesModel();
|
$this->thzMasterNotesModel = new ThzMasterNotesModel();
|
||||||
$this->thzTypeModel = new thzTypeModel();
|
$this->thzTypeModel = new thzTypeModel();
|
||||||
@ -68,30 +69,7 @@ class ThzController extends BaseController
|
|||||||
$old = $this->thzMasterModel->where('thz_id', $data['thz_id'])->get()->getRowArray();
|
$old = $this->thzMasterModel->where('thz_id', $data['thz_id'])->get()->getRowArray();
|
||||||
$result = $this->updateTicket($data);
|
$result = $this->updateTicket($data);
|
||||||
|
|
||||||
if ($old && isset($data['status'])) {
|
$references = ($old && isset($data['status'])) ? $this->handleTicketHistory($old, $data) : "No Details" ;
|
||||||
|
|
||||||
if ($old['status'] != $data['status']) {
|
|
||||||
$history = [
|
|
||||||
'thz_id' => $data['thz_id'],
|
|
||||||
'field_name' => 'status',
|
|
||||||
'display_name' => 'Status',
|
|
||||||
'old_value' => $old['status'],
|
|
||||||
'new_value' => $data['status'],
|
|
||||||
'is_active' => 1
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!empty(get_session_userid())) {
|
|
||||||
$history['created_by'] = get_session_userid();
|
|
||||||
}
|
|
||||||
|
|
||||||
$hist_id = $this->thzHistoryModel->insert($history);
|
|
||||||
$references = $old['status'] . " - " . $data['status'] . " - " . $hist_id;
|
|
||||||
} else {
|
|
||||||
$references = $old['status'] . " - " . $data['status'];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$references = "No Details";
|
|
||||||
}
|
|
||||||
|
|
||||||
$updateID = $data['thz_id'];
|
$updateID = $data['thz_id'];
|
||||||
} else {
|
} else {
|
||||||
@ -106,57 +84,50 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
$emailNotificationResult = $this->ticketSaveNotification($data, $insertOrUpdate = $text, $id);
|
$emailNotificationResult = $this->ticketSaveNotification($data, $insertOrUpdate = $text, $id);
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', 'emailNotificationResult: ' . json_encode($emailNotificationResult));
|
||||||
|
|
||||||
return $this->response->setJSON([
|
return $this->response->setJSON([
|
||||||
'status' => $result ? 'success' : 'error',
|
'status' => $result ? 'success' : 'error',
|
||||||
'message' => $result ? "Ticket {$text}d successfully " : "Unable to {$text} ticket. Please try again.",
|
'message' => $result ? "Ticket {$text}d successfully " : "Unable to {$text} ticket. Please try again.",
|
||||||
'notification' => $emailNotificationResult ? 'Email Notification Success..!!' : 'Email Notification Failed..!!',
|
'notification' => $emailNotificationResult ? 'Email Notification Success..!!' : 'Email Notification Failed..!!',
|
||||||
'ref' => $references
|
'ref' => $references
|
||||||
])->setStatusCode($result ? 200 : 400);
|
])->setStatusCode($result ? 200 : 400);
|
||||||
|
|
||||||
|
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function ticketList()
|
public function ticketList()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$data['tab_name'] = "Tickets";
|
||||||
|
$data['page_name'] = "Tickets";
|
||||||
try {
|
try {
|
||||||
$returnType = strtolower($this->request->getGet('return_type') ?? 'api');
|
$returnType = strtolower($this->request->getGet('return_type') ?? 'api');
|
||||||
|
|
||||||
|
|
||||||
$data = $this->request->getGet();
|
$data = $this->request->getGet();
|
||||||
if ($returnType === 'web' && in_array(get_role_id(), [2, 3, 4])) {
|
|
||||||
|
if ($returnType === 'web' && in_array(get_role_id(), [3, 4])) {
|
||||||
$data['assign_to'] = $data['assign_to'] ?? get_session_userid();
|
$data['assign_to'] = $data['assign_to'] ?? get_session_userid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$tickets = $this->fetchTicketsBasedOnrole($data);
|
$tickets = $this->fetchTicketsBasedOnrole($data);
|
||||||
|
|
||||||
|
|
||||||
if ($returnType === 'api') {
|
if ($returnType === 'api') {
|
||||||
if (empty($tickets)) {
|
if (empty($tickets)) {
|
||||||
// return $this->response->setJSON([ 'status' => 'error','message' => 'No tickets found'])->setStatusCode(404);
|
$this->myLogger->logme('error', 'empty tickets in ticket list: ' . json_encode($tickets));
|
||||||
throw new \RuntimeException('No tickets found', 400);
|
return $this->response->setJSON([ 'status' => 'error','message' => 'No tickets found'])->setStatusCode(404);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$data['page_name'] = "Tickets";
|
|
||||||
$data['ticket_data'] = $tickets;
|
$data['ticket_data'] = $tickets;
|
||||||
$data['assignee'] = $this->userModel->where('is_active', 1)->whereIn('role', ['2', '3', '4'])->findAll(); // enga 5-"head" and 1-"admin" assign pannvaga so dropdown la varakudhathu
|
$data['assignee'] = $this->userModel->where('is_active', 1)->whereIn('role', ['3', '4'])->findAll();
|
||||||
// 2,3,4 remain person varannum.
|
// enga 5-"head" and 1-"admin" assign pannvaga so dropdown la varakudhathu , 2-"manager l2 " - ivangalum assign pannalam
|
||||||
|
// 3,4 remain person varannum.
|
||||||
$data['client_list'] = $this->clientModel->getCreatedByUserName();
|
$data['client_list'] = $this->clientModel->getCreatedByUserName();
|
||||||
$data['ticket_type'] = $this->thzTypeModel->where('is_active', 1)->findAll();
|
$data['ticket_type'] = $this->thzTypeModel->where('is_active', 1)->findAll();
|
||||||
|
|
||||||
@ -169,21 +140,7 @@ class ThzController extends BaseController
|
|||||||
'data' => $tickets,
|
'data' => $tickets,
|
||||||
])->setStatusCode(200);
|
])->setStatusCode(200);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,39 +155,23 @@ class ThzController extends BaseController
|
|||||||
$result = $this->thzMasterNotesModel->insert($data);
|
$result = $this->thzMasterNotesModel->insert($data);
|
||||||
|
|
||||||
if (empty($result)) {
|
if (empty($result)) {
|
||||||
// return $this->response->setJSON((['status' => 'error', 'message' => 'No tickets found']))->setStatusCode(404);
|
$this->myLogger->logme('error', 'Ticket conversation insert failed..!!: ' . json_encode($result));
|
||||||
throw new \RuntimeException('No tickets found', 404);
|
throw new \RuntimeException('No tickets found', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($data['notes_type'] == "External") {
|
$emailNotificationResult = ($data['notes_type'] === "External")
|
||||||
$emailNotificationResult = $this->ticketConversationSaveNotification($data);
|
? $this->ticketConversationSaveNotification($data)
|
||||||
} else {
|
: false;
|
||||||
$emailNotificationResult = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
return $this->response->setJSON([
|
||||||
'status' => $result ? 'success' : 'error',
|
'status' => $result ? 'success' : 'error',
|
||||||
'message' => $result ? "Ticket Notes created successfully" : "Unable to create ticket notes. Please try again.",
|
'message' => $result ? "Ticket Notes created successfully" : "Unable to create ticket notes. Please try again.",
|
||||||
'notification' => $emailNotificationResult ? 'Email Notification Success..!!' : 'Email Notification Failed Or No Need..!!'
|
'notification' => $emailNotificationResult ? 'Email Notification Success..!!' : 'Email Notification Failed Or No Need..!!'
|
||||||
])->setStatusCode($result ? 200 : 400);
|
])->setStatusCode($result ? 200 : 400);
|
||||||
|
|
||||||
|
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,6 +187,7 @@ class ThzController extends BaseController
|
|||||||
$details = $this->thzMasterModel->ticketAutoFetchDetails($client_id, $mobile);
|
$details = $this->thzMasterModel->ticketAutoFetchDetails($client_id, $mobile);
|
||||||
|
|
||||||
if (empty($details)) {
|
if (empty($details)) {
|
||||||
|
$this->myLogger->logme('error', 'empty AutoFetchDetails for client_id : ' . json_encode($client_id));
|
||||||
throw new \RuntimeException('No Data found', 400);
|
throw new \RuntimeException('No Data found', 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,21 +204,7 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
return $this->response->setJSON(['status' => 'success', 'data' => $result])->setStatusCode(200);
|
return $this->response->setJSON(['status' => 'success', 'data' => $result])->setStatusCode(200);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,7 +220,7 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
if ($thz_id) {
|
if ($thz_id) {
|
||||||
$result['master'] = $this->thzMasterModel
|
$result['master'] = $this->thzMasterModel
|
||||||
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
->select('thz_master.*, user_profiles.first_name as assignee_name')
|
||||||
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
->where('thz_master.thz_id', $thz_id)
|
->where('thz_master.thz_id', $thz_id)
|
||||||
->findAll();
|
->findAll();
|
||||||
@ -301,7 +229,7 @@ class ThzController extends BaseController
|
|||||||
$notes = $this->thzMasterNotesModel->ticketConversationList($thz_id, $returnType);
|
$notes = $this->thzMasterNotesModel->ticketConversationList($thz_id, $returnType);
|
||||||
$result['notes'] = !empty($notes) ? $notes : [];
|
$result['notes'] = !empty($notes) ? $notes : [];
|
||||||
} else {
|
} else {
|
||||||
// return $this->response->setJSON((['status' => 'error', 'message' => 'No tickets found']))->setStatusCode(400);
|
$this->myLogger->logme('error', 'No tickets found for ticket id ' . json_encode($thz_id));
|
||||||
throw new \RuntimeException('No tickets found', 400);
|
throw new \RuntimeException('No tickets found', 400);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -313,21 +241,7 @@ class ThzController extends BaseController
|
|||||||
try {
|
try {
|
||||||
return $this->response->setJSON((['status' => 'success', 'data' => $result]))->setStatusCode(200);
|
return $this->response->setJSON((['status' => 'success', 'data' => $result]))->setStatusCode(200);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -339,7 +253,7 @@ class ThzController extends BaseController
|
|||||||
: '';
|
: '';
|
||||||
|
|
||||||
$result['related_tickets'] = $this->thzMasterModel
|
$result['related_tickets'] = $this->thzMasterModel
|
||||||
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
->select('thz_master.*, user_profiles.first_name as assignee_name')
|
||||||
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
->where('thz_master.assign_to', $assign_to)
|
->where('thz_master.assign_to', $assign_to)
|
||||||
->where('thz_master.mobile', $mobile)
|
->where('thz_master.mobile', $mobile)
|
||||||
@ -365,6 +279,7 @@ class ThzController extends BaseController
|
|||||||
if ($method === 'get') {
|
if ($method === 'get') {
|
||||||
$types = $this->thzTypeModel->select('id,name,is_active')->where('is_active', 1)->findAll();
|
$types = $this->thzTypeModel->select('id,name,is_active')->where('is_active', 1)->findAll();
|
||||||
if (empty($types)) {
|
if (empty($types)) {
|
||||||
|
$this->myLogger->logme('error', 'No ticket types found ');
|
||||||
return $this->response->setJSON(['status' => 'error', 'message' => 'No ticket types found'])->setStatusCode(404);
|
return $this->response->setJSON(['status' => 'error', 'message' => 'No ticket types found'])->setStatusCode(404);
|
||||||
}
|
}
|
||||||
return $this->response->setJSON(['status' => 'success', 'data' => $types])->setStatusCode(200);
|
return $this->response->setJSON(['status' => 'success', 'data' => $types])->setStatusCode(200);
|
||||||
@ -393,21 +308,7 @@ class ThzController extends BaseController
|
|||||||
}
|
}
|
||||||
return $this->response->setJSON(['status' => 'error', 'message' => 'Invalid request method'])->setStatusCode(405);
|
return $this->response->setJSON(['status' => 'error', 'message' => 'Invalid request method'])->setStatusCode(405);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,7 +318,7 @@ class ThzController extends BaseController
|
|||||||
$data = $this->request->getGet();
|
$data = $this->request->getGet();
|
||||||
$thz_id = $data['thz_id'];
|
$thz_id = $data['thz_id'];
|
||||||
// $details = $this->thzHistoryModal->whereIn('thz_id', $thz_id)->where('is_active', 1)->get()->getResultArray();
|
// $details = $this->thzHistoryModal->whereIn('thz_id', $thz_id)->where('is_active', 1)->get()->getResultArray();
|
||||||
$details = $this->thzHistoryModel->select('thz_history.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as created_name')
|
$details = $this->thzHistoryModel->select('thz_history.*, user_profiles.first_name as created_name')
|
||||||
->join('user_profiles', 'user_profiles.id = thz_history.created_by', 'left')
|
->join('user_profiles', 'user_profiles.id = thz_history.created_by', 'left')
|
||||||
->where('thz_history.thz_id', $thz_id)->where('thz_history.is_active', 1)
|
->where('thz_history.thz_id', $thz_id)->where('thz_history.is_active', 1)
|
||||||
->orderBy('thz_history.created_at', 'desc')
|
->orderBy('thz_history.created_at', 'desc')
|
||||||
@ -426,28 +327,14 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
|
|
||||||
if (empty($details)) {
|
if (empty($details)) {
|
||||||
// return $this->response->setJSON([ 'status' => 'error','message' => 'No History found'])->setStatusCode(404);
|
$this->myLogger->logme('error', 'No history details found for ticket id ' . json_encode($thz_id));
|
||||||
throw new \RuntimeException('No History found', 404);
|
throw new \RuntimeException('No History found', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return $this->response->setJSON(['status' => 'success', 'data' => $details])->setStatusCode(200);
|
return $this->response->setJSON(['status' => 'success', 'data' => $details])->setStatusCode(200);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
return handle_exception($e, $this->myLogger, $this->response);
|
||||||
|
|
||||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
|
||||||
|| $e instanceof \mysqli_sql_exception
|
|
||||||
|| $e instanceof \PDOException;
|
|
||||||
|
|
||||||
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
|
||||||
|
|
||||||
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
|
||||||
|
|
||||||
return $this->response->setJSON([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
|
||||||
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
|
||||||
])->setStatusCode($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,7 +351,7 @@ class ThzController extends BaseController
|
|||||||
if (!empty($assign_to)) {
|
if (!empty($assign_to)) {
|
||||||
// Tickets assigned to a staff
|
// Tickets assigned to a staff
|
||||||
return $this->thzMasterModel
|
return $this->thzMasterModel
|
||||||
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
->select('thz_master.*, user_profiles.first_name as assignee_name')
|
||||||
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
->where('thz_master.assign_to', $assign_to)
|
->where('thz_master.assign_to', $assign_to)
|
||||||
->orderBy('thz_master.created_at', 'desc')
|
->orderBy('thz_master.created_at', 'desc')
|
||||||
@ -475,7 +362,7 @@ class ThzController extends BaseController
|
|||||||
if (!empty($mobile)) {
|
if (!empty($mobile)) {
|
||||||
// Specific ticket by ID and mobile
|
// Specific ticket by ID and mobile
|
||||||
return $this->thzMasterModel
|
return $this->thzMasterModel
|
||||||
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
->select('thz_master.*, user_profiles.first_name as assignee_name')
|
||||||
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
// ->where('thz_id', $id)
|
// ->where('thz_id', $id)
|
||||||
->where('thz_master.mobile', $mobile)
|
->where('thz_master.mobile', $mobile)
|
||||||
@ -485,7 +372,7 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
// All tickets (e.g., for managers)
|
// All tickets (e.g., for managers)
|
||||||
return $this->thzMasterModel
|
return $this->thzMasterModel
|
||||||
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
->select('thz_master.*, user_profiles.first_name as assignee_name')
|
||||||
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
->orderBy('thz_master.created_at', 'desc')
|
->orderBy('thz_master.created_at', 'desc')
|
||||||
->findAll();
|
->findAll();
|
||||||
@ -538,9 +425,9 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
$ticketId = $thz_id;
|
$ticketId = $thz_id;
|
||||||
|
|
||||||
$message = $data['notes'] ?? '';
|
// $message = $data['notes'] ?? '';
|
||||||
|
|
||||||
$this->sendEmail($templateName, $data, $to_email, $ticketId, $message);
|
$this->sendEmail($templateName, $data, $to_email, $ticketId);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -623,7 +510,9 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
$account_manager_email = $this->cientRmModel->findAccountManagerEmail($client_id);
|
$account_manager_email = $this->cientRmModel->findAccountManagerEmail($client_id);
|
||||||
|
|
||||||
$cc = getenv(' G_ticketing_system_cc');
|
$cc = getenv('G_ticketing_system_cc');
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "env for cc G_ticketing_system_cc " . $cc);
|
||||||
|
|
||||||
$template = empty($assignee_email)
|
$template = empty($assignee_email)
|
||||||
? 'ticket_save_create_user_unassigned'
|
? 'ticket_save_create_user_unassigned'
|
||||||
@ -637,7 +526,10 @@ class ThzController extends BaseController
|
|||||||
|
|
||||||
// send to account manager and if it is more than one email also no problem we send to all account managers
|
// send to account manager and if it is more than one email also no problem we send to all account managers
|
||||||
if (!empty($account_manager_email)) {
|
if (!empty($account_manager_email)) {
|
||||||
|
$this->myLogger->logme('error', "mail sent for account manager " . json_encode($account_manager_email));
|
||||||
$this->sendEmail($template, $data, $account_manager_email, $ticketId, $cc);
|
$this->sendEmail($template, $data, $account_manager_email, $ticketId, $cc);
|
||||||
|
} else {
|
||||||
|
$this->myLogger->logme('error', "mail not sent for account manager ");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -670,22 +562,29 @@ class ThzController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function sendEmail($templateName, $data, $to_email, $ticketId , $cc = "", $message = "", $bcc = "")
|
private function sendEmail($templateName, $data, $to_email, $ticketId, $cc = "", $bcc = "")
|
||||||
{
|
{
|
||||||
|
|
||||||
$mailTemplate = $this->ticketMailTemplateModel->where('template_name', $templateName)->findAll()[0] ?? [];
|
$mailTemplate = $this->ticketMailTemplateModel->where('template_name', $templateName)->findAll()[0] ?? [];
|
||||||
|
|
||||||
if (empty($mailTemplate)) {
|
if (empty($mailTemplate)) {
|
||||||
|
$this->myLogger->logme('error', 'No Mail Template Found To send email in ticketing system');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($cc)) {
|
||||||
|
$this->myLogger->logme('error', 'empty cc attached for template name : ' . json_encode($templateName));
|
||||||
|
} else {
|
||||||
|
$this->myLogger->logme('error', "cc attached for template name : " . json_encode($templateName));
|
||||||
|
}
|
||||||
|
|
||||||
$mailTemplate['subject'] = str_replace('%subject%', $data['subject'] ?? '', $mailTemplate['subject']);
|
$mailTemplate['subject'] = str_replace('%subject%', $data['subject'] ?? '', $mailTemplate['subject']);
|
||||||
|
|
||||||
$mailTemplate['mail_content'] = str_replace('%subject%', $data['subject'] ?? '', $mailTemplate['mail_content']);
|
$mailTemplate['mail_content'] = str_replace('%subject%', $data['subject'] ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
$mailTemplate['mail_content'] = str_replace('%ticketId%', $ticketId ?? '', $mailTemplate['mail_content']);
|
$mailTemplate['mail_content'] = str_replace('%ticketId%', $ticketId ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
$mailTemplate['mail_content'] = str_replace('%message%', $message ?? '', $mailTemplate['mail_content']);
|
$mailTemplate['mail_content'] = str_replace('%message%', $data['notes'] ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
$mailTemplate['mail_content'] = str_replace('%assignee_email%', $data['assignee_email'] ?? '', $mailTemplate['mail_content']);
|
$mailTemplate['mail_content'] = str_replace('%assignee_email%', $data['assignee_email'] ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
@ -701,6 +600,8 @@ class ThzController extends BaseController
|
|||||||
$bcc_string = $bcc;
|
$bcc_string = $bcc;
|
||||||
|
|
||||||
$res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail, 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]);
|
$res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail, 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]);
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', 'Mail Response : ' . json_encode($res));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -720,4 +621,34 @@ class ThzController extends BaseController
|
|||||||
$data['policy_terms'] = $policy_terms;
|
$data['policy_terms'] = $policy_terms;
|
||||||
return view('view_policy_terms', $data);
|
return view('view_policy_terms', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function handleTicketHistory(array $old, array $data): string
|
||||||
|
{
|
||||||
|
if ($old['status'] != $data['status']) {
|
||||||
|
$history = [
|
||||||
|
'thz_id' => $data['thz_id'],
|
||||||
|
'field_name' => 'status',
|
||||||
|
'display_name' => 'Status',
|
||||||
|
'old_value' => $old['status'],
|
||||||
|
'new_value' => $data['status'],
|
||||||
|
'is_active' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
if (!empty(get_session_userid())) {
|
||||||
|
$history['created_by'] = get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
$hist_id = $this->thzHistoryModel->insert($history);
|
||||||
|
|
||||||
|
return $old['status'] . " - " . $data['status'] . " - " . $hist_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $old['status'] . " - " . $data['status'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
723
app/Controllers/ThzController_old.php
Normal file
723
app/Controllers/ThzController_old.php
Normal file
@ -0,0 +1,723 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controllers;
|
||||||
|
|
||||||
|
use App\Controllers\BaseController;
|
||||||
|
use App\Helpers\MailHelper;
|
||||||
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
|
|
||||||
|
use App\Models\ThzMasterModel;
|
||||||
|
use App\Models\ThzMasterNotesModel;
|
||||||
|
use App\Models\ThzTypeModel;
|
||||||
|
use App\Models\ThzHistoryModel;
|
||||||
|
use App\ControllerCleaners\ThzControllerCleaner;
|
||||||
|
use App\Models\UserModel;
|
||||||
|
use App\Models\ClientPolicyModel;
|
||||||
|
use App\Models\ClientModel;
|
||||||
|
use App\Models\TicketMailTemplateModel;
|
||||||
|
use App\Models\ClientRMModel;
|
||||||
|
|
||||||
|
|
||||||
|
class ThzController extends BaseController
|
||||||
|
{
|
||||||
|
|
||||||
|
protected $thzMasterModel;
|
||||||
|
protected $thzMasterNotesModel;
|
||||||
|
protected $thzTypeModel;
|
||||||
|
protected $thzHistoryModel;
|
||||||
|
protected $thzControllerCleaner;
|
||||||
|
|
||||||
|
protected $userModel;
|
||||||
|
protected $clientPolicyModel;
|
||||||
|
protected $clientModel;
|
||||||
|
|
||||||
|
protected $ticketMailTemplateModel;
|
||||||
|
|
||||||
|
protected $cientRmModel;
|
||||||
|
protected $myLogger;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->thzMasterModel = new ThzMasterModel();
|
||||||
|
$this->thzMasterNotesModel = new ThzMasterNotesModel();
|
||||||
|
$this->thzTypeModel = new thzTypeModel();
|
||||||
|
$this->thzHistoryModel = new ThzHistoryModel();
|
||||||
|
$this->thzControllerCleaner = new ThzControllerCleaner();
|
||||||
|
$this->userModel = new UserModel();
|
||||||
|
$this->clientPolicyModel = new ClientPolicyModel();
|
||||||
|
$this->clientModel = new ClientModel();
|
||||||
|
$this->cientRmModel = new ClientRMModel();
|
||||||
|
$this->ticketMailTemplateModel = new TicketMailTemplateModel();
|
||||||
|
$this->myLogger = \Config\Services::mylogger();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketSave()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
$references = "";
|
||||||
|
if (!empty($data['thz_id'])) {
|
||||||
|
|
||||||
|
$text = "update";
|
||||||
|
// here insert history Status.
|
||||||
|
$old = $this->thzMasterModel->where('thz_id', $data['thz_id'])->get()->getRowArray();
|
||||||
|
$result = $this->updateTicket($data);
|
||||||
|
|
||||||
|
if ($old && isset($data['status'])) {
|
||||||
|
|
||||||
|
if ($old['status'] != $data['status']) {
|
||||||
|
$history = [
|
||||||
|
'thz_id' => $data['thz_id'],
|
||||||
|
'field_name' => 'status',
|
||||||
|
'display_name' => 'Status',
|
||||||
|
'old_value' => $old['status'],
|
||||||
|
'new_value' => $data['status'],
|
||||||
|
'is_active' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
if (!empty(get_session_userid())) {
|
||||||
|
$history['created_by'] = get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
$hist_id = $this->thzHistoryModel->insert($history);
|
||||||
|
$references = $old['status'] . " - " . $data['status'] . " - " . $hist_id;
|
||||||
|
} else {
|
||||||
|
$references = $old['status'] . " - " . $data['status'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$references = "No Details";
|
||||||
|
}
|
||||||
|
|
||||||
|
$updateID = $data['thz_id'];
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$text = "create";
|
||||||
|
$insertID = $this->insertTicket($data);
|
||||||
|
$result = true;
|
||||||
|
$references = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = isset($insertID) && !empty($insertID) ? $insertID : $updateID;
|
||||||
|
|
||||||
|
$emailNotificationResult = $this->ticketSaveNotification($data, $insertOrUpdate = $text, $id);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => $result ? 'success' : 'error',
|
||||||
|
'message' => $result ? "Ticket {$text}d successfully " : "Unable to {$text} ticket. Please try again.",
|
||||||
|
'notification' => $emailNotificationResult ? 'Email Notification Success..!!' : 'Email Notification Failed..!!',
|
||||||
|
'ref' => $references
|
||||||
|
])->setStatusCode($result ? 200 : 400);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketList()
|
||||||
|
{
|
||||||
|
|
||||||
|
try {
|
||||||
|
$returnType = strtolower($this->request->getGet('return_type') ?? 'api');
|
||||||
|
|
||||||
|
|
||||||
|
$data = $this->request->getGet();
|
||||||
|
if ($returnType === 'web' && in_array(get_role_id(), [2, 3, 4])) {
|
||||||
|
$data['assign_to'] = $data['assign_to'] ?? get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
$tickets = $this->fetchTicketsBasedOnrole($data);
|
||||||
|
|
||||||
|
|
||||||
|
if ($returnType === 'api') {
|
||||||
|
if (empty($tickets)) {
|
||||||
|
// return $this->response->setJSON([ 'status' => 'error','message' => 'No tickets found'])->setStatusCode(404);
|
||||||
|
throw new \RuntimeException('No tickets found', 400);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$data['page_name'] = "Tickets";
|
||||||
|
$data['ticket_data'] = $tickets;
|
||||||
|
$data['assignee'] = $this->userModel->where('is_active', 1)->whereIn('role', ['2', '3', '4'])->findAll(); // enga 5-"head" and 1-"admin" assign pannvaga so dropdown la varakudhathu
|
||||||
|
// 2,3,4 remain person varannum.
|
||||||
|
$data['client_list'] = $this->clientModel->getCreatedByUserName();
|
||||||
|
$data['ticket_type'] = $this->thzTypeModel->where('is_active', 1)->findAll();
|
||||||
|
|
||||||
|
return $this->loadLayout('thz_list', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'success',
|
||||||
|
'data' => $tickets,
|
||||||
|
])->setStatusCode(200);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketConversationSave()
|
||||||
|
{
|
||||||
|
|
||||||
|
try {
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
|
||||||
|
$data['notes_type'] = $data['notes_type'] ?? 'External';
|
||||||
|
|
||||||
|
$result = $this->thzMasterNotesModel->insert($data);
|
||||||
|
|
||||||
|
if (empty($result)) {
|
||||||
|
// return $this->response->setJSON((['status' => 'error', 'message' => 'No tickets found']))->setStatusCode(404);
|
||||||
|
throw new \RuntimeException('No tickets found', 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($data['notes_type'] == "External") {
|
||||||
|
$emailNotificationResult = $this->ticketConversationSaveNotification($data);
|
||||||
|
} else {
|
||||||
|
$emailNotificationResult = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => $result ? 'success' : 'error',
|
||||||
|
'message' => $result ? "Ticket Notes created successfully" : "Unable to create ticket notes. Please try again.",
|
||||||
|
'notification' => $emailNotificationResult ? 'Email Notification Success..!!' : 'Email Notification Failed Or No Need..!!'
|
||||||
|
])->setStatusCode($result ? 200 : 400);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketAutoFetchDetails()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
|
||||||
|
$client_id = $data['client_id'] ?? null;
|
||||||
|
$mobile = $data['mobile'] ?? null;
|
||||||
|
|
||||||
|
if ($client_id && $mobile) {
|
||||||
|
$details = $this->thzMasterModel->ticketAutoFetchDetails($client_id, $mobile);
|
||||||
|
|
||||||
|
if (empty($details)) {
|
||||||
|
throw new \RuntimeException('No Data found', 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
$policyIds = array_filter(array_column($details, 'policy_id'));
|
||||||
|
$clientPolicy = !empty($policyIds)
|
||||||
|
? $this->clientPolicyModel->whereIn('id', $policyIds)->where('is_active', 1)->get()->getResultArray()
|
||||||
|
: [];
|
||||||
|
|
||||||
|
$result['client_details'] = $details;
|
||||||
|
$result['policy_details'] = $clientPolicy ?? [];
|
||||||
|
} else {
|
||||||
|
throw new \RuntimeException('Client and Mobile Not found', 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->response->setJSON(['status' => 'success', 'data' => $result])->setStatusCode(200);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketConversationList()
|
||||||
|
{
|
||||||
|
$data = $this->request->getGet();
|
||||||
|
|
||||||
|
$returnType = strtolower($this->request->getGet('return_type') ?? 'api');
|
||||||
|
|
||||||
|
$thz_id = $data['thz_id'] ?? null;
|
||||||
|
|
||||||
|
$ticketType = $data['notes_type'] ?? 'External';
|
||||||
|
|
||||||
|
if ($thz_id) {
|
||||||
|
$result['master'] = $this->thzMasterModel
|
||||||
|
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
||||||
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
|
->where('thz_master.thz_id', $thz_id)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
if (!empty($result['master'])) {
|
||||||
|
$notes = $this->thzMasterNotesModel->ticketConversationList($thz_id, $returnType);
|
||||||
|
$result['notes'] = !empty($notes) ? $notes : [];
|
||||||
|
} else {
|
||||||
|
// return $this->response->setJSON((['status' => 'error', 'message' => 'No tickets found']))->setStatusCode(400);
|
||||||
|
throw new \RuntimeException('No tickets found', 400);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// return $this->response->setJSON((['status' => 'error', 'message' => 'No tickets found']))->setStatusCode(404);
|
||||||
|
throw new \RuntimeException('No tickets found', 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($returnType === 'api') {
|
||||||
|
try {
|
||||||
|
return $this->response->setJSON((['status' => 'success', 'data' => $result]))->setStatusCode(200);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$assign_to = $result['master'][0]['assign_to'];
|
||||||
|
$mobile = $result['master'][0]['mobile'];
|
||||||
|
|
||||||
|
$toGetPolicyId = (!empty($result['master'][0]['policy_id']) && strtolower($result['master'][0]['policy_id']) !== 'null')
|
||||||
|
? $result['master'][0]['policy_id']
|
||||||
|
: '';
|
||||||
|
|
||||||
|
$result['related_tickets'] = $this->thzMasterModel
|
||||||
|
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
||||||
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
|
->where('thz_master.assign_to', $assign_to)
|
||||||
|
->where('thz_master.mobile', $mobile)
|
||||||
|
->where('thz_master.thz_id !=', $thz_id)
|
||||||
|
->where('thz_master.status !=', 'Closed')
|
||||||
|
->where('thz_master.status !=', 'Resolved')
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$result['assignee'] = $this->userModel->where('is_active', 1)->whereIn('role', ['2', '3', '4'])->findAll(); // enga 5-"head" and 1-"admin" assign pannvaga so dropdown la varakudhathu
|
||||||
|
// 2,3,4 remain person varannum.
|
||||||
|
$result['policy_terms'] = $toGetPolicyId ? $this->getPolicyTerms($toGetPolicyId) : '';
|
||||||
|
|
||||||
|
$result['ticket_type'] = $this->thzTypeModel->where('is_active', 1)->findAll();
|
||||||
|
|
||||||
|
return $this->loadLayout('thz_notes', $result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketType()
|
||||||
|
{
|
||||||
|
$method = $this->request->getMethod(); // get, post
|
||||||
|
try {
|
||||||
|
if ($method === 'get') {
|
||||||
|
$types = $this->thzTypeModel->select('id,name,is_active')->where('is_active', 1)->findAll();
|
||||||
|
if (empty($types)) {
|
||||||
|
return $this->response->setJSON(['status' => 'error', 'message' => 'No ticket types found'])->setStatusCode(404);
|
||||||
|
}
|
||||||
|
return $this->response->setJSON(['status' => 'success', 'data' => $types])->setStatusCode(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($method === 'post') {
|
||||||
|
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
if (!empty($data['id'])) {
|
||||||
|
$text = "update";
|
||||||
|
$result = $this->thzTypeModel->update($data['id'], $data);
|
||||||
|
$updateID = $data['id'];
|
||||||
|
} else {
|
||||||
|
$text = "create";
|
||||||
|
$insertID = $this->thzTypeModel->insert($data);
|
||||||
|
$result = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = isset($insertID) && !empty($insertID) ? $insertID : ($updateID ?? null);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => $id ? 'success' : 'error',
|
||||||
|
'message' => $id ? "Ticket Type {$text}d successfully" : "Unable to {$text} ticket type. Please try again.",
|
||||||
|
'id' => $id
|
||||||
|
])->setStatusCode($id ? 200 : 400);
|
||||||
|
}
|
||||||
|
return $this->response->setJSON(['status' => 'error', 'message' => 'Invalid request method'])->setStatusCode(405);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ticketHistoryList()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data = $this->request->getGet();
|
||||||
|
$thz_id = $data['thz_id'];
|
||||||
|
// $details = $this->thzHistoryModal->whereIn('thz_id', $thz_id)->where('is_active', 1)->get()->getResultArray();
|
||||||
|
$details = $this->thzHistoryModel->select('thz_history.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as created_name')
|
||||||
|
->join('user_profiles', 'user_profiles.id = thz_history.created_by', 'left')
|
||||||
|
->where('thz_history.thz_id', $thz_id)->where('thz_history.is_active', 1)
|
||||||
|
->orderBy('thz_history.created_at', 'desc')
|
||||||
|
->get()->getResultArray();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (empty($details)) {
|
||||||
|
// return $this->response->setJSON([ 'status' => 'error','message' => 'No History found'])->setStatusCode(404);
|
||||||
|
throw new \RuntimeException('No History found', 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $this->response->setJSON(['status' => 'success', 'data' => $details])->setStatusCode(200);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = ['title' => get_class($e), 'type' => get_class($e), 'code' => $code, 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/************************************************** PRIVATE FUNCTIONS ********************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
private function fetchTicketsBasedOnrole(array $data): array
|
||||||
|
{
|
||||||
|
// $id = $data['thz_id'] ?? null;
|
||||||
|
$assign_to = $data['assign_to'] ?? null;
|
||||||
|
$mobile = $data['mobile'] ?? null;
|
||||||
|
|
||||||
|
if (!empty($assign_to)) {
|
||||||
|
// Tickets assigned to a staff
|
||||||
|
return $this->thzMasterModel
|
||||||
|
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
||||||
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
|
->where('thz_master.assign_to', $assign_to)
|
||||||
|
->orderBy('thz_master.created_at', 'desc')
|
||||||
|
->findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (!empty($id) && !empty($mobile)) {
|
||||||
|
if (!empty($mobile)) {
|
||||||
|
// Specific ticket by ID and mobile
|
||||||
|
return $this->thzMasterModel
|
||||||
|
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
||||||
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
|
// ->where('thz_id', $id)
|
||||||
|
->where('thz_master.mobile', $mobile)
|
||||||
|
->orderBy('thz_master.created_at', 'desc')
|
||||||
|
->findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
// All tickets (e.g., for managers)
|
||||||
|
return $this->thzMasterModel
|
||||||
|
->select('thz_master.*, CONCAT(user_profiles.first_name, " ", user_profiles.last_name) as assignee_name')
|
||||||
|
->join('user_profiles', 'user_profiles.id = thz_master.assign_to', 'left')
|
||||||
|
->orderBy('thz_master.created_at', 'desc')
|
||||||
|
->findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private function ticketSaveNotification($data, $insertOrUpdate, $id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$user_email = $data['email'] ?? null;
|
||||||
|
|
||||||
|
$assignee_id = $data['assign_to'] ?? null;
|
||||||
|
|
||||||
|
$assignee_email = $this->findAssigneeEmail($assignee_id);
|
||||||
|
|
||||||
|
$client_id = $data['client_id'] ?? null;
|
||||||
|
|
||||||
|
$emailToNotified = [
|
||||||
|
'user_email' => $user_email,
|
||||||
|
'assignee_email' => $assignee_email
|
||||||
|
];
|
||||||
|
|
||||||
|
$ticketId = $id;
|
||||||
|
|
||||||
|
$result = $this->ticketSaveEmailNotificationBasedOnRole($emailToNotified, $insertOrUpdate, $ticketId, $data, $client_id);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function ticketConversationSaveNotification($data)
|
||||||
|
{
|
||||||
|
|
||||||
|
$thz_id = $data['thz_id']; // thz is alias of ticket
|
||||||
|
|
||||||
|
$data['subject'] = $this->findSubject($data['thz_id']);
|
||||||
|
|
||||||
|
$assignee_id = $this->findAssigneeId($data['thz_id']);
|
||||||
|
|
||||||
|
$user_email = $this->findUserEmail($data['thz_id']);
|
||||||
|
|
||||||
|
$assignee_email = $this->findAssigneeEmail($assignee_id) ?? '';
|
||||||
|
|
||||||
|
$sender_mail = $data['notes_by'] == "User" ? $user_email : $assignee_email;
|
||||||
|
$receiver_mail = $data['notes_by'] == "User" ? $assignee_email : $user_email;
|
||||||
|
|
||||||
|
$templateName = "ticket_conversation_save_notification";
|
||||||
|
|
||||||
|
$to_email = $receiver_mail;
|
||||||
|
|
||||||
|
$ticketId = $thz_id;
|
||||||
|
|
||||||
|
$message = $data['notes'] ?? '';
|
||||||
|
|
||||||
|
$this->sendEmail($templateName, $data, $to_email, $ticketId, $message);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function findAssigneeEmail($assignee_id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$row = $this->userModel->where('id', $assignee_id)->get()->getRow();
|
||||||
|
$assigneeEmail = $row ? $row->email : null;
|
||||||
|
return $assigneeEmail ? $assigneeEmail : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findAssigneeId($ticketId)
|
||||||
|
{
|
||||||
|
$row = $this->thzMasterModel->where('thz_id', $ticketId)->get()->getRow();
|
||||||
|
$assigneeId = $row ? $row->assign_to : null;
|
||||||
|
return $assigneeId ? $assigneeId : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findUserEmail($ticket_id)
|
||||||
|
{
|
||||||
|
$row = $this->thzMasterModel->where('thz_id', $ticket_id)->get()->getRow();
|
||||||
|
$email = $row ? $row->email : null;
|
||||||
|
return $email ? $email : " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findSubject($ticketId)
|
||||||
|
{
|
||||||
|
$row = $this->thzMasterModel->where('thz_id', $ticketId)->get()->getRow();
|
||||||
|
$subject = $row ? $row->subject : null;
|
||||||
|
return $subject ? $subject : " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
private function ticketSaveEmailNotificationBasedOnRole($emailToNotified, $insertOrUpdate, $ticketId, $data, $client_id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$user_email = $emailToNotified['user_email'] ?? null;
|
||||||
|
$assignee_email = $emailToNotified['assignee_email'] ?? null;
|
||||||
|
|
||||||
|
|
||||||
|
if (!empty($assignee_email)) {
|
||||||
|
|
||||||
|
switch ($insertOrUpdate) {
|
||||||
|
|
||||||
|
case 'update':
|
||||||
|
|
||||||
|
$this->sendEmail('ticket_save_update_assignee', $data, $assignee_email, $ticketId);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'create':
|
||||||
|
|
||||||
|
$this->sendEmail('ticket_save_create_assignee', $data, $assignee_email, $ticketId);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
# code...
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($user_email)) {
|
||||||
|
|
||||||
|
switch ($insertOrUpdate) {
|
||||||
|
|
||||||
|
case 'update':
|
||||||
|
|
||||||
|
$data['assigneeAndStatus'] = empty($assignee_email)
|
||||||
|
? "Not Yet Assigned"
|
||||||
|
: "Assigned With {$assignee_email}";
|
||||||
|
|
||||||
|
$this->sendEmail('ticket_save_update_user', $data, $user_email, $ticketId);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'create':
|
||||||
|
|
||||||
|
$account_manager_email = $this->cientRmModel->findAccountManagerEmail($client_id);
|
||||||
|
|
||||||
|
$cc = getenv(' G_ticketing_system_cc');
|
||||||
|
|
||||||
|
$template = empty($assignee_email)
|
||||||
|
? 'ticket_save_create_user_unassigned'
|
||||||
|
: 'ticket_save_create_user_assigned';
|
||||||
|
|
||||||
|
if (!empty($assignee_email)) {
|
||||||
|
$data['assignee_email'] = $assignee_email;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->sendEmail($template, $data, $user_email, $ticketId);
|
||||||
|
|
||||||
|
// send to account manager and if it is more than one email also no problem we send to all account managers
|
||||||
|
if (!empty($account_manager_email)) {
|
||||||
|
$this->sendEmail($template, $data, $account_manager_email, $ticketId, $cc);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
# code...
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function updateTicket($data)
|
||||||
|
{
|
||||||
|
|
||||||
|
$data['updated_by'] = get_session_userid();
|
||||||
|
$ticket_id = $data['thz_id'];
|
||||||
|
$result = $this->thzMasterModel->where('thz_id', $ticket_id)->set($data)->update();
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function insertTicket($data)
|
||||||
|
{
|
||||||
|
$data['created_by'] = get_session_userid();
|
||||||
|
$this->thzMasterModel->insert($data);
|
||||||
|
|
||||||
|
return $this->thzMasterModel->insertID(); // returns the inserted row's ID
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function sendEmail($templateName, $data, $to_email, $ticketId , $cc = "", $message = "", $bcc = "")
|
||||||
|
{
|
||||||
|
|
||||||
|
$mailTemplate = $this->ticketMailTemplateModel->where('template_name', $templateName)->findAll()[0] ?? [];
|
||||||
|
|
||||||
|
if (empty($mailTemplate)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$mailTemplate['subject'] = str_replace('%subject%', $data['subject'] ?? '', $mailTemplate['subject']);
|
||||||
|
|
||||||
|
$mailTemplate['mail_content'] = str_replace('%subject%', $data['subject'] ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
|
$mailTemplate['mail_content'] = str_replace('%ticketId%', $ticketId ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
|
$mailTemplate['mail_content'] = str_replace('%message%', $message ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
|
$mailTemplate['mail_content'] = str_replace('%assignee_email%', $data['assignee_email'] ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
|
$mailTemplate['mail_content'] = str_replace('%assigneeAndStatus%', $data['assigneeAndStatus'] ?? '', $mailTemplate['mail_content']);
|
||||||
|
|
||||||
|
$from_mail = "";
|
||||||
|
$to_mail = $to_email;
|
||||||
|
$cc_string = $cc;
|
||||||
|
$subject = $mailTemplate['subject'];
|
||||||
|
$message = $mailTemplate['mail_content'];
|
||||||
|
$attachments = "";
|
||||||
|
$reply_to = "";
|
||||||
|
$bcc_string = $bcc;
|
||||||
|
|
||||||
|
$res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail, 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getPolicyTerms($client_policy_id)
|
||||||
|
{
|
||||||
|
$policy_data = $this->clientPolicyModel->where('is_active', 1)->where('id', $client_policy_id)->first();
|
||||||
|
|
||||||
|
$policy_terms = [];
|
||||||
|
if (isset($policy_data['policy_terms']) && !empty($policy_data['policy_terms'])) {
|
||||||
|
|
||||||
|
$raw_terms = json_decode($policy_data['policy_terms'] ?? [], true) ?? [];
|
||||||
|
|
||||||
|
$ticketController = new TicketController();
|
||||||
|
$policy_terms = $ticketController->convertTermsToDisplay($raw_terms);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['policy_terms'] = $policy_terms;
|
||||||
|
return view('view_policy_terms', $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -191,15 +191,14 @@ class VidalApiController extends BaseController
|
|||||||
return $this->response->setJSON($response);
|
return $this->response->setJSON($response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function enrollment()
|
||||||
|
{
|
||||||
public function enrollment(){
|
|
||||||
|
|
||||||
$postData = $this->request->getJSON(true);
|
$postData = $this->request->getJSON(true);
|
||||||
|
|
||||||
helper('api');
|
helper('api');
|
||||||
|
|
||||||
$url = ''. getenv('VIDAL_API_BASE_URL').'/enrollmendataservice';
|
$url = getenv('VIDAL_API_BASE_URL').'/enrollmendataservice';
|
||||||
$method = 'POST';
|
$method = 'POST';
|
||||||
|
|
||||||
$headers = [
|
$headers = [
|
||||||
|
|||||||
410
app/Helpers/NhanceWelnessSsoHelper.php
Normal file
410
app/Helpers/NhanceWelnessSsoHelper.php
Normal file
@ -0,0 +1,410 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Helpers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nhance SSO Helper for CodeIgniter 4
|
||||||
|
*
|
||||||
|
* Usage:
|
||||||
|
* - Place this file in app/Helpers/nhance_sso_helper.php
|
||||||
|
* - Load helper: helper('nhance_sso');
|
||||||
|
*
|
||||||
|
* Functions:
|
||||||
|
* - generate_nhance_sso_url($userParams = null)
|
||||||
|
* - decrypt_nhance_sso_params($encryptedParams = null)
|
||||||
|
* - test_nhance_sso_encryption()
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!function_exists('generate_nhance_sso_url')) {
|
||||||
|
/**
|
||||||
|
* Generate Nhance SSO URL with encrypted parameters
|
||||||
|
*
|
||||||
|
* @param array|null $userParams User parameters array, uses sample data if null
|
||||||
|
* @return string Generated SSO URL
|
||||||
|
*/
|
||||||
|
function generate_nhance_sso_url($userParams = null) {
|
||||||
|
$helper = new NhanceSsoHelper();
|
||||||
|
return $helper->generateSSOUrl($userParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('decrypt_nhance_sso_params')) {
|
||||||
|
/**
|
||||||
|
* Decrypt Nhance SSO parameters for testing
|
||||||
|
*
|
||||||
|
* @param string|null $encryptedParams Encrypted parameters, uses sample if null
|
||||||
|
* @return array Decrypted user parameters
|
||||||
|
*/
|
||||||
|
function decrypt_nhance_sso_params($encryptedParams = null) {
|
||||||
|
$helper = new NhanceSsoHelper();
|
||||||
|
return $helper->decryptUserParams($encryptedParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('test_nhance_sso_encryption')) {
|
||||||
|
/**
|
||||||
|
* Test Nhance SSO encryption/decryption functionality
|
||||||
|
*
|
||||||
|
* @return array Test results
|
||||||
|
*/
|
||||||
|
function test_nhance_sso_encryption() {
|
||||||
|
$helper = new NhanceSsoHelper();
|
||||||
|
return $helper->runTests();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nhance SSO Helper Class
|
||||||
|
*/
|
||||||
|
class NhanceWelnessSsoHelper {
|
||||||
|
|
||||||
|
private static $baseUrl = 'https://web.samuraijack.xyz/sso';
|
||||||
|
private static $clientId = 'nhance-gt-2tx7';
|
||||||
|
private static $encryptionKey = '32D1D5535157AF3D4667ADAB0CC795D77D022BB281AD3272EB134C72BD0B185E';
|
||||||
|
private static $algorithm = 'aes-256-cbc';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get sample user parameters
|
||||||
|
*/
|
||||||
|
private static function getSampleUserParams() {
|
||||||
|
return [
|
||||||
|
'name' => 'John Doe 3',
|
||||||
|
'email' => 'john.doe3@email.com',
|
||||||
|
'memberId' => 'TEST-REL-01',
|
||||||
|
'gender' => 'Male',
|
||||||
|
'dob' => '1997-01-01',
|
||||||
|
'policyName' => 'Nhance DEMO',
|
||||||
|
'phone' => '6676126763',
|
||||||
|
'employeeId' => 'EMP-NHANCE-TEST-03',
|
||||||
|
'policyNumber' => "EMP-NHANCE-TEST-03",
|
||||||
|
'policyStartDate' => '2025-09-08',
|
||||||
|
'policyEndDate' => '2026-09-08',
|
||||||
|
'moduleName' => 'home',
|
||||||
|
'relation' => 'self',
|
||||||
|
'planId' => 'NHANCE-PLAN-1',
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get sample encrypted parameters for testing
|
||||||
|
*/
|
||||||
|
private static function getSampleEncryptedParams() {
|
||||||
|
// Generate sample encrypted params using sample data
|
||||||
|
$sampleParams = (SELF::getSampleUserParams());
|
||||||
|
return SELF::encryptUserParams($sampleParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt user parameters using AES-256-CBC
|
||||||
|
*/
|
||||||
|
private static function encryptUserParams($userParams) {
|
||||||
|
try {
|
||||||
|
// $jsonData = json_encode($userParams);
|
||||||
|
|
||||||
|
// // Generate a random IV
|
||||||
|
// $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(SELF::$algorithm));
|
||||||
|
// // $iv = 'getvisitappdotcom';
|
||||||
|
|
||||||
|
// // Convert hex key to binary
|
||||||
|
// $key = hex2bin(SELF::$encryptionKey);
|
||||||
|
// // $key = (SELF::$encryptionKey);
|
||||||
|
|
||||||
|
// // Encrypt the data
|
||||||
|
// $encrypted = openssl_encrypt($jsonData, SELF::$algorithm, $key, 0, $iv);
|
||||||
|
|
||||||
|
// if ($encrypted === false) {
|
||||||
|
// throw new Exception("Encryption failed");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Combine IV and encrypted data, then encode
|
||||||
|
// $encryptedData = base64_encode($iv . base64_decode($encrypted));
|
||||||
|
|
||||||
|
// // Make URL safe
|
||||||
|
// return str_replace(['+', '/', '='], ['-', '_', ''], $encryptedData);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$key = "getvisitappdotcom";
|
||||||
|
// Step 1: Build plaintext exactly like Node (raw join with '&')
|
||||||
|
$str = '';
|
||||||
|
foreach ($userParams as $k => $v) {
|
||||||
|
$str .= '&' . $k . '=' . $v;
|
||||||
|
}
|
||||||
|
$plainText = substr($str, 1); // remove leading &
|
||||||
|
|
||||||
|
// Step 2: Derive 32-byte key with SHA256
|
||||||
|
$sha256Key = hash('sha256', $key, true);
|
||||||
|
|
||||||
|
// Step 3: Fixed IV
|
||||||
|
$iv = "getvisitappdocom"; // 16 bytes
|
||||||
|
|
||||||
|
// Step 4: Encrypt
|
||||||
|
$cipherRaw = openssl_encrypt(
|
||||||
|
$plainText,
|
||||||
|
'aes-256-cbc',
|
||||||
|
$sha256Key,
|
||||||
|
OPENSSL_RAW_DATA,
|
||||||
|
$iv
|
||||||
|
);
|
||||||
|
|
||||||
|
// Step 5: base64url encode
|
||||||
|
return rtrim(strtr(base64_encode($cipherRaw), '+/', '-_'), '=');
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
log_message('error', 'Nhance SSO Encryption Error: ' . $e->getMessage());
|
||||||
|
throw new Exception("Encryption failed: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrypt user parameters for testing purposes
|
||||||
|
*/
|
||||||
|
public static function decryptUserParams($encryptedParams = null) {
|
||||||
|
try {
|
||||||
|
// Use sample encrypted params if none provided
|
||||||
|
if ($encryptedParams === null) {
|
||||||
|
$encryptedParams = SELF::getSampleEncryptedParams();
|
||||||
|
log_message('info', 'Using sample encrypted parameters for decryption test');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle URL format if full URL is passed
|
||||||
|
if (strpos($encryptedParams, 'userParams=') !== false) {
|
||||||
|
$encryptedParams = SELF::extractParamsFromUrl($encryptedParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make URL-safe characters back to base64
|
||||||
|
$encryptedParams = str_replace(['-', '_'], ['+', '/'], $encryptedParams);
|
||||||
|
|
||||||
|
// Add padding if needed
|
||||||
|
$encryptedParams = $encryptedParams . str_repeat('=', (4 - strlen($encryptedParams) % 4) % 4);
|
||||||
|
|
||||||
|
// Decode base64
|
||||||
|
$data = base64_decode($encryptedParams);
|
||||||
|
|
||||||
|
if ($data === false) {
|
||||||
|
throw new Exception("Failed to decode base64 data");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract IV and encrypted data
|
||||||
|
$ivLength = openssl_cipher_iv_length(SELF::$algorithm);
|
||||||
|
$iv = substr($data, 0, $ivLength);
|
||||||
|
$encrypted = base64_encode(substr($data, $ivLength));
|
||||||
|
|
||||||
|
// Convert hex key to binary
|
||||||
|
$key = hex2bin(SELF::$encryptionKey);
|
||||||
|
|
||||||
|
// Decrypt the data
|
||||||
|
$decrypted = openssl_decrypt($encrypted, SELF::$algorithm, $key, 0, $iv);
|
||||||
|
|
||||||
|
if ($decrypted === false) {
|
||||||
|
throw new Exception("Decryption failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decode JSON
|
||||||
|
$userParams = json_decode($decrypted, true);
|
||||||
|
|
||||||
|
if ($userParams === null) {
|
||||||
|
throw new Exception("Failed to decode JSON data");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $userParams;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
log_message('error', 'Nhance SSO Decryption Error: ' . $e->getMessage());
|
||||||
|
throw new Exception("Decryption error: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate SSO URL with encrypted parameters
|
||||||
|
*/
|
||||||
|
public static function generateSSOUrl($userParams = null) {
|
||||||
|
try {
|
||||||
|
// Use sample parameters if none provided
|
||||||
|
if ($userParams === null) {
|
||||||
|
$userParams = SELF::getSampleUserParams();
|
||||||
|
log_message('info', 'Using sample user parameters for SSO URL generation');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate required parameters
|
||||||
|
SELF::validateUserParams($userParams);
|
||||||
|
|
||||||
|
// Encrypt user parameters
|
||||||
|
$encryptedParams = SELF::encryptUserParams($userParams);
|
||||||
|
|
||||||
|
// Build the SSO URL
|
||||||
|
$ssoUrl = SELF::$baseUrl . '?userParams=' . $encryptedParams . '&clientId=' . SELF::$clientId;
|
||||||
|
|
||||||
|
log_message('info', 'Nhance SSO URL generated successfully for user: ' . $userParams['email']);
|
||||||
|
|
||||||
|
return $ssoUrl;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
log_message('error', 'Nhance SSO URL Generation Error: ' . $e->getMessage());
|
||||||
|
throw new Exception("Failed to generate SSO URL: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate user parameters
|
||||||
|
*/
|
||||||
|
private static function validateUserParams($userParams) {
|
||||||
|
$requiredFields = [
|
||||||
|
'name', 'email', 'phone', 'memberId', 'gender', 'dob',
|
||||||
|
'policyName', 'policyNumber', 'employeeId', 'moduleName',
|
||||||
|
'relation', 'planId', 'policyStartDate', 'policyEndDate'
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($requiredFields as $field) {
|
||||||
|
if (!isset($userParams[$field]) || empty($userParams[$field])) {
|
||||||
|
throw new Exception("Required field '$field' is missing or empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate date formats
|
||||||
|
if (!SELF::validateDate($userParams['dob']) ||
|
||||||
|
!SELF::validateDate($userParams['policyStartDate']) ||
|
||||||
|
!SELF::validateDate($userParams['policyEndDate'])) {
|
||||||
|
throw new Exception("Invalid date format. Use YYYY-MM-DD format");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate gender
|
||||||
|
if (!in_array($userParams['gender'], ['Male', 'Female'])) {
|
||||||
|
throw new Exception("Gender must be 'Male' or 'Female'");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate email
|
||||||
|
if (!filter_var($userParams['email'], FILTER_VALIDATE_EMAIL)) {
|
||||||
|
throw new Exception("Invalid email format");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate date format (YYYY-MM-DD)
|
||||||
|
*/
|
||||||
|
private static function validateDate($date) {
|
||||||
|
$d = \DateTime::createFromFormat('Y-m-d', $date);
|
||||||
|
return $d && $d->format('Y-m-d') === $date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract encrypted parameters from SSO URL
|
||||||
|
*/
|
||||||
|
private static function extractParamsFromUrl($ssoUrl) {
|
||||||
|
$parsedUrl = parse_url($ssoUrl);
|
||||||
|
if (!isset($parsedUrl['query'])) {
|
||||||
|
throw new Exception("No query parameters found in URL");
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_str($parsedUrl['query'], $queryParams);
|
||||||
|
|
||||||
|
if (!isset($queryParams['userParams'])) {
|
||||||
|
throw new Exception("userParams not found in URL");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $queryParams['userParams'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run comprehensive tests
|
||||||
|
*/
|
||||||
|
public static function runTests() {
|
||||||
|
$results = [
|
||||||
|
'tests_passed' => 0,
|
||||||
|
'tests_failed' => 0,
|
||||||
|
'test_details' => []
|
||||||
|
];
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Test 1: Sample data encryption/decryption
|
||||||
|
log_message('info', 'Running Nhance SSO Test 1: Sample data round-trip');
|
||||||
|
$sampleParams = SELF::getSampleUserParams();
|
||||||
|
$ssoUrl = SELF::generateSSOUrl($sampleParams);
|
||||||
|
$encryptedParams = SELF::extractParamsFromUrl($ssoUrl);
|
||||||
|
$decryptedParams = SELF::decryptUserParams($encryptedParams);
|
||||||
|
|
||||||
|
$test1Pass = json_encode($sampleParams) === json_encode($decryptedParams);
|
||||||
|
$results['test_details']['sample_round_trip'] = [
|
||||||
|
'status' => $test1Pass ? 'PASSED' : 'FAILED',
|
||||||
|
'original_params' => $sampleParams,
|
||||||
|
'decrypted_params' => $decryptedParams,
|
||||||
|
'sso_url' => $ssoUrl
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($test1Pass) {
|
||||||
|
$results['tests_passed']++;
|
||||||
|
} else {
|
||||||
|
$results['tests_failed']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test 2: Custom parameters
|
||||||
|
log_message('info', 'Running Nhance SSO Test 2: Custom parameters');
|
||||||
|
$customParams = [
|
||||||
|
'name' => 'Jane Smith Test',
|
||||||
|
'email' => 'jane.test@example.com',
|
||||||
|
'phone' => '1122334455',
|
||||||
|
'memberId' => 'TEST-CUSTOM-001',
|
||||||
|
'gender' => 'Female',
|
||||||
|
'dob' => '1985-03-20',
|
||||||
|
'policyName' => 'Custom Test Policy',
|
||||||
|
'policyNumber' => 'CUSTOM-POL-001',
|
||||||
|
'employeeId' => 'EMP-CUSTOM-001',
|
||||||
|
'moduleName' => 'home',
|
||||||
|
'relation' => 'self',
|
||||||
|
'planId' => 'NHANCE-PLAN-1',
|
||||||
|
'policyStartDate' => date('Y-m-d'),
|
||||||
|
'policyEndDate' => date('Y-m-d', strtotime('+2 years'))
|
||||||
|
];
|
||||||
|
|
||||||
|
$customSsoUrl = SELF::generateSSOUrl($customParams);
|
||||||
|
$customEncryptedParams = SELF::extractParamsFromUrl($customSsoUrl);
|
||||||
|
$customDecryptedParams = SELF::decryptUserParams($customEncryptedParams);
|
||||||
|
|
||||||
|
$test2Pass = json_encode($customParams) === json_encode($customDecryptedParams);
|
||||||
|
$results['test_details']['custom_round_trip'] = [
|
||||||
|
'status' => $test2Pass ? 'PASSED' : 'FAILED',
|
||||||
|
'original_params' => $customParams,
|
||||||
|
'decrypted_params' => $customDecryptedParams,
|
||||||
|
'sso_url' => $customSsoUrl
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($test2Pass) {
|
||||||
|
$results['tests_passed']++;
|
||||||
|
} else {
|
||||||
|
$results['tests_failed']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test 3: Null parameter handling
|
||||||
|
log_message('info', 'Running Nhance SSO Test 3: Null parameter handling');
|
||||||
|
$nullTestUrl = SELF::generateSSOUrl(null);
|
||||||
|
$nullDecrypted = SELF::decryptUserParams(null);
|
||||||
|
|
||||||
|
$test3Pass = !empty($nullTestUrl) && !empty($nullDecrypted);
|
||||||
|
$results['test_details']['null_parameter_handling'] = [
|
||||||
|
'status' => $test3Pass ? 'PASSED' : 'FAILED',
|
||||||
|
'generated_url' => $nullTestUrl,
|
||||||
|
'decrypted_sample' => $nullDecrypted
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($test3Pass) {
|
||||||
|
$results['tests_passed']++;
|
||||||
|
} else {
|
||||||
|
$results['tests_failed']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$results['tests_failed']++;
|
||||||
|
$results['test_details']['error'] = $e->getMessage();
|
||||||
|
log_message('error', 'Nhance SSO Test Error: ' . $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
$results['overall_status'] = $results['tests_failed'] === 0 ? 'ALL_PASSED' : 'SOME_FAILED';
|
||||||
|
log_message('info', 'Nhance SSO Tests completed. Passed: ' . $results['tests_passed'] . ', Failed: ' . $results['tests_failed']);
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
@ -306,9 +306,11 @@ if (!function_exists('check_si')) {
|
|||||||
if (!function_exists('check_basic_pay')) {
|
if (!function_exists('check_basic_pay')) {
|
||||||
function check_basic_pay($row, $policy_terms, $slab_details)
|
function check_basic_pay($row, $policy_terms, $slab_details)
|
||||||
{
|
{
|
||||||
|
// dd($row, $policy_terms, $slab_details);
|
||||||
if ($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I', 'A', 'DA', 'MI'])) // check rule only of action column data available
|
if ($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I', 'A', 'DA', 'MI'])) // check rule only of action column data available
|
||||||
{
|
{
|
||||||
$is_basic_pay_needed = $slab_details['grid_master']['basicpay'];
|
// $is_basic_pay_needed = $slab_details['grid_master']['basicpay'];
|
||||||
|
$is_basic_pay_needed = ($slab_details['grid_master']['basicpay'] == 1 && $slab_details['slab_rates'][0]['si_or_bp'] == 2 && $slab_details['slab_rates'][0]['basic_pay'] != null) ? 1 : 0;
|
||||||
// $is_basic_pay_needed = true;
|
// $is_basic_pay_needed = true;
|
||||||
$slug = \Config\Services::slug();
|
$slug = \Config\Services::slug();
|
||||||
$relationship = $slug->slugify($row[5]);
|
$relationship = $slug->slugify($row[5]);
|
||||||
|
|||||||
35
app/Helpers/exception_helper.php
Normal file
35
app/Helpers/exception_helper.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// app/Helpers/ExceptionHelper.php
|
||||||
|
if (!function_exists('handle_exception')) {
|
||||||
|
function handle_exception(Throwable $e, $logger = null, $response = null)
|
||||||
|
{
|
||||||
|
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600) ? $e->getCode() : 500;
|
||||||
|
|
||||||
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
|
|| $e instanceof \mysqli_sql_exception
|
||||||
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
|
$context = [
|
||||||
|
'title' => get_class($e),
|
||||||
|
'type' => get_class($e),
|
||||||
|
'code' => $code,
|
||||||
|
'message' => $e->getMessage(),
|
||||||
|
'file' => $e->getFile(),
|
||||||
|
'line' => $e->getLine()
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($logger) {
|
||||||
|
$logger->logme('error', "Exception: {message} in {file} on line {line}", $context, 0);
|
||||||
|
} else {
|
||||||
|
log_message('error', "Exception: {$context['message']} in {$context['file']} on line {$context['line']}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response->setJSON([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $isDbError ? 'Data Access Error' : $e->getMessage(),
|
||||||
|
'ref' => $isDbError ? 'database - ' : 'application - ' . $code . ' - ' . $e->getLine()
|
||||||
|
])->setStatusCode($code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -563,36 +563,19 @@ class EmployeePolicyModel extends Model
|
|||||||
employees.email_personal AS emp_email_p,
|
employees.email_personal AS emp_email_p,
|
||||||
employees.band AS emp_grade,
|
employees.band AS emp_grade,
|
||||||
employees.designation AS emp_designation,
|
employees.designation AS emp_designation,
|
||||||
employees.basic_pay AS emp_basic_pay,
|
employees.basic_pay AS emp_basic_pay
|
||||||
|
|
||||||
batch_data.emp_policy_id,
|
|
||||||
batch_data.bl AS batch_list_batch_code,
|
|
||||||
batch_data.bf AS batch_files_batch_code
|
|
||||||
|
|
||||||
FROM
|
FROM
|
||||||
emp_endorsement
|
emp_endorsement
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
employees ON employees.id = emp_endorsement.pk
|
employees ON employees.id = emp_endorsement.pk
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
employee_polices ON employees.id = employee_polices.employee_id
|
employee_polices ON employees.id = employee_polices.employee_id
|
||||||
LEFT JOIN (
|
|
||||||
SELECT batch_list.emp_policy_id,
|
|
||||||
batch_list.batch_code AS bl,
|
|
||||||
batch_files.batch_code AS bf
|
|
||||||
FROM
|
|
||||||
batch_files
|
|
||||||
LEFT JOIN
|
|
||||||
batch_list ON batch_files.batch_code = batch_list.batch_code
|
|
||||||
WHERE batch_files.event_type = 'correction'
|
|
||||||
AND batch_files.actions = 'export'
|
|
||||||
AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
|
|
||||||
) AS batch_data ON emp_endorsement.pk = batch_data.emp_policy_id
|
|
||||||
|
|
||||||
WHERE employees.client_id = '{$client_id}'
|
WHERE employees.client_id = '{$client_id}'
|
||||||
AND employee_polices.client_policy_id = '{$client_policy_id}'
|
AND employee_polices.client_policy_id = '{$client_policy_id}'
|
||||||
AND employees.client_branch_id = '{$client_branch_id}'
|
AND employees.client_branch_id = '{$client_branch_id}'
|
||||||
AND emp_endorsement.actions = 'c'
|
AND emp_endorsement.actions = 'c'
|
||||||
AND emp_endorsement.status != 'truncated'
|
AND emp_endorsement.status != 'truncated'
|
||||||
|
AND emp_endorsement.is_active = 1
|
||||||
AND employee_polices.is_active = 1
|
AND employee_polices.is_active = 1
|
||||||
AND employee_polices.status = 'active'
|
AND employee_polices.status = 'active'
|
||||||
AND employees.is_active = 1
|
AND employees.is_active = 1
|
||||||
|
|||||||
51
app/Models/NhanceBranchModel.php
Normal file
51
app/Models/NhanceBranchModel.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use CodeIgniter\Model;
|
||||||
|
|
||||||
|
class NhanceBranchModel extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'nhance_branch';
|
||||||
|
protected $primaryKey = 'id';
|
||||||
|
protected $allowedFields = [
|
||||||
|
"id",
|
||||||
|
"branch_name",
|
||||||
|
"created_by",
|
||||||
|
"updated_by",
|
||||||
|
"is_active",
|
||||||
|
];
|
||||||
|
|
||||||
|
// Callbacks
|
||||||
|
protected $allowCallbacks = true;
|
||||||
|
protected $beforeInsert = ["checkAndADDCreatedByValue"];
|
||||||
|
protected $afterInsert = [];
|
||||||
|
protected $beforeUpdate = ["checkAndUpdateUpdatedByValue"];
|
||||||
|
protected $afterUpdate = [];
|
||||||
|
protected $beforeFind = [];
|
||||||
|
protected $afterFind = [];
|
||||||
|
protected $beforeDelete = [];
|
||||||
|
protected $afterDelete = [];
|
||||||
|
|
||||||
|
protected function checkAndADDCreatedByValue(array $data)
|
||||||
|
{
|
||||||
|
// Check if 'updated_by' value is null or empty
|
||||||
|
if (empty($data['data']['created_by'])) {
|
||||||
|
// Set 'updated_by' value to the current session user ID
|
||||||
|
$data['data']['created_by'] = get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function checkAndUpdateUpdatedByValue(array $data)
|
||||||
|
{
|
||||||
|
// Check if 'updated_by' value is null or empty
|
||||||
|
if (empty($data['data']['updated_by'])) {
|
||||||
|
// Set 'updated_by' value to the current session user ID
|
||||||
|
$data['data']['updated_by'] = get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -15,6 +15,7 @@ class PolicyTransactionModel extends Model
|
|||||||
protected $allowedFields = [
|
protected $allowedFields = [
|
||||||
'id',
|
'id',
|
||||||
'issuer',
|
'issuer',
|
||||||
|
'issuer_branch',
|
||||||
'client_id',
|
'client_id',
|
||||||
'client_branch_id',
|
'client_branch_id',
|
||||||
'insurer_id',
|
'insurer_id',
|
||||||
|
|||||||
@ -920,7 +920,8 @@ table.dataTable tbody td {
|
|||||||
enableFiltering: false,
|
enableFiltering: false,
|
||||||
enableCaseInsensitiveFiltering: false,
|
enableCaseInsensitiveFiltering: false,
|
||||||
includeSelectAllOption : false,
|
includeSelectAllOption : false,
|
||||||
buttonWidth:'100%'
|
buttonWidth:'100%',
|
||||||
|
dropUp: true
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.close').click(function(){
|
$('.close').click(function(){
|
||||||
|
|||||||
@ -130,6 +130,11 @@
|
|||||||
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip"
|
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip"
|
||||||
data-placement="top" title="Wrong File Uploaded"></a>
|
data-placement="top" title="Wrong File Uploaded"></a>
|
||||||
|
|
||||||
|
<?php } else if ($file['status'] == 'failed-6') { ?>
|
||||||
|
|
||||||
|
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip"
|
||||||
|
data-placement="top" title="There is no data to update"></a>
|
||||||
|
|
||||||
<?php } else { ?>
|
<?php } else { ?>
|
||||||
|
|
||||||
<?php echo $file['status']; ?>
|
<?php echo $file['status']; ?>
|
||||||
|
|||||||
@ -129,7 +129,7 @@
|
|||||||
|
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label for="policy_no">Policy No<span class="text-danger">*</span></label>
|
<label for="policy_no">Policy No<span class="text-danger">*</span></label>
|
||||||
<input value="" type="text" class="form-control" placeholder="Enter Policy Number " name="policy_no" id="policy_no" required>
|
<input value="" type="text" class="form-control" oninput="checkPolicyNo(this)" placeholder="Enter Policy Number" name="policy_no" id="policy_no" required>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1832,24 +1832,27 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#policy_no').change(function(){
|
//check dublicate policy number
|
||||||
|
function checkPolicyNo() {
|
||||||
|
|
||||||
var policy_no = $(this).val();
|
var policy_no = $('#policy_no').val();
|
||||||
console.log(policy_no +'-'+policy_no.length);
|
console.log(policy_no + '-' + policy_no.length);
|
||||||
policy_no = policy_no.trim();
|
policy_no = policy_no.trim();
|
||||||
console.log(policy_no +'-'+policy_no.length);
|
console.log(policy_no + '-' + policy_no.length);
|
||||||
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '<?php echo base_url('util/check_policy_no/');?>'+policy_no,
|
url: '<?php echo base_url('util/check_policy_no/');?>' + policy_no,
|
||||||
type: "GET",
|
type: "GET",
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function (res) {
|
success: function (res) {
|
||||||
|
console.log(res);
|
||||||
|
if (res.status == true) {
|
||||||
|
|
||||||
console.log(res)
|
|
||||||
if(res.status == true){
|
|
||||||
toastr.warning(res.message, 'warning');
|
toastr.warning(res.message, 'warning');
|
||||||
$('#policy_no').val('');
|
$('#policy_no').val('');
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (xhr, status, error) {
|
error: function (xhr, status, error) {
|
||||||
@ -1857,8 +1860,7 @@
|
|||||||
console.error(status, error);
|
console.error(status, error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
})
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
// Check if the URL contains a hash
|
// Check if the URL contains a hash
|
||||||
|
|||||||
@ -90,13 +90,14 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row policy_issue_date_row" style="display:none;">
|
|
||||||
|
<!-- <div class="form-row policy_issue_date_row" style="display:none;">
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label id="policy_issue_date_label">Policy Issue Date</label> <br />
|
<label id="policy_issue_date_label">Policy Issue Date</label> <br />
|
||||||
<input type="text" class="form-control" id="policy_issue_date" name="policy_issue_date"
|
<input type="text" class="form-control" id="policy_issue_date" name="policy_issue_date"
|
||||||
placeholder="Enter Policy Issue Date">
|
placeholder="Enter Policy Issue Date">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<div class="form-row" id="import_excel_btn">
|
<div class="form-row" id="import_excel_btn">
|
||||||
@ -152,10 +153,10 @@
|
|||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
var policy_issue_datePicker = flatpickr("#policy_issue_date", {
|
// var policy_issue_datePicker = flatpickr("#policy_issue_date", {
|
||||||
dateFormat: "d/m/Y",
|
// dateFormat: "d/m/Y",
|
||||||
allowInput: false,
|
// allowInput: false,
|
||||||
});
|
// });
|
||||||
|
|
||||||
$('#insurer_or_tpa, #action_type').on('change', togglePolicyIssueDate);
|
$('#insurer_or_tpa, #action_type').on('change', togglePolicyIssueDate);
|
||||||
});
|
});
|
||||||
@ -751,14 +752,14 @@
|
|||||||
function togglePolicyIssueDate() {
|
function togglePolicyIssueDate() {
|
||||||
let insurer = $('#insurer_or_tpa').val();
|
let insurer = $('#insurer_or_tpa').val();
|
||||||
let action = $('#action_type').val();
|
let action = $('#action_type').val();
|
||||||
if (insurer === 'insurer' && action === 'import') {
|
// if (insurer === 'insurer' && action === 'import') {
|
||||||
$('.policy_issue_date_row').show();
|
// $('.policy_issue_date_row').show();
|
||||||
$('#policy_issue_date').attr('required', true);
|
// $('#policy_issue_date').attr('required', true);
|
||||||
$('#policy_issue_date_label').html('Policy Issue Date <span class="text-danger">*</span>');
|
// $('#policy_issue_date_label').html('Policy Issue Date <span class="text-danger">*</span>');
|
||||||
} else {
|
// } else {
|
||||||
$('.policy_issue_date_row').hide();
|
// $('.policy_issue_date_row').hide();
|
||||||
$('#policy_issue_date').removeAttr('required').val('');
|
// $('#policy_issue_date').removeAttr('required').val('');
|
||||||
$('#policy_issue_date_label').text('Policy Issue Date');
|
// $('#policy_issue_date_label').text('Policy Issue Date');
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -882,6 +882,7 @@ if (isset($selected_lead_type)) {
|
|||||||
if (data.salse_person_id) {
|
if (data.salse_person_id) {
|
||||||
selecSalsePerson(data.salse_person_id);
|
selecSalsePerson(data.salse_person_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error in dynamicLeadsDataForEdit function:', error);
|
console.error('Error in dynamicLeadsDataForEdit function:', error);
|
||||||
$('.loader').fadeOut();
|
$('.loader').fadeOut();
|
||||||
@ -1147,6 +1148,22 @@ if (isset($selected_lead_type)) {
|
|||||||
dateFormat: "d-m-Y"
|
dateFormat: "d-m-Y"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
let selectedOption = $('#contact_person_summary option').filter(function () {
|
||||||
|
return $(this).text().trim() === (data.contact_person_name || '').trim();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (selectedOption.length) {
|
||||||
|
selectedOption.prop('selected', true);
|
||||||
|
console.log("Selected option:", selectedOption.text().trim(), "Value:", selectedOption.val());
|
||||||
|
} else {
|
||||||
|
console.log("No match found for:", data.contact_person_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#contact_person_summary').trigger('change');
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -169,7 +169,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input class="form-check-input me-2" type="checkbox" id="accidentalDeathBenefit_display" name="accidentalDeathBenefit_display" checked>
|
<input class="form-check-input me-2 unchecked" type="checkbox" id="accidentalDeathBenefit_display" name="accidentalDeathBenefit_display" checked>
|
||||||
<label class="form-check-label mb-0" for="accidentalDeathBenefit_display">
|
<label class="form-check-label mb-0" for="accidentalDeathBenefit_display">
|
||||||
Accidental Death Benefit
|
Accidental Death Benefit
|
||||||
</label>
|
</label>
|
||||||
@ -181,7 +181,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input class="form-check-input me-2" type="checkbox" id="permanentTotalDisablement_display" name="permanentTotalDisablement_display" checked>
|
<input class="form-check-input me-2 unchecked" type="checkbox" id="permanentTotalDisablement_display" name="permanentTotalDisablement_display" checked>
|
||||||
<label class="form-check-label mb-0" for="permanentTotalDisablement_display">
|
<label class="form-check-label mb-0" for="permanentTotalDisablement_display">
|
||||||
Permanent Total Disablement
|
Permanent Total Disablement
|
||||||
</label>
|
</label>
|
||||||
@ -197,7 +197,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="permanentPartialDisablement_display" id="permanentPartialDisablement_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="permanentPartialDisablement_display" id="permanentPartialDisablement_display" checked>
|
||||||
<label class="form-check-label mb-0" for="permanentPartialDisablement">Permanent Partial Disablement</label>
|
<label class="form-check-label mb-0" for="permanentPartialDisablement">Permanent Partial Disablement</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -208,7 +208,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="temporaryTotalDisablementBenefit_display" id="temporaryTotalDisablementBenefit_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="temporaryTotalDisablementBenefit_display" id="temporaryTotalDisablementBenefit_display" checked>
|
||||||
<label class="form-check-label mb-0" for="temporaryTotalDisablementBenefit">Temporary Total Disablement Benefit</label>
|
<label class="form-check-label mb-0" for="temporaryTotalDisablementBenefit">Temporary Total Disablement Benefit</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -221,7 +221,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="medical_expenses_medical_extension_display" id="medical_expenses_medical_extension_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="medical_expenses_medical_extension_display" id="medical_expenses_medical_extension_display" checked>
|
||||||
<label class="form-check-label mb-0" for="medical_expenses_medical_extension">Medical Expenses / Medical Extension (IPD)</label>
|
<label class="form-check-label mb-0" for="medical_expenses_medical_extension">Medical Expenses / Medical Extension (IPD)</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -232,7 +232,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="opd_treatment_cover_display" id="opd_treatment_cover_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="opd_treatment_cover_display" id="opd_treatment_cover_display" checked>
|
||||||
<label class="form-check-label mb-0" for="opd_treatment_cover">OPD Treatment Cover</label>
|
<label class="form-check-label mb-0" for="opd_treatment_cover">OPD Treatment Cover</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -245,7 +245,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="ambulanceCharges_display" id="ambulanceCharges_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="ambulanceCharges_display" id="ambulanceCharges_display" checked>
|
||||||
<label class="form-check-label mb-0" for="ambulanceCharges"> Ambulance Charges</label>
|
<label class="form-check-label mb-0" for="ambulanceCharges"> Ambulance Charges</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -255,7 +255,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox"class="form-check-input me-2" name="repatriation_of_mortal_remains_display" id="repatriation_of_mortal_remains_display" checked>
|
<input type="checkbox"class="form-check-input me-2 unchecked" name="repatriation_of_mortal_remains_display" id="repatriation_of_mortal_remains_display" checked>
|
||||||
<label class="form-check-label mb-0" for="repatriation_of_mortal_remains">Repatriation of Mortal Remains</label>
|
<label class="form-check-label mb-0" for="repatriation_of_mortal_remains">Repatriation of Mortal Remains</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -267,7 +267,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="childrenEducationWelfareFund_display" id="childrenEducationWelfareFund_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="childrenEducationWelfareFund_display" id="childrenEducationWelfareFund_display" checked>
|
||||||
<label class="form-check-label mb-0" for="childrenEducationWelfareFund">Children Education Welfare Fund</label>
|
<label class="form-check-label mb-0" for="childrenEducationWelfareFund">Children Education Welfare Fund</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -277,7 +277,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check align-items-center">
|
<div class="form-check align-items-center">
|
||||||
<input type="checkbox" class="form-check-input me-2" name="terrorism_display" id="gpa_terrorism_display" checked>
|
<input type="checkbox" class="form-check-input me-2 unchecked" name="terrorism_display" id="gpa_terrorism_display" checked>
|
||||||
<label class="form-check-label mb-0"for="terrorism">Terrorism</label>
|
<label class="form-check-label mb-0"for="terrorism">Terrorism</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -289,7 +289,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="worldwideCover_display" id="worldwideCover_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="worldwideCover_display" id="worldwideCover_display" checked>
|
||||||
<label class="form-check-label" for="worldwideCover">Worldwide Cover</label>
|
<label class="form-check-label" for="worldwideCover">Worldwide Cover</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -299,7 +299,7 @@
|
|||||||
|
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="family_transportation_benefits_display" id="family_transportation_benefits_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="family_transportation_benefits_display" id="family_transportation_benefits_display" checked>
|
||||||
<label class="form-check-label" for="family_transportation_benefits">Family Transportation Benefits</label>
|
<label class="form-check-label" for="family_transportation_benefits">Family Transportation Benefits</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -311,7 +311,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="fractures_dislocation_burns_display" id="fractures_dislocation_burns_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="fractures_dislocation_burns_display" id="fractures_dislocation_burns_display" checked>
|
||||||
<label class="form-check-label"for="fractures_dislocation_burns">Fractures / Dislocation / Burns</label>
|
<label class="form-check-label"for="fractures_dislocation_burns">Fractures / Dislocation / Burns</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -320,7 +320,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="coma_display" id="coma_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="coma_display" id="coma_display" checked>
|
||||||
<label class="form-check-label" for="coma">Coma</label>
|
<label class="form-check-label" for="coma">Coma</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -332,7 +332,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex-align-items-center">
|
<div class="form-check d-flex-align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="carriageofDeadBody_display" id="carriageofDeadBody_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="carriageofDeadBody_display" id="carriageofDeadBody_display" checked>
|
||||||
<label class="form-check-label" for="carriageOfDeadBody">Carriage of Dead Body</label>
|
<label class="form-check-label" for="carriageOfDeadBody">Carriage of Dead Body</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -341,7 +341,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex-align-items-center">
|
<div class="form-check d-flex-align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="compassionateVisitExpenses_display" id="compassionateVisitExpenses_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="compassionateVisitExpenses_display" id="compassionateVisitExpenses_display" checked>
|
||||||
<label class="form-check-label" for="compassionateVisitExpenses">Compassionate Visit Expenses</label>
|
<label class="form-check-label" for="compassionateVisitExpenses">Compassionate Visit Expenses</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -353,7 +353,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="travel_expenses_for_medical_treatment_display" id="travel_expenses_for_medical_treatment_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="travel_expenses_for_medical_treatment_display" id="travel_expenses_for_medical_treatment_display" checked>
|
||||||
<label class="form-check-label" for="travel_expenses_for_medical_treatment">Travel expenses for Medical Treatment</label>
|
<label class="form-check-label" for="travel_expenses_for_medical_treatment">Travel expenses for Medical Treatment</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -362,7 +362,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="daily_cash_allowance_display" id="daily_cash_allowance_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="daily_cash_allowance_display" id="daily_cash_allowance_display" checked>
|
||||||
<label class="form-check-label" for="daily_cash_allowance">Daily cash Allowance</label>
|
<label class="form-check-label" for="daily_cash_allowance">Daily cash Allowance</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -374,7 +374,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="artifical_limb_and_prosthesis_display" id="artifical_limb_and_prosthesis_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="artifical_limb_and_prosthesis_display" id="artifical_limb_and_prosthesis_display" checked>
|
||||||
<label class="form-check-label" for="artifical_limb_and_prosthesis">Artifical Limb and Prosthesis</label>
|
<label class="form-check-label" for="artifical_limb_and_prosthesis">Artifical Limb and Prosthesis</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -383,7 +383,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="animalSnakeInsectBite_display" id="animalSnakeInsectBite_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="animalSnakeInsectBite_display" id="animalSnakeInsectBite_display" checked>
|
||||||
<label class="form-check-label" for="animalSnakeInsectBite">Animal/Snake/Insect bite</label>
|
<label class="form-check-label" for="animalSnakeInsectBite">Animal/Snake/Insect bite</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -396,7 +396,7 @@
|
|||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="form-check d-flex align-items-center">
|
<div class="form-check d-flex align-items-center">
|
||||||
<input type="checkbox" class="form-check-input" name="air_ambulance_display" id="air_ambulance_display" checked>
|
<input type="checkbox" class="form-check-input unchecked" name="air_ambulance_display" id="air_ambulance_display" checked>
|
||||||
<label class="form-check-label" for="air_ambulance">Air Ambulance</label>
|
<label class="form-check-label" for="air_ambulance">Air Ambulance</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -657,7 +657,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key.includes("enrollment_display_key") && key != "") {
|
if (key.includes("enrollment_display_key") && key.length) {
|
||||||
|
|
||||||
console.log('enrollment_display_key');
|
console.log('enrollment_display_key');
|
||||||
console.log(gpaJsonObjectForSpecialCondition[key]);
|
console.log(gpaJsonObjectForSpecialCondition[key]);
|
||||||
@ -698,7 +698,7 @@
|
|||||||
.next()[0];
|
.next()[0];
|
||||||
$(element).css("display", "");
|
$(element).css("display", "");
|
||||||
}
|
}
|
||||||
disableUnwantedTermsforGPA(jsonObject);
|
// disableUnwantedTermsforGPA(jsonObject);
|
||||||
|
|
||||||
Object.keys(jsonObject).forEach(function(key) {
|
Object.keys(jsonObject).forEach(function(key) {
|
||||||
|
|
||||||
|
|||||||
@ -3464,6 +3464,11 @@ function appendNewTab(tabNameData = null, data = null)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$('.nav-link').click(function(){
|
||||||
|
$('.nav-link').removeClass('active-tab');
|
||||||
|
$(this).addClass('active-tab');
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendGridData(data, policy_grid_id_value = null, unique_id = null)
|
function appendGridData(data, policy_grid_id_value = null, unique_id = null)
|
||||||
|
|||||||
@ -302,23 +302,23 @@
|
|||||||
<input id="install_due_date" type="text" class="form-control" name="install_due_date" placeholder="DD/MM/YYYY">
|
<input id="install_due_date" type="text" class="form-control" name="install_due_date" placeholder="DD/MM/YYYY">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<!-- <div class="form-group col-md-3">
|
||||||
<label class="switch" style="position: relative;top: 32px;left: 20px;">
|
<label class="switch" style="position: relative;top: 32px;left: 20px;">
|
||||||
<input id="policy_with_corr" type="checkbox" name="policy_with_corr">
|
<input id="policy_with_corr" type="checkbox" name="policy_with_corr">
|
||||||
<span class="slider round" style="height: 27px;"></span>
|
<span class="slider round" style="height: 27px;"></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label for="policy_with_corr" style="position: relative;top: 33px;left: 25px;"> Policy with Correction</label>
|
<label for="policy_with_corr" style="position: relative;top: 33px;left: 25px;"> Policy with Correction</label>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<!-- <div class="form-group col-md-3">
|
||||||
<label class="switch" style="position: relative;top: 32px;left: 20px;">
|
<label class="switch" style="position: relative;top: 32px;left: 20px;">
|
||||||
<input id="is_cd_reduce_from_bds" type="checkbox" name="is_cd_reduce_from_bds">
|
<input id="is_cd_reduce_from_bds" type="checkbox" name="is_cd_reduce_from_bds">
|
||||||
<span class="slider round" style="height: 27px;"></span>
|
<span class="slider round" style="height: 27px;"></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label for="is_cd_reduce_from_bds" style="position: relative;top: 33px;left: 25px;">Make Entry in CD <i class="mdi mdi-information-outline" data-toggle="tooltip" title="Enabling this will affect ( Credit/Debit ) the CD transaction. ( GMC, GPA, EDLI and GTLI, CD transaction from CRM )"></i></label>
|
<label for="is_cd_reduce_from_bds" style="position: relative;top: 33px;left: 25px;">Make Entry in CD <i class="mdi mdi-information-outline" data-toggle="tooltip" title="Enabling this will affect ( Credit/Debit ) the CD transaction. ( GMC, GPA, EDLI and GTLI, CD transaction from CRM )"></i></label>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -363,13 +363,14 @@
|
|||||||
<td>Is Leader?</td>
|
<td>Is Leader?</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="table_tr_33">
|
<tr id="table_tr_34">
|
||||||
<td>CD Acc No</td>
|
<td>CD Acc No</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="table_tr_34">
|
<tr id="table_tr_37">
|
||||||
<td>CD Amount</td>
|
<td>CD Amount</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="table_tr_35">
|
<tr id="table_tr_35">
|
||||||
<td>Follower Policy No</td>
|
<td>Follower Policy No</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -505,7 +506,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group text-right m-b-0" id="submitButton">
|
<div class="form-group text-right m-b-0" id="submitButton">
|
||||||
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnSubmit">Submit</button>
|
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnSubmit">Submit</button>
|
||||||
</div>
|
</div>
|
||||||
@ -602,20 +602,32 @@ $(document).ready(function(){
|
|||||||
var end_date = $(this).find('option:selected').attr('data-ed');
|
var end_date = $(this).find('option:selected').attr('data-ed');
|
||||||
var policy_type_id = $(this).find('option:selected').attr('data-ptid');
|
var policy_type_id = $(this).find('option:selected').attr('data-ptid');
|
||||||
|
|
||||||
if(policy_type_id == 1 || policy_type_id == 2 || policy_type_id == 3 || policy_type_id == 4 || policy_type_id == 5 || policy_type_id == 6 || policy_type_id == 7){
|
// if(policy_type_id == 1 || policy_type_id == 2 || policy_type_id == 3 || policy_type_id == 4 || policy_type_id == 5 || policy_type_id == 6 || policy_type_id == 7){
|
||||||
$('#is_cd_reduce_from_bds').prop('disabled',true).prop('checked', false)
|
// $('#is_cd_reduce_from_bds').prop('disabled',true).prop('checked', false)
|
||||||
}else{
|
// }else{
|
||||||
$('#is_cd_reduce_from_bds').prop('disabled',false)
|
// $('#is_cd_reduce_from_bds').prop('disabled',false)
|
||||||
}
|
// }
|
||||||
|
|
||||||
if( policy_type_id > 7 ){
|
if( policy_type_id > 7 ){
|
||||||
$('#tpa_endorse_div').hide();
|
$('#tpa_endorse_div').hide();
|
||||||
$('#no_of_insured_endorse_div').hide();
|
$('#table_tr_34').show();
|
||||||
$('#no_of_dependents_endorse_div').hide();
|
$('#table_tr_37').show();
|
||||||
}else{
|
}else{
|
||||||
$('#tpa_endorse_div').show();
|
$('#tpa_endorse_div').show();
|
||||||
|
$('#table_tr_34').hide();
|
||||||
|
$('#table_tr_37').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(policy_type_id == 2 || policy_type_id == 3 || policy_type_id == 4 || policy_type_id == 5){
|
||||||
$('#no_of_insured_endorse_div').show();
|
$('#no_of_insured_endorse_div').show();
|
||||||
$('#no_of_dependents_endorse_div').show();
|
$('#no_of_dependents_endorse_div').show();
|
||||||
|
}else if(policy_type_id == 1 || policy_type_id == 6 || policy_type_id == 7) {
|
||||||
|
$('#no_of_insured_endorse_div').show();
|
||||||
|
$('#no_of_dependents_endorse_div').hide();
|
||||||
|
}else{
|
||||||
|
$('#no_of_insured_endorse_div').hide();
|
||||||
|
$('#no_of_dependents_endorse_div').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -822,8 +834,13 @@ $('#client_type').on('change', function() {
|
|||||||
|
|
||||||
if (selectedClientType == 2) {
|
if (selectedClientType == 2) {
|
||||||
$('.branchdiv').hide();
|
$('.branchdiv').hide();
|
||||||
|
$('#table_tr_34').hide();
|
||||||
|
$('#table_tr_37').hide();
|
||||||
} else {
|
} else {
|
||||||
$('.branchdiv').show();
|
$('.branchdiv').show();
|
||||||
|
$('#table_tr_34').show();
|
||||||
|
$('#table_tr_37').show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('selectedClientType', selectedClientType);
|
console.log('selectedClientType', selectedClientType);
|
||||||
@ -850,8 +867,14 @@ $('#client_type').on('change', function() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$('#client_policy_id').empty().append($('<option>', {
|
||||||
|
value: '',
|
||||||
|
text: 'Select Policy'
|
||||||
|
}))
|
||||||
|
|
||||||
// Initialize or refresh Select2 for both dropdowns
|
// Initialize or refresh Select2 for both dropdowns
|
||||||
$('#client_id').select2();
|
$('#client_id').select2();
|
||||||
|
$('#client_policy_id').select2();
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#endorsement_no').on('change', function(){
|
$('#endorsement_no').on('change', function(){
|
||||||
@ -968,11 +991,11 @@ function getPolicyTransactionDataForEndorsementEdit(input){
|
|||||||
$('#policy_with_corr').prop('checked', false);
|
$('#policy_with_corr').prop('checked', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res.data.is_cd_reduce_from_bds == 1) {
|
// if (res.data.is_cd_reduce_from_bds == 1) {
|
||||||
$('#is_cd_reduce_from_bds').prop('checked', true).prop('checked', false);
|
// $('#is_cd_reduce_from_bds').prop('checked', true).prop('checked', false);
|
||||||
} else {
|
// } else {
|
||||||
$('#is_cd_reduce_from_bds').prop('checked', false);
|
// $('#is_cd_reduce_from_bds').prop('checked', false);
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (res.data.action_type == 'policy_instalment') {
|
if (res.data.action_type == 'policy_instalment') {
|
||||||
$('.install_due_date_div').show()
|
$('.install_due_date_div').show()
|
||||||
@ -990,11 +1013,11 @@ function getPolicyTransactionDataForEndorsementEdit(input){
|
|||||||
addInsurerColumn();
|
addInsurerColumn();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(res.data.policy_type_id == 1 || res.data.policy_type_id == 2 || res.data.policy_type_id == 3 || res.data.policy_type_id == 4 || res.data.policy_type_id == 5 || res.data.policy_type_id == 6 || res.data.policy_type_id == 7){
|
// if(res.data.policy_type_id == 1 || res.data.policy_type_id == 2 || res.data.policy_type_id == 3 || res.data.policy_type_id == 4 || res.data.policy_type_id == 5 || res.data.policy_type_id == 6 || res.data.policy_type_id == 7){
|
||||||
$('#is_cd_reduce_from_bds').prop('disabled',true).prop('checked', false);
|
// $('#is_cd_reduce_from_bds').prop('disabled',true).prop('checked', false);
|
||||||
}else{
|
// }else{
|
||||||
$('#is_cd_reduce_from_bds').prop('disabled',false);
|
// $('#is_cd_reduce_from_bds').prop('disabled',false);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -701,7 +701,7 @@ function show_list_hide_add()
|
|||||||
count = 0
|
count = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function getClientAndBranchAndPolicy()
|
function getClientAndBranchAndPolicy(appendStatus = true)
|
||||||
{
|
{
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '<?= base_url("/util/getClientAndBranchAndPolicy") ?>',
|
url: '<?= base_url("/util/getClientAndBranchAndPolicy") ?>',
|
||||||
@ -710,15 +710,21 @@ function getClientAndBranchAndPolicy()
|
|||||||
success: function(res) {
|
success: function(res) {
|
||||||
|
|
||||||
console.log('getClientAndBranchAndPolicy', res);
|
console.log('getClientAndBranchAndPolicy', res);
|
||||||
|
|
||||||
if(res.status == true){
|
if(res.status == true){
|
||||||
|
|
||||||
client_list = res.client_data;
|
client_list = res.client_data;
|
||||||
branch_list = res.branch_data;
|
branch_list = res.branch_data;
|
||||||
policy_list = res.policy_data;
|
policy_list = res.policy_data;
|
||||||
vehicle_list = res.vehicle_data;
|
vehicle_list = res.vehicle_data;
|
||||||
unit_list = res.unit_data;
|
unit_list = res.unit_data;
|
||||||
appendClients(res.client_data);
|
|
||||||
appendVehicles(res.vehicle_data);
|
if(appendStatus == true){
|
||||||
appendOwner(client_list)
|
appendClients(res.client_data);
|
||||||
|
appendVehicles(res.vehicle_data);
|
||||||
|
// appendOwner(client_list)
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
console.log('No data found');
|
console.log('No data found');
|
||||||
}
|
}
|
||||||
@ -731,7 +737,7 @@ function getClientAndBranchAndPolicy()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendClients(data)
|
function appendClients(data, client_id = null)
|
||||||
{
|
{
|
||||||
$('#client_id').empty();
|
$('#client_id').empty();
|
||||||
|
|
||||||
@ -761,11 +767,15 @@ function appendClients(data)
|
|||||||
class: item.client_type == 1 ? 'group' : item.client_type == 2 ? 'individual' : ''
|
class: item.client_type == 1 ? 'group' : item.client_type == 2 ? 'individual' : ''
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (client_id == item.id) {
|
||||||
|
option.attr('selected', true);
|
||||||
|
}
|
||||||
|
|
||||||
$('#client_id').append(option);
|
$('#client_id').append(option);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendVehicles(data, vehicle_id)
|
function appendVehicles(data, vehicle_id = null)
|
||||||
{
|
{
|
||||||
$('#vehicle_no').empty();
|
$('#vehicle_no').empty();
|
||||||
|
|
||||||
@ -794,7 +804,7 @@ function appendVehicles(data, vehicle_id)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendBranch(data)
|
function appendBranch(data, branch_id = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
$('#client_branch_id').empty();
|
$('#client_branch_id').empty();
|
||||||
@ -810,6 +820,11 @@ function appendBranch(data)
|
|||||||
value: item.id,
|
value: item.id,
|
||||||
text: item.branch_name
|
text: item.branch_name
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (branch_id == item.id) {
|
||||||
|
option.attr('selected', true);
|
||||||
|
}
|
||||||
|
|
||||||
$('#client_branch_id').append(option);
|
$('#client_branch_id').append(option);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1225,24 +1240,39 @@ $(document).ready(function(){
|
|||||||
|
|
||||||
$('#policy_holder_name').val(client_name);
|
$('#policy_holder_name').val(client_name);
|
||||||
|
|
||||||
|
let status = $('#policy_status').val();
|
||||||
|
|
||||||
if(client_id == 'add_client') {
|
if(client_id == 'add_client') {
|
||||||
|
|
||||||
if($('#client_type').val()){
|
// if($('#client_type').val()){
|
||||||
$('#client_id').val('').change();
|
// $('#client_id').val('').change();
|
||||||
|
|
||||||
if($('#client_type').val() == 2){
|
// if($('#client_type').val() == 2){
|
||||||
$('#short_name').closest('.form-group').hide();
|
// $('#short_name').closest('.form-group').hide();
|
||||||
$('#short_name').removeAttr('required');
|
// $('#short_name').removeAttr('required');
|
||||||
} else {
|
// } else {
|
||||||
$('#short_name').closest('.form-group').show();
|
// $('#short_name').closest('.form-group').show();
|
||||||
$('#short_name').attr('required', 'required');
|
// $('#short_name').attr('required', 'required');
|
||||||
}
|
// }
|
||||||
|
|
||||||
var myModal = new bootstrap.Modal(document.getElementById('upload_enrollment_model'));
|
// var myModal = new bootstrap.Modal(document.getElementById('upload_enrollment_model'));
|
||||||
myModal.show();
|
// myModal.show();
|
||||||
}else{
|
// }else{
|
||||||
$('#client_id').val('').change();
|
// $('#client_id').val('').change();
|
||||||
toastr.warning('Please select the client type', 'WARNING')
|
// toastr.warning('Please select the client type', 'WARNING')
|
||||||
|
// }
|
||||||
|
appendClientForm();
|
||||||
|
|
||||||
|
$(this).val('').select2();
|
||||||
|
$('#pre_sales_row').hide();
|
||||||
|
$('#sales_row').hide();
|
||||||
|
$('#submitButton').hide();
|
||||||
|
|
||||||
|
}else{
|
||||||
|
$('#pre_sales_row').show();
|
||||||
|
$('#submitButton').show();
|
||||||
|
if(status == "completed"){
|
||||||
|
$('#sales_row').show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -224,7 +224,7 @@ table.dataTable td.wrap {
|
|||||||
|
|
||||||
<!-- // enga 5-"head" and 1-"admin" assign pannvaga dropdown-data la varakudhathu. but dropdown display aganum
|
<!-- // enga 5-"head" and 1-"admin" assign pannvaga dropdown-data la varakudhathu. but dropdown display aganum
|
||||||
// 2,3,4 dropdown data'va varannum but dropdown hide pannanum -->
|
// 2,3,4 dropdown data'va varannum but dropdown hide pannanum -->
|
||||||
<?php if (in_array(get_role_id(), [1,5])): ?>
|
<?php if (in_array(get_role_id(), [1,2,5])): ?>
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label for="assign_to">Assign To</label>
|
<label for="assign_to">Assign To</label>
|
||||||
<select class="form-control" id="assign_to" name="assign_to">
|
<select class="form-control" id="assign_to" name="assign_to">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user