FEAT_MASTERCONTROLLER_INSURER_TPA_POLICY_AND_KYC : AADHAVAN

This commit is contained in:
aadhavan valli 2024-02-23 09:51:42 +05:30
parent 47b829183b
commit 8692270ab6
25 changed files with 4070 additions and 131 deletions

View File

@ -66,3 +66,79 @@ $routes->group("/util", ["filter" => "authMVC"], function($routes){
$routes->get("clients-with-policies", "EmployeeController::getClientWithPolicies");
$routes->get("police-by-insurer/(:any)", "ClientController::getPolicesByInsurerId/$1");
});
$routes->group("/master", ["filter" => "authMVC"], function($routes){
$routes->group("insurer", ["filter" => "authMVC"], function($routes){
$routes->get("list", "MasterController::insurerList");
$routes->get("create", "MasterController::insurerOnboarding");
$routes->post("createpost", "MasterController::createInsurerGeneralInfo");
$routes->post("edit", "MasterController::editInsurerGeneralInfo");
$routes->get("list/(:any)", "MasterController::editInsurerOnboarding/$1");
$routes->group("branch", ["filter" => "authMVC"], function($routes){
$routes->post("create", "MasterController::createInsurerBranch");
$routes->post("edit", "MasterController::editInsurerBranch");
$routes->get("editget/(:any)", "MasterController::editInsurerGet/$1");
$routes->get("list/(:any)", "MasterController::insurerBranchList/$1");
});
});
$routes->group("tpa", ["filter" => "authMVC"], function($routes){
$routes->get("list", "MasterController::tpaList");
$routes->get("create", "MasterController::tpaOnboarding");
$routes->post("createpost", "MasterController::createTPAGeneralInfo");
$routes->post("edit", "MasterController::editTPAGeneralInfo");
$routes->get("list/(:any)", "MasterController::editTPAOnboarding/$1");
$routes->group("branch", ["filter" => "authMVC"], function($routes){
$routes->post("create", "MasterController::createTPABranch");
$routes->get("editget/(:any)", "MasterController::editTPAGet/$1");
$routes->post("edit", "MasterController::editTPABranch");
$routes->get("list/(:any)", "MasterController::tpaBranchList/$1");
});
});
$routes->group("kyc", ["filter" => "authMVC"], function($routes){
$routes->get("list", "MasterController::kycList");
$routes->get("create", "MasterController::kycOnboarding");
$routes->post("createpost", "MasterController::createKYCInfo");
$routes->post("edit", "MasterController::editKYCInfo");
$routes->get("list/(:any)", "MasterController::editKYCOnboarding/$1");
$routes->get("delete/(:any)", "MasterController::deleteClientKycDocs/$1");
$routes->group("kycdocs", ["filter" => "authMVC"], function($routes){
$routes->post("createpost", "MasterController::createKycDocs");
$routes->get("editget/(:any)", "MasterController::editKYCGet/$1");
$routes->post("edit", "MasterController::editKYCDocs");
$routes->get("list", "MasterController::tpaBranchList");
$routes->get("list/(:any)", "MasterController::kycDocsList/$1");
});
});
$routes->group("policy", ["filter" => "authMVC"], function($routes){
$routes->get("list", "MasterController::policyTypeList");
$routes->get("create", "MasterController::policyTypeOnboarding");
$routes->post("createpost", "MasterController::createPolicyType");
$routes->post("edit", "MasterController::editPolicyType");
$routes->get("list/(:any)", "MasterController::editPolicyTypeOnboarding/$1");
$routes->group("policies", ["filter" => "authMVC"], function($routes){
$routes->post("createpost", "MasterController::createPolicies");
$routes->get("editget/(:any)", "MasterController::editPoliciesGet/$1");
$routes->post("edit", "MasterController::editPolicies");
$routes->get("list", "MasterController::tpaBranchList");
$routes->get("list/(:any)", "MasterController::policesList/$1");
});
});
});

View File

@ -0,0 +1,877 @@
<?php
namespace App\Controllers;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use CodeIgniter\API\ResponseTrait;
use App\Models\UserModel;
use App\Models\ClientModel;
use App\Models\ClientBranchModel;
use App\Models\ClientKYCDocsModel;
use App\Models\ClientPolicyModel;
use App\Models\ClientRMModel;
use App\Models\InsurerBranchModel;
use App\Models\InsurerModel;
use App\Models\KYCDocsModel;
use App\Models\KYCEntityTypeModel;
use App\Models\LevelContactModel;
use App\Models\PolicesModel;
use App\Models\TPABranchModel;
use App\Models\TPAModel;
use App\Models\StateModel;
use App\Models\PolicyTypeModel;
class MasterController extends AdminController
{
use ResponseTrait;
protected $myLogger;
protected $insurerModel;
protected $userModel;
protected $insurerBranchModel;
protected $insurerKYCDocsModel;
protected $insurerPolicyModel;
protected $insurerRMModel;
protected $kycDocsModel;
protected $kycEntityTypeModel;
protected $levelContactModel;
protected $policesModel;
protected $tpaBranchModel;
protected $tpaModel;
protected $stateModel;
protected $policyTypeModel;
public function __construct()
{
set_session_context('Master');
$this->myLogger = \Config\Services::mylogger();
$this->insurerModel = new ClientModel();
$this->userModel = new UserModel();
// $this->insurerBranchModel = new ClientBranchModel();
$this->insurerKYCDocsModel = new ClientKYCDocsModel();
$this->insurerPolicyModel = new ClientPolicyModel();
$this->insurerRMModel = new ClientRMModel();
$this->insurerBranchModel = new InsurerBranchModel();
$this->insurerModel = new InsurerModel();
$this->kycDocsModel = new KYCDocsModel();
$this->kycEntityTypeModel = new KYCEntityTypeModel();
$this->levelContactModel = new LevelContactModel();
$this->policesModel = new PolicesModel();
$this->tpaBranchModel = new TPABranchModel();
$this->tpaModel = new TPAModel();
$this->stateModel = new StateModel();
$this->policyTypeModel = new PolicyTypeModel();
}
public function insurerList()
{
$this->myLogger->logme('error','Insurer list function called');
$headerData['page_name'] = 'Insurer List';
$data['insurerList'] = $this->insurerModel->findAll();
$data['insurer_rm'] = $this->insurerRMModel->getAllClientRM();
// echo '<pre>';
// print_r($data['insurerList']); die;
echo view('layout/header', $headerData);
echo view('insurer_list', $data);
echo view('layout/footer');
// $this->loadLayout('insurer_onboarding', $data);
}
public function editInsurerOnboarding($id = null)
{
$this->myLogger->logme('error','Edit Insurer Onboarding function called');
$headerData['page_name'] = 'Edit Insurer Onboarding';
$types = array(
(object) array('id' => 'pvt', 'name' => 'PVT'),
(object) array('id' => 'psu', 'name' => 'PSU')
);
$editData['types'] = $types;
$editData['RM'] = $this->userModel->findAll();
$editData['tpa'] = $this->tpaBranchModel ->getTpaBranchesWithTpaNames();
$editData['state'] = $this->stateModel->getAllStates();
$editData['insurer'] = $this->insurerBranchModel ->getInsurerBranchesWithInsurerNames();
$editData['insurer'] = $this->insurerModel->where(['id' => $id, 'is_active' => 1])->first();
$editData['insuer_branch'] = $this->insurerBranchModel->where(['insurer_id' => $id, 'is_active' => 1])->findAll();
// echo "<pre>";
// print_r($editData); die;
echo view('layout/header', $headerData);
echo view('insurer_onboarding', $editData);
echo view('layout/footer');
}
public function insurerOnboarding()
{
$this->myLogger->logme('error','Insurer Onboarding function called');
$headerData['page_name'] = 'Insurer Onboarding';
$types = array(
(object) array('id' => 'pvt', 'name' => 'PVT'),
(object) array('id' => 'psu', 'name' => 'PSU')
);
$data['types'] = $types;
// print_r($data['types']);die();
$data['entity'] = $this->kycEntityTypeModel->findAll();
$data['kyc_docs'] = $this->kycDocsModel->findAll();
$data['police'] = $this->policesModel->findAll();
$data['insurer'] = $this->insurerBranchModel ->getInsurerBranchesWithInsurerNames();
$data['tpa'] = $this->tpaBranchModel ->getTpaBranchesWithTpaNames();
$data['state'] = $this->stateModel->getAllStates();
$data['RM'] = $this->userModel->findAll();
// echo "<pre>";
// print_r($data); die;
echo view('layout/header', $headerData);
echo view('insurer_onboarding', $data);
echo view('layout/footer');
}
public function createInsurerGeneralInfo()
{
$this->myLogger->logme('error','Insurer general info function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->insurerModel->insert($data);
if($insert){
$insurer_data = $this->insurerModel->where(['id' => $insert, 'is_active' => 1])->first();
echo json_encode(array("status" => true , 'data' => $insurer_data));
}else{
echo json_encode(array("status" => false));
}
}
public function createInsurerBranch()
{
$this->myLogger->logme('error','Client branch CREATE function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->insurerBranchModel->insert($data);
if($insert){
for ($i = 0; $i < count($this->request->getPost('name')); $i++) {
// Prepare data to insert
$data = [
'contact_type' => 'insurer',
'ref_id' => $insert,
'created_by' => get_session_userid(),
'name' => $this->request->getPost('name')[$i],
'email' => $this->request->getPost('email')[$i],
'mobile' => $this->request->getPost('mobile')[$i],
'designation' => $this->request->getPost('designation')[$i]
];
$contacts = $this->levelContactModel->insert($data);
}
}
if($insert){
$branchData = $this->insurerBranchModel->where('insurer_id', $this->request->getPost('insurer_id'))->findAll();
echo json_encode(array("status" => true , 'data' => $branchData));
}else{
echo json_encode(array("status" => false));
}
}
public function insurerBranchList($id = null)
{
$this->myLogger->logme('error','Edit Insurer Onboarding function called');
$editData['insuer_branch'] = $this->insurerBranchModel->where(['insurer_id' => $id, 'is_active' => 1])->findAll();
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editInsurerGeneralInfo()
{
$this->myLogger->logme('error','edit Insurer general info function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$data['updated_by'] = get_session_userid();
$update = $this->insurerModel->update($id,$data);
if($update){
echo json_encode(array("status" => true , 'data' => $data));
}else{
echo json_encode(array("status" => false));
}
}
public function editInsurerGet($id = null)
{
$this->myLogger->logme('error','Edit TPA Onboarding function called');
$editData['insurerbranch'] = $this->insurerBranchModel->where(['id' => $id, 'is_active' => 1])->first();
$editData['levelcontact'] = $this->levelContactModel->where(['ref_id' => $id, 'contact_type' => 'insurer' , 'is_active' => 1])->findAll();
// print_r($editData['tpa']);
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editInsurerBranch()
{
$this->myLogger->logme('error','Insurer branch CREATE function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$update = $this->insurerBranchModel->update($id, $data);
// print_r($this->request->getPost('name[]'));
// print_r($this->request->getPost('email[]'));
// print_r($this->request->getPost('mobile[]'));
// print_r($this->request->getPost('designation[]'));
if($update){
$contactsToDelete = $this->levelContactModel->where(['ref_id' => $id,'contact_type' => 'insurer', 'is_active' => 1])->get()->getResult();
foreach ($contactsToDelete as $contact) {
$this->levelContactModel->delete($contact->id);
}
for ($i = 0; $i < count($this->request->getPost('name')); $i++) {
// Prepare data to update
$data = [
'contact_type' => 'insurer',
'ref_id' => $id,
'created_by' => get_session_userid(),
'name' => $this->request->getPost('name')[$i],
'email' => $this->request->getPost('email')[$i],
'mobile' => $this->request->getPost('mobile')[$i],
'designation' => $this->request->getPost('designation')[$i]
];
$contacts = $this->levelContactModel->insert($data);
}
}
if($update){
$branchData = $this->tpaBranchModel->where('tpa_id', $this->request->getPost('tpa_id'))->findAll();
echo json_encode(array("status" => true , 'data' => $branchData));
}else{
echo json_encode(array("status" => false));
}
}
// Insurer Ends
// TPA Start
public function tpaList()
{
$this->myLogger->logme('error','TPA list function called');
$headerData['page_name'] = 'TPA List';
$data['tpaList'] = $this->tpaModel->findAll();
// $data['insurer_rm'] = $this->insurerRMModel->getAllClientRM();
// echo '<pre>';
// print_r($data['insurerList']); die;
echo view('layout/header', $headerData);
echo view('tpa_list', $data);
echo view('layout/footer');
// $this->loadLayout('insurer_onboarding', $data);
}
public function tpaOnboarding()
{
$this->myLogger->logme('error','TPA Onboarding function called');
$headerData['page_name'] = 'TPA Onboarding';
// print_r($data['types']);die();
$data['entity'] = $this->kycEntityTypeModel->findAll();
$data['kyc_docs'] = $this->kycDocsModel->findAll();
$data['police'] = $this->policesModel->findAll();
$data['insurer'] = $this->insurerBranchModel ->getInsurerBranchesWithInsurerNames();
$data['tpa'] = $this->tpaBranchModel ->getTpaBranchesWithTpaNames();
$data['state'] = $this->stateModel->getAllStates();
$data['RM'] = $this->userModel->findAll();
// echo "<pre>";
// print_r($data); die;
echo view('layout/header', $headerData);
echo view('tpa_onboarding', $data);
echo view('layout/footer');
}
public function createTPAGeneralInfo()
{
$this->myLogger->logme('error','TPA general info function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->tpaModel->insert($data);
if($insert){
$tpa_data = $this->tpaModel->where(['id' => $insert, 'is_active' => 1])->first();
echo json_encode(array("status" => true , 'data' => $tpa_data));
}else{
echo json_encode(array("status" => false));
}
}
public function createTPABranch()
{
$this->myLogger->logme('error','TPA branch CREATE function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->tpaBranchModel->insert($data);
if($insert){
for ($i = 0; $i < count($this->request->getPost('name')); $i++) {
// Prepare data to insert
$data = [
'contact_type' => 'tpa',
'ref_id' => $insert,
'created_by' => get_session_userid(),
'name' => $this->request->getPost('name')[$i],
'email' => $this->request->getPost('email')[$i],
'mobile' => $this->request->getPost('mobile')[$i],
'designation' => $this->request->getPost('designation')[$i]
];
$contacts = $this->levelContactModel->insert($data);
}
}
if($insert){
$branchData = $this->tpaBranchModel->where('tpa_id', $this->request->getPost('tpa_id'))->findAll();
echo json_encode(array("status" => true , 'data' => $branchData));
}else{
echo json_encode(array("status" => false));
}
}
public function editTPAOnboarding($id = null)
{
$this->myLogger->logme('error','Edit TPA Onboarding function called');
$headerData['page_name'] = 'Edit TPA Onboarding';
$editData['tpa'] = $this->tpaModel->where(['id' => $id, 'is_active' => 1])->first();
$editData['tpa_branch'] = $this->tpaBranchModel->where(['tpa_id' => $id, 'is_active' => 1])->findAll();
$editData['state'] = $this->stateModel->getAllStates();
// echo "<pre>";
// print_r($editData); die;
echo view('layout/header', $headerData);
echo view('tpa_onboarding', $editData);
echo view('layout/footer');
}
public function editTPAGeneralInfo()
{
$this->myLogger->logme('error','edit TPA general info function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$data['updated_by'] = get_session_userid();
$update = $this->tpaModel->update($id,$data);
if($update){
echo json_encode(array("status" => true , 'data' => $data));
}else{
echo json_encode(array("status" => false));
}
}
public function editTPAGet($id = null)
{
$this->myLogger->logme('error','Edit TPA Onboarding function called');
$editData['tpabranch'] = $this->tpaBranchModel->where(['id' => $id, 'is_active' => 1])->first();
$editData['levelcontact'] = $this->levelContactModel->where(['ref_id' => $id, 'contact_type' => 'tpa' , 'is_active' => 1])->findAll();
// print_r($editData['tpa']);
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editTPABranch()
{
$this->myLogger->logme('error','TPA branch CREATE function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$update = $this->tpaBranchModel->update($id, $data);
// print_r($this->request->getPost('name[]'));
// print_r($this->request->getPost('email[]'));
// print_r($this->request->getPost('mobile[]'));
// print_r($this->request->getPost('designation[]'));
if($update){
$contactsToDelete = $this->levelContactModel->where(['ref_id' => $id,'contact_type' => 'tpa', 'is_active' => 1])->get()->getResult();
foreach ($contactsToDelete as $contact) {
$this->levelContactModel->delete($contact->id);
}
for ($i = 0; $i < count($this->request->getPost('name')); $i++) {
// Prepare data to update
$data = [
'contact_type' => 'tpa',
'ref_id' => $id,
'created_by' => get_session_userid(),
'name' => $this->request->getPost('name')[$i],
'email' => $this->request->getPost('email')[$i],
'mobile' => $this->request->getPost('mobile')[$i],
'designation' => $this->request->getPost('designation')[$i]
];
$contacts = $this->levelContactModel->insert($data);
}
}
if($update){
$branchData = $this->tpaBranchModel->where('tpa_id', $this->request->getPost('tpa_id'))->findAll();
echo json_encode(array("status" => true , 'data' => $branchData));
}else{
echo json_encode(array("status" => false));
}
}
public function tpaBranchList($id = null)
{
$this->myLogger->logme('error','TPA List function called');
$editData['tpa_branch'] = $this->tpaBranchModel->where(['tpa_id' => $id, 'is_active' => 1])->findAll();
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
//Ends TPA Models
//Start KYC
public function kycList()
{
$this->myLogger->logme('error','KYC list function called');
$headerData['page_name'] = 'KYC List';
$data['kycList'] = $this->kycEntityTypeModel->findAll();
// $data['insurer_rm'] = $this->insurerRMModel->getAllClientRM();
// echo '<pre>';
// print_r($data['insurerList']); die;
echo view('layout/header', $headerData);
echo view('kyc_list', $data);
echo view('layout/footer');
// $this->loadLayout('insurer_onboarding', $data);
}
public function kycOnboarding()
{
$this->myLogger->logme('error','KYC Onboarding function called');
$headerData['page_name'] = 'KYC Onboarding';
// print_r($data['types']);die();
$data['entity'] = $this->kycEntityTypeModel->findAll();
$data['kyc_docs'] = $this->kycDocsModel->findAll();
$data['police'] = $this->policesModel->findAll();
$data['insurer'] = $this->insurerBranchModel ->getInsurerBranchesWithInsurerNames();
$data['tpa'] = $this->tpaBranchModel ->getTpaBranchesWithTpaNames();
$data['state'] = $this->stateModel->getAllStates();
$data['RM'] = $this->userModel->findAll();
// echo "<pre>";
// print_r($data); die;
echo view('layout/header', $headerData);
echo view('kyc_onboarding', $data);
echo view('layout/footer');
}
public function createKYCInfo()
{
$this->myLogger->logme('error','KYC Entity Type general info function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->kycEntityTypeModel->insert($data);
if($insert){
$kyc_data = $this->kycEntityTypeModel->where(['id' => $insert, 'is_active' => 1])->first();
echo json_encode(array("status" => true , 'data' => $kyc_data));
}else{
echo json_encode(array("status" => false));
}
}
public function createKycDocs()
{
$this->myLogger->logme('error','Kyc Docs CREATE function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->kycDocsModel->insert($data);
if($insert){
$kycDocsData = $this->kycDocsModel->where('kyc_type_id', $this->request->getPost('kyc_type_id'))->findAll();
echo json_encode(array("status" => true , 'data' => $kycDocsData));
}else{
echo json_encode(array("status" => false));
}
}
public function editKYCOnboarding($id = null)
{
$this->myLogger->logme('error','Edit KYC Onboarding function called');
$headerData['page_name'] = 'Edit KYC Onboarding';
$editData['kyc'] = $this->kycEntityTypeModel->where(['id' => $id, 'is_active' => 1])->first();
$editData['kyc_docs'] = $this->kycDocsModel->where(['kyc_type_id' => $id, 'is_active' => 1])->findAll();
// echo "<pre>";
// print_r($editData); die;
echo view('layout/header', $headerData);
echo view('kyc_onboarding', $editData);
echo view('layout/footer');
}
public function kycDocsList($id = null)
{
$this->myLogger->logme('error','Edit KYC Docs Onboarding function called');
$editData['kyc_docs'] = $this->kycDocsModel->where(['kyc_type_id' => $id, 'is_active' => 1])->findAll();
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editKYCInfo()
{
$this->myLogger->logme('error','edit KYC general info function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$data['updated_by'] = get_session_userid();
$update = $this->kycEntityTypeModel->update($id,$data);
if($update){
echo json_encode(array("status" => true , 'data' => $data));
}else{
echo json_encode(array("status" => false));
}
}
public function editKYCGet($id = null)
{
$this->myLogger->logme('error','Edit KYC Onboarding function called');
$editData['policies'] = $this->kycDocsModel->where(['id' => $id, 'is_active' => 1])->first();
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editKYCDocs()
{
$this->myLogger->logme('error','edit KYC Docs function called');
$id = $this->request->getPost('PrimaryKey');
$data['file_name'] = $this->request->getPost('file_name');
$data['updated_by'] = get_session_userid();
$update = $this->kycDocsModel->update($id,$data);
if($update){
echo json_encode(array("status" => true , 'data' => $data));
}else{
echo json_encode(array("status" => false));
}
}
//Ends KYC
//Start Policy
public function policyTypeList()
{
$this->myLogger->logme('error','Policy Type list function called');
$headerData['page_name'] = 'Policy Type List';
$data['policyList'] = $this->policyTypeModel->findAll();
// $data['insurer_rm'] = $this->insurerRMModel->getAllClientRM();
// echo '<pre>';
// print_r($data['insurerList']); die;
echo view('layout/header', $headerData);
echo view('policy_type_list', $data);
echo view('layout/footer');
// $this->loadLayout('insurer_onboarding', $data);
}
public function policyTypeOnboarding()
{
$this->myLogger->logme('error','Policy Type Onboarding function called');
$headerData['page_name'] = 'Policy Type Onboarding';
// print_r($data['types']);die();
$data['entity'] = $this->kycEntityTypeModel->findAll();
$data['kyc_docs'] = $this->kycDocsModel->findAll();
$data['police'] = $this->policesModel->findAll();
// $data['insurer'] = $this->insurerBranchModel ->getInsurerBranchesWithInsurerNames();
$data['tpa'] = $this->tpaBranchModel ->getTpaBranchesWithTpaNames();
$data['state'] = $this->stateModel->getAllStates();
$data['RM'] = $this->userModel->findAll();
$data['policy_type'] = $this->policyTypeModel->findAll();
$data['insurer'] = $this->insurerModel ->findAll();
// echo "<pre>";
echo view('layout/header', $headerData);
echo view('policy_type_onboarding', $data);
echo view('layout/footer');
}
public function createPolicies()
{
$this->myLogger->logme('error','Policies CREATE function called');
$data = $this->request->getPost();
// print_r($data);
// die();
$data['created_by'] = get_session_userid();
$insert = $this->policesModel->insert($data);
if($insert){
$policiesData = $this->policesModel->where('policy_type_id', $this->request->getPost('policy_type_id'))->findAll();
echo json_encode(array("status" => true , 'data' => $policiesData));
}else{
echo json_encode(array("status" => false));
}
}
public function createPolicyType()
{
$this->myLogger->logme('error','Policy Type CREATE function called');
$data = $this->request->getPost();
$data['created_by'] = get_session_userid();
$insert = $this->policyTypeModel->insert($data);
if($insert){
$policyTypeData = $this->policyTypeModel->where('id', $insert)->first();
echo json_encode(array("status" => true , 'data' => $policyTypeData));
}else{
echo json_encode(array("status" => false));
}
}
public function editPolicyTypeOnboarding($id = null)
{
$this->myLogger->logme('error','Edit KYC Onboarding function called');
$headerData['page_name'] = 'Edit KYC Onboarding';
$editData['policytype'] = $this->policyTypeModel->where(['id' => $id, 'is_active' => 1])->first();
$editData['policies'] = $this->policesModel->where(['policy_type_id' => $id, 'is_active' => 1])->findAll();
$editData['insurer'] = $this->insurerModel-> findAll();
echo view('layout/header', $headerData);
echo view('policy_type_onboarding', $editData);
echo view('layout/footer');
}
public function editPolicyType()
{
$this->myLogger->logme('error','edit Policy general info function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$data['updated_by'] = get_session_userid();
$update = $this->policyTypeModel->update($id,$data);
if($update){
echo json_encode(array("status" => true , 'data' => $data));
}else{
echo json_encode(array("status" => false));
}
}
public function policesList($id = null)
{
$this->myLogger->logme('error','Edit Policies Onboarding function called');
// $editData['policies'] = $this->policesModel->where(['policy_type_id' => $id, 'is_active' => 1])->findAll();
$policies = $this->policesModel->where(['policy_type_id' => $id, 'is_active' => 1])->findAll();
foreach ($policies as $policy) {
// Retrieve the insurer information
$insurer = $this->insurerModel->find($policy['insurer_id']);
// Add the insurer information to the editData array
if ($insurer) {
$editData['policies'][$policy['id']] = [
'policy' => $policy,
'insurer' => $insurer
];
}
}
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editPoliciesGet($id = null)
{
$this->myLogger->logme('error','Edit Policies Onboarding function called');
$editData['policies'] = $this->policesModel->where(['id' => $id, 'is_active' => 1])->first();
// Return JSON response
header('Content-Type: application/json');
echo json_encode($editData);
exit();
}
public function editPolicies()
{
$this->myLogger->logme('error','edit Policy general info function called');
$id = $this->request->getPost('PrimaryKey');
$data = $this->request->getPost();
$data['updated_by'] = get_session_userid();
$update = $this->policesModel->update($id,$data);
if($update){
echo json_encode(array("status" => true , 'data' => $data));
}else{
echo json_encode(array("status" => false));
}
}
}

View File

@ -10,10 +10,24 @@ class InsurerModel extends Model
protected $primaryKey = 'id';
protected $allowedFields = [
"id",
"type",
"name",
"tpa_id",
"short_name",
"created_by",
"updated_by",
"is_active",
];
public function getCreatedByUserName(){
return $this->db->table('insurers')
->select('insurers.*')
// ->select('user_profiles.first_name as user_name')
// ->join('user_profiles', 'user_profiles.id = clients.created_by')
->get()
->getResult();
}
}

View File

@ -11,6 +11,7 @@ class PolicesModel extends Model
protected $allowedFields = [
"id",
"insurer_id",
"policy_type_id",
"name",
"created_by",
"updated_by",

View File

@ -0,0 +1,21 @@
<?php
namespace App\Models;
use CodeIgniter\Model;
class PolicyTypeModel extends Model
{
protected $table = 'policy_type';
protected $primaryKey = 'id';
protected $allowedFields = [
"id",
"policy_type",
"bap",
"allocg",
"alloci",
"created_by",
"updated_by",
"is_active",
];
}

View File

@ -11,6 +11,7 @@ class TPAModel extends Model
protected $allowedFields = [
"id",
"name",
"short_name",
"created_by",
"updated_by",
"is_active",

View File

@ -1,9 +1,7 @@
<div class="tab-pane fade" id="branch-tab">
<div class="row float-right" style="padding-bottom: 10px;">
<div class="col-6">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light"><i class="fa fa-plus-square" aria-hidden="true"></i></button>
</div>
<div class="row float-right" style="padding-bottom: 10px;position: relative;right: 13px;">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light btn-sm"><span class="fa fa-plus-square" aria-hidden="true" style="padding: 5px 10px;"></span>Add Branch</button>
</div>
<div class="table-responsive" id="branch_table" >
@ -24,10 +22,8 @@
<div class="row" id="add_branch">
<div class="col-12">
<div class="card-body">
<div class="row float-right" style="position: relative; bottom: 20px;">
<div class="col-6">
<button type="button" class="btn btn-primary waves-effect waves-light btnBack"><i class="fa fa-list" aria-hidden="true"></i></button>
</div>
<div class="row float-right" style="position: relative; bottom: 20px; right: 13px;">
<button type="button" class="btn btn-primary waves-effect waves-light btn-sm btnBack"><span class="fa fa-list" aria-hidden="true" style="padding: 5px 10px;"></span>Back To List</button>
</div>
<hr>
@ -40,10 +36,8 @@
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-6">
<label for="branch_name">Branch Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="branch_name"
placeholder="Enter Branch Name" name="branch_name" required>
<label for="branch_name">Branch Name<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="branch_name" placeholder="Enter Branch Name" name="branch_name" required>
</div>
<div class="form-group col-md-6">
<label for="branch_code">Branch Code<span
@ -83,91 +77,30 @@
<div class="form-row">
<div class="form-group col-md-6">
<label for="first_name">Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="name0"
placeholder="Enter Contact Name" name="name[]" >
<label for="first_name">Name<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Name" name="name[]" id="name" required>
</div>
<div class="form-group col-md-6">
<label for="last_name">Email<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="email0"
placeholder="Enter Contact Email" name="email[]" >
<label for="last_name">Email<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Email" name="email[]" id="email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="mobile">Mobile<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="mobile0"
placeholder="Enter Contact Mobile" name="mobile[]" >
<label for="mobile">Mobile<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="mobile" required>
</div>
<div class="form-group col-md-6">
<label for="designation">Designation<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="designation0"
placeholder="Enter Designation Name" name="designation[]" >
<label for="designation">Designation<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Designation Name" name="designation[]" id="designation" required>
</div>
</div>
<div class="form-group" style="display: flex;">
<button style="margin-right: 10px;" type="button" class="btn btn-primary btn-sm ac" onclick="appendContactHtml()" id="add">Add Contact</button>
<button type="button" class="btn btn-danger btn-sm" onclick="removeContact(this)" id="${uniqueId}_remove">Remove</button>
</div>
<br>
<h6 class="header-title">Contact 2</h6>
<br>
<div class="form-row">
<div class="form-group col-md-6">
<label for="name">Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="name1"
placeholder="Enter Contact Name" name="name[]" >
</div>
<div class="form-group col-md-6">
<label for="email">Email</label>
<input type="text" class="form-control" id="email1"
placeholder="Enter Contact Email" name="email[]" >
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="mobile">Mobile</label>
<input type="text" class="form-control" id="mobile1"
placeholder="Enter Contact Mobile" name="mobile[]" >
</div>
<div class="form-group col-md-6">
<label for="designation">Designation</label>
<input type="text" class="form-control" id="designation1"
placeholder="Enter Designation Name" name="designation[]">
</div>
</div>
<br>
<h6 class="header-title">Contact 3</h6>
<br>
<div class="form-row">
<div class="form-group col-md-6">
<label for="name">Name</label>
<input type="text" class="form-control" id="name2"
placeholder="Enter Contact Name" name="name[]" >
</div>
<div class="form-group col-md-6">
<label for="email">Email</label>
<input type="text" class="form-control" id="email2"
placeholder="Enter Contact Email" name="email[]" >
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="mobile">Mobile</label>
<input type="text" class="form-control" id="mobile2"
placeholder="Enter Contact Mobile" name="mobile[]" >
</div>
<div class="form-group col-md-6">
<label for="designation">Designation</label>
<input type="text" class="form-control" id="designation2"
placeholder="Enter Designation Name" name="designation[]" >
</div>
</div>
<div id="container"></div>
</div>
<div class="form-group text-right m-b-0">
@ -185,16 +118,16 @@
<script>
var branch_form_action = '';
var contactCount = 1;
$(document).ready(function () {
var branch_PrimaryKey = $('#client_id_branch').val();
var branch_form_action = '';
var branch_PrimaryKey = $('#client_id_branch').val();
var branch_PrimaryKey_2 = $('#branch_PrimaryKey').val();
$('#add_branch').hide();
$('.btnBack').hide();
$('#btnBranchAdd').click(function(){
@ -210,21 +143,27 @@ $(document).ready(function () {
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#branch_form')[0].reset();
$('.ac').css('display', 'block');
contactCount = 1
$('#name0').val('');
$('#email0').val('');
$('#mobile0').val('');
$('#designation0').val('');
$('#name1').val('');
$('#email1').val('');
$('#mobile1').val('');
$('#designation1').val('');
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
for (var i = 0; i < buttonIds.length; i++) {
var firstElement = buttonIds[i].split('_')[0];
console.log(firstElement);
// Find the element by its ID
var elementToRemove = document.getElementById(firstElement);
console.log(elementToRemove);
if (elementToRemove) {
console.log(elementToRemove);
elementToRemove.parentNode.removeChild(elementToRemove);
}
localStorage.removeItem('buttonIds')
}
$('#name2').val('');
$('#email2').val('');
$('#mobile2').val('');
$('#designation2').val('');
})
$('.btnBack').click(function(){
@ -239,21 +178,23 @@ $(document).ready(function () {
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name0').val('');
$('#email0').val('');
$('#mobile0').val('');
$('#designation0').val('');
$('#branch_form')[0].reset();
$('.ac').css('display', 'block');
$('#name1').val('');
$('#email1').val('');
$('#mobile1').val('');
$('#designation1').val('');
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
for (var i = 0; i < buttonIds.length; i++) {
var firstElement = buttonIds[i].split('_')[0];
console.log(firstElement);
$('#name2').val('');
$('#email2').val('');
$('#mobile2').val('');
$('#designation2').val('');
// Find the element by its ID
var elementToRemove = document.getElementById(firstElement);
console.log(elementToRemove);
if (elementToRemove) {
console.log(elementToRemove);
elementToRemove.parentNode.removeChild(elementToRemove);
}
}
})
@ -267,7 +208,7 @@ $(document).ready(function () {
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
@ -278,8 +219,15 @@ $(document).ready(function () {
$("#branch_form").submit(function(event) {
event.preventDefault();
// Perform validation
var isValid = true; // Assuming you have a function for form validation
if (branch_PrimaryKey === '' || branch_PrimaryKey_2 === '') {
toastr.error('Client is required', 'Error');
$('#insurer').val('');
$('#tpa').val('');
$('#policy').html('<option value="" selected>Select Policy</option>');
return;
}
var isValid = validateForm();
if (isValid) {
@ -294,6 +242,8 @@ $(document).ready(function () {
contentType: false,
success: function(res) {
console.log(res);
var message = (branch_PrimaryKey === '') ? 'Client General Info Created successfully' : 'Client General Info Updated successfully';
toastr.success(message, 'Success');
$('#branch_list tr').remove();
var branchTableInsert = ''
$.each(res.data, function(index, item) {
@ -301,7 +251,7 @@ $(document).ready(function () {
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
@ -318,8 +268,13 @@ $(document).ready(function () {
});
}
});
});
$('body').on('click', '.btnBranchEdit', function () {
console.log(branch_form_action);
var branch_id = $(this).attr('data-id');
branch_form_action = '<?= base_url("client/branch/edit"); ?>';
$.ajax({
@ -339,13 +294,16 @@ $(document).ready(function () {
$('#district').val(res.data.district);
$('#branch_city').val(res.data.city);
$('#branch_PrimaryKey').val(res.data.id);
$('#name').val(res.contact[0].name);
$('#email').val(res.contact[0].email);
$('#mobile').val(res.contact[0].mobile);
$('#designation').val(res.contact[0].designation);
res.contact.shift();
$.each(res.contact, function(index, contact) {
if (contact !== undefined) {
$('#name' + index).val(contact.name !== undefined ? contact.name : '');
$('#email' + index).val(contact.email !== undefined ? contact.email : '');
$('#mobile' + index).val(contact.mobile !== undefined ? contact.mobile : '');
$('#designation' + index).val(contact.designation !== undefined ? contact.designation : '');
appendContactHtml(contact);
}
});
@ -355,9 +313,133 @@ $(document).ready(function () {
console.error(status, error);
}
});
console.log(branch_form_action);
});
});
// Initialize the contact count
function appendContactHtml(contact = false, reset = false) {
console.log('appendContactHtml function called ')
contactCount++;
var container = document.getElementById('container');
var uniqueId = Date.now().toString();
var html = `
<div id="${uniqueId}">
<hr>
<h6 class="header-title">Contact ${contactCount}</h6>
<br>
<div class="form-row">
<div class="form-group col-md-6">
<label for="${uniqueId}_first_name">Name<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.name : ''}" type="text" class="form-control" placeholder="Enter Contact Name" name="name[]" id="${uniqueId}_name" required>
</div>
<div class="form-group col-md-6">
<label for="${uniqueId}_last_name">Email<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.email : ''}" type="text" class="form-control" placeholder="Enter Contact Email" name="email[]" id="${uniqueId}_email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="${uniqueId}_mobile">Mobile<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.mobile : ''}" type="text" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="${uniqueId}_mobile" required>
</div>
<div class="form-group col-md-6">
<label for="${uniqueId}_designation">Designation<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.designation : ''}" type="text" class="form-control" placeholder="Enter Designation Name" name="designation[]" id="${uniqueId}_designation" required>
</div>
</div>
<div class="form-group" style="display: flex;">
<button style="margin-right: 10px;" type="button" class="btn btn-primary btn-sm ac" onclick="appendContactHtml()" id="${uniqueId}_add">Add Contact</button>
<button type="button" class="btn btn-danger btn-sm" onclick="removeContact(this)" id="${uniqueId}_remove">Remove</button>
</div>
</div>
`;
if(reset == false){
console.log(reset)
container.insertAdjacentHTML('beforeend', html);
storeButtonId(uniqueId + '_add');
if (contactCount >= 3) {
hideStoredAddButtons();
}
}
}
function removeContact(button) {
var uniqueId = button.id.split("_")[0];
var contactSection = document.getElementById(uniqueId);
if (contactSection) {
contactSection.parentNode.removeChild(contactSection);
contactCount --;
if (contactCount < 3) {
var addButton = document.querySelector('.ac');
if (addButton) {
addButton.style.display = 'block';
}
}
}
}
function storeButtonId(id) {
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
buttonIds.push(id);
localStorage.setItem('buttonIds', JSON.stringify(buttonIds));
}
function hideStoredAddButtons() {
var storedIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
storedIds.forEach(function(id) {
var addButton = document.getElementById(id);
var first_addButton = document.querySelector('.ac')
if (addButton) {
addButton.style.display = 'none';
first_addButton.style.display = 'none';
}
});
}
function showNextAddButton() {
var storedIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
var addButtonShown = false;
// Iterate through the stored IDs to find the next "Add" button to show
storedIds.forEach(function(id) {
if (!addButtonShown) {
var addButton = document.getElementById(id);
if (addButton && addButton.style.display === 'none') {
addButton.style.display = 'block';
addButtonShown = true; // Set to true once an "Add" button is shown
}
}
});
}
function validateForm() {
var isValid = true;
$('#branch_form input, #branch_form select').each(function() {
if ($(this).is('input[type="text"]') || $(this).is('select')) {
if ($.trim($(this).val()) == '') {
isValid = false;
return false;
}
}
});
return isValid;
}
</script>

View File

@ -0,0 +1,147 @@
<div class="tab-pane fade active show" id="general-q-tab">
<div class="row">
<div class="col-12">
<div class="card-body">
<form role="form" class="parsley-examples" method="post" id="insurer_general_form" enctype="multipart/form-data">
<input type="hidden" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="insurer_General_PrimaryKey" value="<?= isset($insurer['id']) ? $insurer['id'] : '' ?>"/>
<input type="hidden" name="insurer_id" id="insurer_id" />
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-4">
<label for="entity_type_id">Insurer Type <span class="text-danger">*</span></label>
<select class="form-control" id="type" name="type" required>
<option value="">Select Type</option>
<?php foreach ($types as $type): ?>
<option value="<?= $type->id; ?>" <?= isset($insurer['type']) && $insurer['type'] == $type->id ? 'selected' : ''; ?>>
<?= $type->name; ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="insurer_name">Insurer Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="name"
placeholder="Enter Insurer Name" value="<?= isset($insurer['name']) ? $insurer['name'] : '' ?>" name="name" required>
</div>
<div class="form-group col-md-4">
<label for="short_name">Insurer Short Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="short_name"
placeholder="Enter Short Name" value="<?= isset($insurer['short_name']) ? $insurer['short_name'] : '' ?>" name="short_name" required>
</div>
</div>
<hr>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div> <!-- end col-->
</div>
</div>
<!-- end -->
<script>
$(document).ready(function () {
$("#insurer_general_form").submit(function(events) {
events.preventDefault();
// var isValid = validateForm();
var isValid = true;
jQuery.each(events.target, function(index, event) {
if (event.validity.valid) {
}else{
isValid = false;
}
});
var PrimaryKey = $('#insurer_General_PrimaryKey').val();
var form_action = '';
if (isValid) {
if(PrimaryKey === ''){
form_action = '<?= base_url("master/insurer/createpost"); ?>';
}else{
form_action = '<?= base_url("master/insurer/edit"); ?>';
}
var formData = new FormData($('#insurer_general_form')[0]);
var OptionsHTML1 = ''
$.ajax({
data: formData,
url: form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
$('#insurer_id').val(res.data.id);
$('#insurer_id_branch').val(res.data.id);
$('#insurer_branch_contacts_id').click();
var message = "Insurer General Info";
toastr.success(message, 'Success');
// $.toast({
// text: 'Insurer General Info',
// heading: "Submitted Sucessfully",
// position: 'top-right',
// icon: 'success',
// bgColor: !1,
// });
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
function validateForm() {
var isValid = true;
// Perform validation for each field
$('#insurer_general_form input, #insurer_general_form select').each(function() {
// Check for empty text inputs and selects
if ($(this).is('input[type="text"]') || $(this).is('select')) {
if ($.trim($(this).val()) == '') {
alert('Please fill in all fields');
isValid = false;
return false; // Exit the loop early
}
}
// Check for file inputs (assuming image files)
if ($(this).is('input[type="file"]')) {
var fileInput = $(this)[0];
if (fileInput.files.length === 0) {
alert('Please select an image file');
isValid = false;
return false; // Exit the loop early
}
}
});
return isValid;
}
});
</script>

View File

@ -0,0 +1,476 @@
<div class="tab-pane fade" id="branch-tab">
<div class="row float-right" style="padding-bottom: 10px;position: relative;right: 13px;">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light btn-sm"><span class="fa fa-plus-square" aria-hidden="true" style="padding: 5px 10px;"></span>Add Branch</button>
</div>
<div class="table-responsive" id="branch_table" >
<table class="table table-borderless table-nowrap mb-0">
<thead class="thead-light">
<tr>
<th>Branch Name</th>
<th>Branch Code</th>
<th>Action</th>
</tr>
</thead>
<tbody id="insurer_branch_list">
</tbody>
</table>
</div>
<div class="row" id="add_branch">
<div class="col-12">
<div class="card-body">
<div class="row float-right" style="position: relative; bottom: 20px; right: 13px;">
<button type="button" class="btn btn-primary waves-effect waves-light btn-sm btnBack"><span class="fa fa-list" aria-hidden="true" style="padding: 5px 10px;"></span>Back To List</button>
</div>
<hr>
<form role="form" class="parsley-examples" method="post" id="insurer_branch_form"
enctype="multipart/form-data">
<input type="hidden" class="form-control" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="insurer_Branch_PrimaryKey" />
<input type="hidden" name="insurer_id" id="insurer_id_branch" value="<?= isset($insurer['id']) ? $insurer['id'] : '' ?>"/>
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-6">
<label for="branch_name">Branch Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="branch_name"
placeholder="Enter Branch Name" name="branch_name" required>
</div>
<div class="form-group col-md-6">
<label for="branch_code">Branch Code<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="branch_code"
placeholder="Enter Branch Code" name="branch_code" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-4">
<label for="state">State<span
class="text-danger">*</span></label>
<select class="form-control" id="state" name="state" required>
<option value="">Select State</option>
<?php foreach($state as $value) { ?>
<option value="<?= $value['id'] ?>"><?= $value['state'] ?></option>
<?php } ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="district">District<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="district"
placeholder="Enter District" name="district" required>
</div>
<div class="form-group col-md-4">
<label for="city">City</label>
<input type="text" class="form-control" id="branch_city"
placeholder="Enter City" name="city" required>
</div>
</div>
<hr>
<h6 class="header-title">Contact 1</h6>
<br>
<div class="form-row">
<input type="hidden" name="primarykey[]" id="contact_id_1" value=""/>
<div class="form-group col-md-6">
<label for="first_name">Name<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Name" name="name[]" id="name" required>
</div>
<div class="form-group col-md-6">
<label for="last_name">Email<span class="text-danger">*</span></label>
<input value="" type="email" data-parsley-type="email" class="form-control" placeholder="Enter Contact Email" name="email[]" id="email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="mobile">Mobile<span class="text-danger">*</span></label>
<input name="mobile[]" pattern="[0-9]{10}" value="" type="tel" data-parsley-type="number" data-parsley-length="[10,10]" class="form-control" placeholder="Enter Contact Mobile" id="mobile" required>
</div>
<div class="form-group col-md-6">
<label for="designation">Designation<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Designation Name" name="designation[]" id="designation" required>
</div>
</div>
<div class="form-group" style="display: flex;">
<button style="margin-right: 10px;" type="button" class="btn btn-primary btn-sm ac" onclick="appendContactHtml()" id="add">Add Contact</button>
<button type="button" class="btn btn-danger btn-sm" onclick="removeContact(this)" id="${uniqueId}_remove">Remove</button>
</div>
<div id="container"></div>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div>
</div> <!-- end col-->
</div>
<!-- end -->
<script>
var contactCount = 1;
$(document).ready(function () {
var insurer_Branch_PrimaryKey = $('#insurer_id_branch').val();
var insurer_branch_form_action = '';
$('#add_branch').hide();
$('.btnBack').hide();
loadBranchList();
$('#btnBranchAdd').click(function(){
insurer_branch_form_action = '<?= base_url("master/insurer/branch/create"); ?>';
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#branch_name').val('');
$('#branch_code').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name').val('');
$('#email').val('');
$('#mobile').val('');
$('#designation').val('');
contactCount = 1
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
for (var i = 0; i < buttonIds.length; i++) {
var firstElement = buttonIds[i].split('_')[0];
console.log(firstElement);
// Find the element by its ID
var elementToRemove = document.getElementById(firstElement);
console.log(elementToRemove);
if (elementToRemove) {
console.log(elementToRemove);
elementToRemove.parentNode.removeChild(elementToRemove);
}
localStorage.removeItem('buttonIds')
}
})
$('.btnBack').click(function(){
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
$('#branch_name').val('');
$('#branch_code').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name').val('');
$('#email').val('');
$('#mobile').val('');
$('#designation').val('');
})
if(insurer_Branch_PrimaryKey !== ''){
var branchTable = '';
var data = <?= isset($insurer_branch) ? json_encode($insurer_branch) : '[]' ?>;
$.each(data, function(index, item) {
branchTable += `
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
$('#insurer_branch_list').append(branchTable);
}
$("#insurer_branch_form").submit(function(events) {
events.preventDefault();
var isValid = $('#insurer_branch_form').parsley().validate();
if (isValid) {
var formData = new FormData($('#insurer_branch_form')[0]);
$.ajax({
data: formData,
url: insurer_branch_form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
// $('#insurer_branch_list tr').remove();
var insurerBranchTableInsert = ''
$.each(res.data, function(index, item) {
insurerBranchTableInsert += `
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
$('#insurer_branch_list').append(insurerBranchTableInsert);
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
$('body').on('click', '.btnBranchEdit', function () {
$('#container').html("");
contactCount =1;
var branch_id = $(this).attr('data-id');
insurer_branch_form_action = '<?= base_url("master/insurer/branch/edit"); ?>';
$.ajax({
url: '<?php echo base_url('master/insurer/branch/editget/');?>'+branch_id,
type: "GET",
dataType: 'json',
success: function (res) {
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#branch_name').val(res.insurerbranch.branch_name);
$('#branch_code').val(res.insurerbranch.branch_code);
$('#state option[value="' + res.insurerbranch.state + '"]').prop('selected', true);
$('#district').val(res.insurerbranch.district);
$('#branch_city').val(res.insurerbranch.city);
$('#insurer_Branch_PrimaryKey').val(res.insurerbranch.id);
$('#contact_id_1').val(res.levelcontact[0].id);
$('.form-row').find('#name').val(res.levelcontact[0].name);
$('#email').val(res.levelcontact[0].email);
$('#mobile').val(res.levelcontact[0].mobile);
$('#designation').val(res.levelcontact[0].designation);
res.levelcontact.shift();
$.each(res.levelcontact, function(index, contact) {
if (contact !== undefined) {
appendContactHtml(contact);
}
});
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
});
$('body').on('click', '#btnSubmit', function(){
$('#insurer_branch_list').html(" ");
loadBranchList();
})
function loadBranchList()
{
var base_url = '<?= base_url("master/insurer/branch/list/"); ?>';
var insurer_branch_action = base_url + insurer_Branch_PrimaryKey;
if ($('#insurer_id_branch').val() != '') {
$.ajax({
url: insurer_branch_action,
type: 'GET',
success: function(response) {
var branchTable = '';
$.each(response.insuer_branch, function(index, item) {
branchTable += `
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
$('#insurer_branch_list').html(branchTable);
},
error: function(xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
}
});
function appendContactHtml(contact = false, reset = false) {
console.log('appendContactHtml function called ')
contactCount++;
var container = document.getElementById('container');
var uniqueId = Date.now().toString();
var html = `
<div id="${uniqueId}">
<hr>
<h6 class="header-title">Contact ${contactCount}</h6>
<br>
<div class="form-row">
<input type="hidden" name="primarykey[]" id="contact_id_1" value="${contact !== undefined && contact !== false ? contact.id : ''}"/>
<div class="form-group col-md-6">
<label for="${uniqueId}_first_name">Name<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.name : ''}" type="text" class="form-control" placeholder="Enter Contact Name" name="name[]" id="${uniqueId}_name" required>
</div>
<div class="form-group col-md-6">
<label for="${uniqueId}_last_name">Email<span class="text-danger">*</span></label>
<input data-parsley-type="email" value="${contact !== undefined && contact !== false ? contact.email : ''}" type="email" class="form-control" placeholder="Enter Contact Email" name="email[]" id="${uniqueId}_email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="${uniqueId}_mobile">Mobile<span class="text-danger">*</span></label>
<input data-parsley-type="number" data-parsley-length="[10,10]" pattern="[0-9]{10}" value="${contact !== undefined && contact !== false ? contact.mobile : ''}" type="tel" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="${uniqueId}_mobile" required>
</div>
<div class="form-group col-md-6">
<label for="${uniqueId}_designation">Designation<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.designation : ''}" type="text" class="form-control" placeholder="Enter Designation Name" name="designation[]" id="${uniqueId}_designation" required>
</div>
</div>
<div class="form-group" style="display: flex;">
<button style="margin-right: 10px;" type="button" class="btn btn-primary btn-sm ac" onclick="appendContactHtml()" id="${uniqueId}_add">Add Contact</button>
<button type="button" class="btn btn-danger btn-sm" onclick="removeContact(this)" id="${uniqueId}_remove">Remove</button>
</div>
</div>
`;
if(reset == false){
container.insertAdjacentHTML('beforeend', html);
storeButtonId(uniqueId + '_add');
if (contactCount >= 3) {
hideStoredAddButtons();
}
}
}
function removeContact(button) {
var uniqueId = button.id.split("_")[0];
var contactSection = document.getElementById(uniqueId);
if (contactSection) {
contactSection.parentNode.removeChild(contactSection);
contactCount --;
if (contactCount < 3) {
var addButton = document.querySelector('.ac');
if (addButton) {
addButton.style.display = 'block';
}
}
}
}
function storeButtonId(id) {
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
buttonIds.push(id);
localStorage.setItem('buttonIds', JSON.stringify(buttonIds));
}
function hideStoredAddButtons() {
var storedIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
storedIds.forEach(function(id) {
var addButton = document.getElementById(id);
var first_addButton = document.querySelector('.ac')
if (addButton) {
addButton.style.display = 'none';
first_addButton.style.display = 'none';
}
});
}
function showNextAddButton() {
var storedIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
var addButtonShown = false;
// Iterate through the stored IDs to find the next "Add" button to show
storedIds.forEach(function(id) {
if (!addButtonShown) {
var addButton = document.getElementById(id);
if (addButton && addButton.style.display === 'none') {
addButton.style.display = 'block';
addButtonShown = true; // Set to true once an "Add" button is shown
}
}
});
}
function validateForm() {
var isValid = true;
$('#insurer_branch_form input, #insurer_branch_form select').each(function() {
if ($(this).is('input[name="emial[]"]') || $(this).is('input[type="text"]') || $(this).is('select') ) {
if ($.trim($(this).val()) == '') {
isValid = false;
return false;
}
}
});
return isValid;
}
</script>

134
app/Views/insurer_list.php Normal file
View File

@ -0,0 +1,134 @@
<div class="row" id="insurer_list">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="margin-bottom:1rem;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">Insurer List</h4>
</div>
<div class="col-6" style="text-align: right; position: relative;top: 53px;">
<a href="<?= base_url("master/insurer/create"); ?>" type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light" data-toggle="" data-placement="top" title="Add" data-trigger="hover">ADD</a>
</div>
</div>
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0"
id="tickets-table">
<thead class="bg-light">
<tr>
<th class="font-weight-medium">Name</th>
<th class="font-weight-medium">Type</th>
<th class="font-weight-medium">Action</th>
</tr>
</thead>
<tbody>
<?php if(is_array($insurerList)) {foreach($insurerList as $row){ ?>
<tr>
<td><?php echo $row['name']; ?> ( <?php echo $row['short_name']; ?> ) </td>
<td><?php echo $row['type']; ?></td>
<td>
<div class="btn-group dropdown">
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown"aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="<?= base_url("master/insurer/list/"); ?><?= $row['id'];?>"><i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>Edit</a>
<a class="dropdown-item" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete</a>
</div>
</div>
</td>
</tr>
<?php }}?>
</tbody>
</table>
</div>
</div>
</div><!-- end col -->
</div>
<!-- end row -->
<script>
$(document).ready(function(){
$('#tickets-table').DataTable({
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" ,
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'InsurerList',
exportOptions: {
columns: ':not(:last-child)'
}
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
});
})
const btnExport = document.querySelector("#btnExport");
const tableElement = document.querySelector("#tickets-table");
btnExport.addEventListener("click", () => {
const obj = new csvExport(tableElement);
const csvData = obj.exportCsv();
const blob = new Blob([csvData], { type: "text/csv" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "UserList.csv";
a.click();
setTimeout(() => {
URL.revokeObjectURL(url);
}, 500);
});
class csvExport {
constructor(table, header = true) {
this.table = table;
this.rows = Array.from(table.querySelectorAll("tr"));
if (!header && this.rows[0].querySelectorAll("th").length) {
this.rows.shift();
}
}
exportCsv() {
const lines = [];
const ncols = this._longestRow();
for (const row of this.rows) {
let line = "";
for (let i = 0; i < ncols - 1; i++) { // Exclude the last column
if (row.children[i] !== undefined) {
line += csvExport.safeData(row.children[i]);
}
line += i !== ncols - 2 ? "," : ""; // Adjusted for the last column exclusion
}
lines.push(line);
}
return lines.join("\n");
}
_longestRow() {
return this.rows.reduce((length, row) => (row.childElementCount > length ? row.childElementCount : length), 0);
}
static safeData(td) {
let data = td.textContent;
//Replace all double quote to two double quotes
data = data.replace(/"/g, `""`);
//Replace , and \n to double quotes
data = /[",\n"]/.test(data) ? `"${data}"` : data;
return data;
}
}
</script>

View File

@ -0,0 +1,69 @@
<style>
body {
.multiselect-native-select {
position: relative;
/* bottom: 32px; */
select {
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px -1px -1px -3px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
left: 50%;
top: 30px;
}
}
.multiselect-container{
width: 100% !important;
}
.multiselect-selected-text{
float: left !important;
}
}
</style>
<div class="row" id="insurer_add">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">Insurer Onboarding</h4>
</div>
<!-- <div class="col-6" style="text-align: right;">
<a href="<?= base_url("master/insurer/list"); ?>" class="btn btn-primary waves-effect waves-light">Back</a>
</div> -->
</div>
<ul class="nav nav-pills navtab-bg">
<li class="nav-item">
<a href="#general-q-tab" data-toggle="tab" aria-expanded="false"
class="nav-link px-3 py-2 active">
<span class="mr-1"><i class="mdi mdi-contacts"></i></span>
<span class="d-none d-sm-inline-block">General</span>
</a>
</li>
<li class="nav-item">
<a href="#branch-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2" id="insurer_branch_contacts_id">
<span class="mr-1"><i class="mdi mdi-source-branch"></i></span>
<span class="d-none d-sm-inline-block">Branch & Contacts</span>
</a>
</li>
</ul>
<div class="tab-content">
<?php include('insurer_basic_info.php'); ?>
<?php include('insurer_branch.php'); ?>
</div>
</div>
</div>
</div>
</div>

258
app/Views/kyc_docs.php Normal file
View File

@ -0,0 +1,258 @@
<div class="tab-pane fade" id="branch-tab">
<div class="row float-right" style="padding-bottom: 10px;position: relative;right: 13px;">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light btn-sm"><span class="fa fa-plus-square" aria-hidden="true" style="padding: 5px 10px;"></span>Add KYC Docs</button>
</div>
<div class="table-responsive" id="branch_table" >
<table class="table table-borderless table-nowrap mb-0">
<thead class="thead-light">
<tr>
<th>File Name</th>
<th>Action</th>
</tr>
</thead>
<tbody id="kyc_docs_list">
</tbody>
</table>
</div>
<div class="row" id="add_branch">
<div class="col-12">
<div class="card-body">
<div class="row float-right" style="position: relative; bottom: 20px; right: 13px;">
<button type="button" class="btn btn-primary waves-effect waves-light btn-sm btnBack"><span class="fa fa-list" aria-hidden="true" style="padding: 5px 10px;"></span>Back To List</button>
</div>
<hr>
<form role="form" class="parsley-examples" method="post" id="kyc_docs_form"
enctype="multipart/form-data">
<input type="hidden" class="form-control" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="kyc_Docs_PrimaryKey" />
<input type="hidden" name="kyc_type_id" id="kyc_type_id" value="<?= isset($kyc['id']) ? $kyc['id'] : '' ?>"/>
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-6">
<label for="file_name">KYC Docs File Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="file_name"
placeholder="Enter File Name" name="file_name" required>
</div>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div>
</div> <!-- end col-->
</div>
<!-- end -->
<script>
$(document).ready(function () {
var kyc_Docs_PrimaryKey = $('#kyc_General_PrimaryKey').val();
var kyc_docs_form_action = '';
$('#add_branch').hide();
$('.btnBack').hide();
loadKYCDocsList();
$('#btnBranchAdd').click(function(){
kyc_docs_form_action = '<?= base_url("master/kyc/kycdocs/createpost"); ?>';
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#file_name').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name0').val('');
$('#email0').val('');
$('#mobile0').val('');
$('#designation0').val('');
$('#name1').val('');
$('#email1').val('');
$('#mobile1').val('');
$('#designation1').val('');
$('#name2').val('');
$('#email2').val('');
$('#mobile2').val('');
$('#designation2').val('');
})
$('.btnBack').click(function(){
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
$('#file_name').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name0').val('');
$('#email0').val('');
$('#mobile0').val('');
$('#designation0').val('');
$('#name1').val('');
$('#email1').val('');
$('#mobile1').val('');
$('#designation1').val('');
$('#name2').val('');
$('#email2').val('');
$('#mobile2').val('');
$('#designation2').val('');
})
if(kyc_Docs_PrimaryKey !== ''){
var branchTable = '';
var data = <?= isset($insurer_branch) ? json_encode($insurer_branch) : '[]' ?>;
$.each(data, function(index, item) {
branchTable += `
<tr>
<td>${item.file_name}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
$('#insurer_branch_list').append(branchTable);
}
$("#kyc_docs_form").submit(function(events) {
events.preventDefault();
var isValid = $('#kyc_docs_form').parsley().validate();
if (isValid) {
var formData = new FormData($('#kyc_docs_form')[0]);
$.ajax({
data: formData,
url: kyc_docs_form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
$('#insurer_branch_list tr').remove();
var insurerBranchTableInsert = ''
$.each(res.data, function(index, item) {
insurerBranchTableInsert += `
<tr>
<td>${item.file_name}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
$('#insurer_branch_list').append(insurerBranchTableInsert);
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
$('body').on('click', '.btnBranchEdit', function () {
var branch_id = $(this).attr('data-id');
kyc_docs_form_action = '<?= base_url("master/kyc/kycdocs/edit"); ?>';
$.ajax({
url: '<?php echo base_url('master/kyc/kycdocs/editget/');?>'+branch_id,
type: "GET",
dataType: 'json',
success: function (res) {
console.log("right.........");
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#file_name').val(res.policies.file_name);
$('#kyc_Docs_PrimaryKey').val(res.policies.id);
// $('#kyc_docs_list').html(" ");
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
});
$('body').on('click', '#btnSubmit', function() {
$('#kyc_docs_list').html(" ");
setTimeout(function() {
loadKYCDocsList();
}, 100) });
function loadKYCDocsList() {
var base_url = '<?= base_url("master/kyc/kycdocs/list/"); ?>';
var kyc_docs_action = base_url + kyc_Docs_PrimaryKey;
console.log(kyc_docs_action);
if (kyc_Docs_PrimaryKey != '') {
$.ajax({
url: kyc_docs_action,
type: "GET",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
var insurerBranchTableInsert = '';
$.each(res.kyc_docs, function(index, item) {
insurerBranchTableInsert += `
<tr>
<td>${item.file_name}</td>
<td><a class="btnBranchEdit" data-id="${item.id}"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
$('#kyc_docs_list').append(insurerBranchTableInsert);
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
}
});
</script>

View File

@ -0,0 +1,112 @@
<div class="tab-pane fade active show" id="general-q-tab">
<div class="row">
<div class="col-12">
<div class="card-body">
<form role="form" class="parsley-examples" method="post" id="kyc_general_form" enctype="multipart/form-data">
<input type="hidden" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="kyc_General_PrimaryKey" value="<?= isset($kyc['id']) ? $kyc['id'] : '' ?>"/>
<input type="hidden" name="kyc_type_id" id="kyc_type_id" />
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-4">
<label for="kyc_name">KYC Entity Type Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="name"
placeholder="Enter Kyc Entity Type Name" value="<?= isset($kyc['name']) ? $kyc['name'] : '' ?>" name="name" required>
</div>
</div>
<hr>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div> <!-- end col-->
</div>
</div>
<!-- end -->
<script>
$(document).ready(function () {
$("#kyc_general_form").submit(function(events) {
events.preventDefault();
var isValid = $('#kyc_general_form').parsley().validate();
var PrimaryKey = $('#kyc_General_PrimaryKey').val();
var form_action = '';
if (isValid) {
console.log("Primary KEy");
console.log(PrimaryKey);
if(PrimaryKey === ''){
form_action = '<?= base_url("master/kyc/createpost"); ?>';
}else{
form_action = '<?= base_url("master/kyc/edit"); ?>';
}
var formData = new FormData($('#kyc_general_form')[0]);
var OptionsHTML1 = ''
$.ajax({
data: formData,
url: form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
$('#kyc_type_id').val(res.data.PrimaryKey);
$('#kyc_id_docs').val(res.data.PrimaryKey);
$('#kyc_docs_id').click();
var message = "KYC Entity Type General Info";
toastr.success(message, 'Success');
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
function validateForm() {
var isValid = true;
// Perform validation for each field
$('#kyc_general_form input, #kyc_general_form select').each(function() {
// Check for empty text inputs and selects
if ($(this).is('input[type="text"]') || $(this).is('select')) {
if ($.trim($(this).val()) == '') {
alert('Please fill in all fields');
isValid = false;
return false; // Exit the loop early
}
}
// Check for file inputs (assuming image files)
if ($(this).is('input[type="file"]')) {
var fileInput = $(this)[0];
if (fileInput.files.length === 0) {
alert('Please select an image file');
isValid = false;
return false; // Exit the loop early
}
}
});
return isValid;
}
});
</script>

132
app/Views/kyc_list.php Normal file
View File

@ -0,0 +1,132 @@
<div class="row" id="kyc_list">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="margin-bottom:1rem;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">KYC List</h4>
</div>
<div class="col-6" style="text-align: right; position: relative;top: 53px;">
<a href="<?= base_url("master/kyc/create"); ?>" type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light" data-toggle="" data-placement="top" title="Add" data-trigger="hover">ADD</a>
</div>
</div>
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0"
id="tickets-table">
<thead class="bg-light">
<tr>
<th class="font-weight-medium">Name</th>
<th class="font-weight-medium">Action</th>
</tr>
</thead>
<tbody>
<?php if(is_array($kycList)) {foreach($kycList as $row){ ?>
<tr>
<td><?php echo $row['name']; ?> </td>
<td>
<div class="btn-group dropdown">
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown"aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="<?= base_url("master/kyc/list/"); ?><?= $row['id'];?>"><i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>Edit</a>
<a class="dropdown-item" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete</a>
</div>
</div>
</td>
</tr>
<?php }}?>
</tbody>
</table>
</div>
</div>
</div><!-- end col -->
</div>
<!-- end row -->
<script>
$(document).ready(function(){
$('#tickets-table').DataTable({
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" ,
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'KYCList',
exportOptions: {
columns: ':not(:last-child)'
}
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
});
})
const btnExport = document.querySelector("#btnExport");
const tableElement = document.querySelector("#tickets-table");
btnExport.addEventListener("click", () => {
const obj = new csvExport(tableElement);
const csvData = obj.exportCsv();
const blob = new Blob([csvData], { type: "text/csv" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "KYCList.csv";
a.click();
setTimeout(() => {
URL.revokeObjectURL(url);
}, 500);
});
class csvExport {
constructor(table, header = true) {
this.table = table;
this.rows = Array.from(table.querySelectorAll("tr"));
if (!header && this.rows[0].querySelectorAll("th").length) {
this.rows.shift();
}
}
exportCsv() {
const lines = [];
const ncols = this._longestRow();
for (const row of this.rows) {
let line = "";
for (let i = 0; i < ncols - 1; i++) { // Exclude the last column
if (row.children[i] !== undefined) {
line += csvExport.safeData(row.children[i]);
}
line += i !== ncols - 2 ? "," : ""; // Adjusted for the last column exclusion
}
lines.push(line);
}
return lines.join("\n");
}
_longestRow() {
return this.rows.reduce((length, row) => (row.childElementCount > length ? row.childElementCount : length), 0);
}
static safeData(td) {
let data = td.textContent;
//Replace all double quote to two double quotes
data = data.replace(/"/g, `""`);
//Replace , and \n to double quotes
data = /[",\n"]/.test(data) ? `"${data}"` : data;
return data;
}
}
</script>

View File

@ -0,0 +1,69 @@
<style>
body {
.multiselect-native-select {
position: relative;
/* bottom: 32px; */
select {
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px -1px -1px -3px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
left: 50%;
top: 30px;
}
}
.multiselect-container{
width: 100% !important;
}
.multiselect-selected-text{
float: left !important;
}
}
</style>
<div class="row" id="insurer_add">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">KYC Entity Type Onboarding</h4>
</div>
<!-- <div class="col-6" style="text-align: right;">
<a href="<?= base_url("master/kyc/list"); ?>" class="btn btn-primary waves-effect waves-light">Back</a>
</div> -->
</div>
<ul class="nav nav-pills navtab-bg">
<li class="nav-item">
<a href="#general-q-tab" data-toggle="tab" aria-expanded="false"
class="nav-link px-3 py-2 active">
<span class="mr-1"><i class="mdi mdi-contacts"></i></span>
<span class="d-none d-sm-inline-block">General</span>
</a>
</li>
<li class="nav-item">
<a href="#branch-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2" id="kyc_docs_id">
<span class="mr-1"><i class="mdi mdi-source-branch"></i></span>
<span class="d-none d-sm-inline-block">KYC Docs</span>
</a>
</li>
</ul>
<div class="tab-content">
<?php include('kyc_entity_type_basic_info.php'); ?>
<?php include('kyc_docs.php'); ?>
</div>
</div>
</div>
</div>
</div>

View File

@ -512,10 +512,16 @@
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li>
<a href="#">Insurer</a>
<a href="<?= base_url('/master/insurer/list')?>">Insurer</a>
</li>
<li>
<a href="#">TPA</a>
<a href="<?= base_url('/master/tpa/list')?>">TPA</a>
</li>
<li>
<a href="<?= base_url('/master/kyc/list')?>">KYC</a>
</li>
<li>
<a href="<?= base_url('/master/policy/list')?>">Policy</a>
</li>
</ul>
</div>

333
app/Views/policies.php Normal file
View File

@ -0,0 +1,333 @@
<div class="tab-pane fade" id="branch-tab">
<div class="row float-right" style="padding-bottom: 10px;position: relative;right: 13px;">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light btn-sm"><span class="fa fa-plus-square" aria-hidden="true" style="padding: 5px 10px;"></span>Add Policies</button>
</div>
<div class="table-responsive" id="branch_table" >
<table class="table table-borderless table-nowrap mb-0">
<thead class="thead-light">
<tr>
<th>Insurer</th>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody id="policies_list">
</tbody>
</table>
</div>
<div class="row" id="add_branch">
<div class="col-12">
<div class="card-body">
<div class="row float-right" style="position: relative; bottom: 20px; right: 13px;">
<button type="button" class="btn btn-primary waves-effect waves-light btn-sm btnBack"><span class="fa fa-list" aria-hidden="true" style="padding: 5px 10px;"></span>Back To List</button>
</div>
<hr>
<form role="form" class="parsley-examples" method="post" id="tpa_branch_form" enctype="multipart/form-data">
<input type="hidden" class="form-control" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="policy_type_PrimaryKey" />
<input type="hidden" name="policy_type_id" id="policy_type_id" value="<?= isset($policytype['id']) ? $policytype['id'] : '' ?>"/>
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-6">
<label for="insurer_id">Insurer<span class="text-danger">*</span></label>
<select class="form-control" id="insurer_id" name="insurer_id" required>
<option value="0">Select Insurer</option>
<?php if (!empty($insurer)) { foreach ($insurer as $insurer) : ?>
<option value="<?= $insurer['id'] ?>"><?= $insurer['name'] ?></option>
<?php endforeach; } ?>
</select>
</div>
<div class="form-group col-md-6">
<label for="name">Polices Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="name"
placeholder="Enter Name" name="name" required>
</div>
</div>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div>
</div> <!-- end col-->
</div>
<!-- end -->
<script>
$(document).ready(function () {
var policy_type_PrimaryKey = $('#policy_type_id').val();
var tpa_branch_form_action = '';
$('#add_branch').hide();
$('.btnBack').hide();
loadPoliciesList();
// var insurer_branch_action = '<?= base_url("master/insurer/list/"); ?>';
// if ($('#policy_type_id').val() != '') {
// $.ajax({
// url: insurer_branch_action,
// type: 'GET',
// success: function(response) {
// console.log(response);
// var branchTable = '';
// $.each(response.policies, function(index, item) {
// console.log(item);
// branchTable += `
// <tr>
// <td>${item.insurer_id}</td>
// <td>${item.name}</td>
// <td><a class="btnBranchEdit" data-id="${item.id}"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
// </tr>
// `;
// });
// $('#policies_list').append(branchTable);
// },
// error: function(xhr, status, error) {
// console.error(xhr.responseText);
// console.error(status, error);
// }
// });
// }
$('#btnBranchAdd').click(function(){
tpa_branch_form_action = '<?= base_url("master/policy/policies/createpost"); ?>';
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#insurer_id').val('');
$('#name').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name0').val('');
$('#email0').val('');
$('#mobile0').val('');
$('#designation0').val('');
$('#name1').val('');
$('#email1').val('');
$('#mobile1').val('');
$('#designation1').val('');
$('#name2').val('');
$('#email2').val('');
$('#mobile2').val('');
$('#designation2').val('');
})
$('.btnBack').click(function(){
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
$('#insurer_id').val('');
$('#name').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name0').val('');
$('#email0').val('');
$('#mobile0').val('');
$('#designation0').val('');
$('#name1').val('');
$('#email1').val('');
$('#mobile1').val('');
$('#designation1').val('');
$('#name2').val('');
$('#email2').val('');
$('#mobile2').val('');
$('#designation2').val('');
})
if(policy_type_PrimaryKey !== ''){
var branchTable = '';
var data = <?= isset($tpa_branch) ? json_encode($tpa_branch) : '[]' ?>;
$.each(data, function(index, item) {
branchTable += `
<tr>
<td>${item.insurer_id}</td>
<td>${item.name}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
$('#policies_list').append(branchTable);
}
$("#tpa_branch_form").submit(function(events) {
events.preventDefault();
var isValid = $('#tpa_branch_form').parsley().validate();
if (isValid) {
var formData = new FormData($('#tpa_branch_form')[0]);
$.ajax({
data: formData,
url: tpa_branch_form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
// console.log(res);
// $('#policies_list tr').remove();s
var tpaBranchTableInsert = ''
$.each(res.data, function(index, item) {
tpaBranchTableInsert += `
<tr>
<td>${item.insurer_id}</td>
<td>${item.name}</td>
<td><a class="btnBranchEdit" data-id="${item.id}" href="#"><i data-id="${item.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
// $('#policies_list').append(tpaBranchTableInsert);
$('#policies_list').html("");
loadPoliciesList();
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
$('body').on('click', '.btnBranchEdit', function () {
var branch_id = $(this).attr('data-id');
tpa_branch_form_action = '<?= base_url("master/policy/policies/edit"); ?>';
$.ajax({
url: '<?php echo base_url('master/policy/policies/editget/');?>'+branch_id,
type: "GET",
dataType: 'json',
success: function (res) {
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#insurer_id').val(res.policies.insurer_id);
$('#name').val(res.policies.name);
$('#policy_type_PrimaryKey').val(res.policies.id);
// $('#policies_list').html(" ");
$.each(res.contact, function(index, contact) {
if (contact !== undefined) {
$('#name' + index).val(contact.name !== undefined ? contact.name : '');
$('#email' + index).val(contact.email !== undefined ? contact.email : '');
$('#mobile' + index).val(contact.mobile !== undefined ? contact.mobile : '');
$('#designation' + index).val(contact.designation !== undefined ? contact.designation : '');
}
});
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
});
// document.querySelectorAll('.btnBranchEdit').forEach(item => {
// item.addEventListener('click', event => {
// // Prevent the default action of the link
// event.preventDefault();
// // Get the data-id attribute value of the clicked element
// const dataId = event.target.getAttribute('data-id');
// // Use the data-id value as needed
// console.log(dataId);
// });
// });
$('body').on('click', '#btnSubmit', function() {
// $('#policies_list').html("");
// loadPoliciesList();
setTimeout(function() {
}, 1000) });
function loadPoliciesList() {
var base_url = '<?= base_url("master/policy/policies/list/"); ?>';
var insurer_branch_action = base_url + policy_type_PrimaryKey;
if ($('#policy_type_id').val() != '') {
$.ajax({
url: insurer_branch_action,
type: 'GET',
success: function(response) {
var branchTable = '';
$.each(response.policies, function(index, item) {
console.log(item);
branchTable += `
<tr>
<td value=''>${item.insurer.name}</td>
<td>${item.policy.name}</td>
<td><a class="btnBranchEdit" data-id="${item.policy.id}"><i data-id="${item.policy.id}" class="mdi mdi-lead-pencil btnBranchEdit" style="font-size:18px;"></i></a></td>
</tr>
`;
});
$('#policies_list').append(branchTable);
},
error: function(xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
}
});
</script>

View File

@ -0,0 +1,129 @@
<div class="tab-pane fade active show" id="general-q-tab">
<div class="row">
<div class="col-12">
<div class="card-body">
<form role="form" class="parsley-examples" method="post" id="policytype_general_form" enctype="multipart/form-data">
<input type="hidden" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="policytype_General_PrimaryKey" value="<?= isset($policytype['id']) ? $policytype['id'] : '' ?>"/>
<input type="hidden" name="policy_id" id="policy_id" />
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-4">
<label for="kyc_name">Policy Type Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="policy_type"
placeholder="Enter Kyc Entity Type Name" value="<?= isset($policytype['policy_type']) ? $policytype['policy_type'] : '' ?>" name="policy_type" required>
</div>
<div class="form-group col-md-4">
<label for="bap">Bap<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="bap"
placeholder="Enter Bap" value="<?= isset($policytype['bap']) ? $policytype['bap'] : '' ?>" name="bap" required>
</div>
<div class="form-group col-md-4">
<label for="allocg">Allocg<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="allocg"
placeholder="Enter Short Name" value="<?= isset($policytype['allocg']) ? $policytype['allocg'] : '' ?>" name="allocg" required>
</div>
<div class="form-group col-md-4">
<label for="alloci">Alloci<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="alloci"
placeholder="Enter Alloci" value="<?= isset($policytype['alloci']) ? $policytype['alloci'] : '' ?>" name="alloci" required>
</div>
</div>
<hr>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div> <!-- end col-->
</div>
</div>
<!-- end -->
<script>
$(document).ready(function () {
$("#policytype_general_form").submit(function(events) {
events.preventDefault();
var isValid = $('#policytype_general_form').parsley().validate();
var PrimaryKey = $('#policytype_General_PrimaryKey').val();
var form_action = '';
if (isValid) {
if(PrimaryKey === ''){
form_action = '<?= base_url("master/policy/createpost"); ?>';
}else{
form_action = '<?= base_url("master/policy/edit"); ?>';
}
var formData = new FormData($('#policytype_general_form')[0]);
var OptionsHTML1 = ''
$.ajax({
data: formData,
url: form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
$('#policy_type_id').val(res.data.PrimaryKey);
$('#policy_id_type').click();
var message = "Policy Type General Info";
toastr.success(message, 'Success');
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
function validateForm() {
var isValid = true;
// Perform validation for each field
$('#policytype_general_form input, #policytype_general_form select').each(function() {
// Check for empty text inputs and selects
if ($(this).is('input[type="text"]') || $(this).is('select')) {
if ($.trim($(this).val()) == '') {
alert('Please fill in all fields');
isValid = false;
return false; // Exit the loop early
}
}
// Check for file inputs (assuming image files)
if ($(this).is('input[type="file"]')) {
var fileInput = $(this)[0];
if (fileInput.files.length === 0) {
alert('Please select an image file');
isValid = false;
return false; // Exit the loop early
}
}
});
return isValid;
}
});
</script>

View File

@ -0,0 +1,138 @@
<div class="row" id="policy_list">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="margin-bottom:1rem;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">Policy Type List</h4>
</div>
<div class="col-6" style="text-align: right; position: relative;top: 53px;">
<a href="<?= base_url("master/policy/create"); ?>" type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light" data-toggle="" data-placement="top" title="Add" data-trigger="hover">ADD</a>
</div>
</div>
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0"
id="tickets-table">
<thead class="bg-light">
<tr>
<th class="font-weight-medium">Policy Type</th>
<th class="font-weight-medium">Bap</th>
<th class="font-weight-medium">Allocg</th>
<th class="font-weight-medium">alloci</th>
<th class="font-weight-medium">Action</th>
</tr>
</thead>
<tbody>
<?php if(is_array($policyList)) {foreach($policyList as $row){ ?>
<tr>
<td><?php echo $row['policy_type']; ?> </td>
<td><?php echo $row['bap']; ?></td>
<td><?php echo $row['allocg']; ?></td>
<td><?php echo $row['alloci']; ?></td>
<td>
<div class="btn-group dropdown">
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown"aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="<?= base_url("master/policy/list/"); ?><?= $row['id'];?>"><i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>Edit</a>
<a class="dropdown-item" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete</a>
</div>
</div>
</td>
</tr>
<?php }}?>
</tbody>
</table>
</div>
</div>
</div><!-- end col -->
</div>
<!-- end row -->
<script>
$(document).ready(function(){
$('#tickets-table').DataTable({
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" ,
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'TPAList',
exportOptions: {
columns: ':not(:last-child)'
}
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
});
})
const btnExport = document.querySelector("#btnExport");
const tableElement = document.querySelector("#tickets-table");
btnExport.addEventListener("click", () => {
const obj = new csvExport(tableElement);
const csvData = obj.exportCsv();
const blob = new Blob([csvData], { type: "text/csv" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "PolicyTypeList.csv";
a.click();
setTimeout(() => {
URL.revokeObjectURL(url);
}, 500);
});
class csvExport {
constructor(table, header = true) {
this.table = table;
this.rows = Array.from(table.querySelectorAll("tr"));
if (!header && this.rows[0].querySelectorAll("th").length) {
this.rows.shift();
}
}
exportCsv() {
const lines = [];
const ncols = this._longestRow();
for (const row of this.rows) {
let line = "";
for (let i = 0; i < ncols - 1; i++) { // Exclude the last column
if (row.children[i] !== undefined) {
line += csvExport.safeData(row.children[i]);
}
line += i !== ncols - 2 ? "," : ""; // Adjusted for the last column exclusion
}
lines.push(line);
}
return lines.join("\n");
}
_longestRow() {
return this.rows.reduce((length, row) => (row.childElementCount > length ? row.childElementCount : length), 0);
}
static safeData(td) {
let data = td.textContent;
//Replace all double quote to two double quotes
data = data.replace(/"/g, `""`);
//Replace , and \n to double quotes
data = /[",\n"]/.test(data) ? `"${data}"` : data;
return data;
}
}
</script>

View File

@ -0,0 +1,69 @@
<style>
body {
.multiselect-native-select {
position: relative;
/* bottom: 32px; */
select {
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px -1px -1px -3px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
left: 50%;
top: 30px;
}
}
.multiselect-container{
width: 100% !important;
}
.multiselect-selected-text{
float: left !important;
}
}
</style>
<div class="row" id="policy_add">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">Policy Type Onboarding</h4>
</div>
<!-- <div class="col-6" style="text-align: right;">
<a href="<?= base_url("master/policy/list"); ?>" class="btn btn-primary waves-effect waves-light">Back</a>
</div> -->
</div>
<ul class="nav nav-pills navtab-bg">
<li class="nav-item">
<a href="#general-q-tab" data-toggle="tab" aria-expanded="false"
class="nav-link px-3 py-2 active">
<span class="mr-1"><i class="mdi mdi-contacts"></i></span>
<span class="d-none d-sm-inline-block">General</span>
</a>
</li>
<li class="nav-item">
<a href="#branch-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2" id="policy_id_type">
<span class="mr-1"><i class="mdi mdi-source-branch"></i></span>
<span class="d-none d-sm-inline-block">Policies</span>
</a>
</li>
</ul>
<div class="tab-content">
<?php include('policy_type_basic_info.php'); ?>
<?php include('policies.php'); ?>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,125 @@
<div class="tab-pane fade active show" id="general-q-tab">
<div class="row">
<div class="col-12">
<div class="card-body">
<form role="form" class="parsley-examples" method="post" id="tpa_general_form" enctype="multipart/form-data">
<input type="hidden" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="tpa_General_PrimaryKey" value="<?= isset($tpa['id']) ? $tpa['id'] : '' ?>"/>
<input type="hidden" name="tpa_id" id="tpa_id" />
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-4">
<label for="tpa_name">TPA Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="name"
placeholder="Enter TPA Name" value="<?= isset($tpa['name']) ? $tpa['name'] : '' ?>" name="name" required>
</div>
<div class="form-group col-md-4">
<label for="short_name">TPA Short Name<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="short_name" placeholder="Enter Short Name" value="<?= isset($tpa['short_name']) ? $tpa['short_name'] : '' ?>" name="short_name" required>
</div>
</div>
<hr>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div> <!-- end col-->
</div>
</div>
<!-- end -->
<script>
$(document).ready(function () {
$("#tpa_general_form").submit(function(events) {
events.preventDefault();
var isValid = $('#tpa_general_form').parsley().validate();
var PrimaryKey = $('#tpa_General_PrimaryKey').val();
var form_action = '';
if (isValid) {
if(PrimaryKey === ''){
form_action = '<?= base_url("master/tpa/createpost"); ?>';
}else{
form_action = '<?= base_url("master/tpa/edit"); ?>';
}
var formData = new FormData($('#tpa_general_form')[0]);
var OptionsHTML1 = ''
$.ajax({
data: formData,
url: form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
$('#tpa_id').val(res.data.id);
$('#tpa_id_branch').val(res.data.id);
$('#tpa_branch_contacts_id').click();
var message = "TPA General Info";
toastr.success(message, 'Success');
// $.toast({
// text: 'Insurer General Info',
// heading: "Submitted Sucessfully",
// position: 'top-right',
// icon: 'success',
// bgColor: !1,
// });
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
function validateForm() {
var isValid = true;
// Perform validation for each field
$('#tpa_general_form input, #tpa_general_form select').each(function() {
// Check for empty text inputs and selects
if ($(this).is('input[type="text"]') || $(this).is('select')) {
if ($.trim($(this).val()) == '') {
alert('Please fill in all fields');
isValid = false;
return false; // Exit the loop early
}
}
// Check for file inputs (assuming image files)
if ($(this).is('input[type="file"]')) {
var fileInput = $(this)[0];
if (fileInput.files.length === 0) {
alert('Please select an image file');
isValid = false;
return false; // Exit the loop early
}
}
});
return isValid;
}
});
</script>

467
app/Views/tpa_branch.php Normal file
View File

@ -0,0 +1,467 @@
<div class="tab-pane fade" id="branch-tab">
<div class="row float-right" style="padding-bottom: 10px;position: relative;right: 13px;">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light btn-sm"><span class="fa fa-plus-square" aria-hidden="true" style="padding: 5px 10px;"></span>Add Branch</button>
</div>
<div class="table-responsive" id="branch_table" >
<table class="table table-borderless table-nowrap mb-0">
<thead class="thead-light">
<tr>
<th>Branch Name</th>
<th>Branch Code</th>
<th>Action</th>
</tr>
</thead>
<tbody id="tpa_branch_list">
</tbody>
</table>
</div>
<div class="row" id="add_branch">
<div class="col-12">
<div class="card-body">
<div class="row float-right" style="position: relative; bottom: 20px; right: 13px;">
<button type="button" class="btn btn-primary waves-effect waves-light btn-sm btnBack"><span class="fa fa-list" aria-hidden="true" style="padding: 5px 10px;"></span>Back To List</button>
</div>
<hr>
<form role="form" class="parsley-examples" method="post" id="tpa_branch_form" enctype="multipart/form-data">
<input type="hidden" class="form-control" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="tpa_Branch_PrimaryKey" />
<input type="hidden" name="tpa_id" id="tpa_id_branch" value="<?= isset($tpa['id']) ? $tpa['id'] : '' ?>"/>
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-6">
<label for="branch_name">Branch Name<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="branch_name"
placeholder="Enter Branch Name" name="branch_name" required>
</div>
<div class="form-group col-md-6">
<label for="branch_code">Branch Code<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="branch_code"
placeholder="Enter Branch Code" name="branch_code" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-4">
<label for="state">State<span
class="text-danger">*</span></label>
<select class="form-control" id="state" name="state" required>
<option value="">Select State</option>
<?php if ($state) {
foreach($state as $value) { ?>
<option value="<?= $value['id'] ?>"><?= $value['state'] ?></option>
<?php } }?>
</select>
</div>
<div class="form-group col-md-4">
<label for="district">District<span
class="text-danger">*</span></label>
<input type="text" class="form-control" id="district"
placeholder="Enter District" name="district" required>
</div>
<div class="form-group col-md-4">
<label for="city">City</label>
<input type="text" class="form-control" id="branch_city"
placeholder="Enter City" name="city" required>
</div>
</div>
<hr>
<h6 class="header-title">Contact 1</h6>
<br>
<div class="form-row">
<div class="form-group col-md-6">
<label for="first_name">Name<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Name" name="name[]" id="name" required>
</div>
<div class="form-group col-md-6">
<label for="last_name">Email<span class="text-danger">*</span></label>
<input value="" data-parsley-type="email" type="email" data-parsley-type="email" class="form-control" placeholder="Enter Contact Email" name="email[]" id="email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="mobile">Mobile<span class="text-danger">*</span></label>
<input value="" data-parsley-type="number" data-parsley-length="[10,10]" type="tel" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="mobile" required>
</div>
<div class="form-group col-md-6">
<label for="designation">Designation<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Designation Name" name="designation[]" id="designation" required>
</div>
</div>
<div class="form-group" style="display: flex;">
<button style="margin-right: 10px;" type="button" class="btn btn-primary btn-sm ac" onclick="appendContactHtml()" id="add">Add Contact</button>
<button type="button" class="btn btn-danger btn-sm" onclick="removeContact(this)" id="${uniqueId}_remove">Remove</button>
</div>
<div id="container"></div>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack"
id="btnBack">Cancel</button>
</div>
</form>
</div>
</div>
</div> <!-- end col-->
</div>
<!-- end -->
<script>
var contactCount = 1;
$(document).ready(function () {
var tpa_Branch_PrimaryKey = $('#tpa_id_branch').val();
var tpa_branch_form_action = '';
$('#add_branch').hide();
$('.btnBack').hide();
loadBranchList();
$('#btnBranchAdd').click(function(){
tpa_branch_form_action = '<?= base_url("master/tpa/branch/create"); ?>';
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#branch_name').val('');
$('#branch_code').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name').val('');
$('#email').val('');
$('#mobile').val('');
$('#designation').val('');
contactCount = 1
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
for (var i = 0; i < buttonIds.length; i++) {
var firstElement = buttonIds[i].split('_')[0];
console.log(firstElement);
// Find the element by its ID
var elementToRemove = document.getElementById(firstElement);
console.log(elementToRemove);
if (elementToRemove) {
console.log(elementToRemove);
elementToRemove.parentNode.removeChild(elementToRemove);
}
localStorage.removeItem('buttonIds')
}
})
$('.btnBack').click(function(){
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
$('#branch_name').val('');
$('#branch_code').val('');
$('#state').val('');
$('#district').val('');
$('#branch_city').val('');
$('#name').val('');
$('#email').val('');
$('#mobile').val('');
$('#designation').val('');
})
if(tpa_Branch_PrimaryKey !== ''){
var branchTable = '';
var data = <?= isset($tpa_branch) ? json_encode($tpa_branch) : '[]' ?>;
$.each(data, function(index, item) {
branchTable += `
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
$('#tpa_branch_list').append(branchTable);
}
$("#tpa_branch_form").submit(function(events) {
events.preventDefault();
var isValid = $('#tpa_branch_form').parsley().validate();
if (isValid) {
var formData = new FormData($('#tpa_branch_form')[0]);
$.ajax({
data: formData,
url: tpa_branch_form_action,
type: "POST",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
$('#tpa_branch_list tr').remove();
var tpaBranchTableInsert = ''
$.each(res.data, function(index, item) {
tpaBranchTableInsert += `
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
$('#tpa_branch_list').append(tpaBranchTableInsert);
$('#add_branch').hide();
$('#branch_table').show();
$('.btnBack').hide();
$('#btnBranchAdd').show();
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
});
$('body').on('click', '.btnBranchEdit', function () {
$('#container').html("");
contactCount =1;
var branch_id = $(this).attr('data-id');
tpa_branch_form_action = '<?= base_url("master/tpa/branch/edit"); ?>';
$.ajax({
url: '<?php echo base_url('master/tpa/branch/editget/');?>'+branch_id,
type: "GET",
dataType: 'json',
success: function (res) {
console.log("tpa.............");
console.log(res)
$('#add_branch').show();
$('#branch_table').hide();
$('.btnBack').show();
$('#btnBranchAdd').hide();
$('#branch_name').val(res.tpabranch.branch_name);
$('#branch_code').val(res.tpabranch.branch_code);
$('#state option[value="' + res.tpabranch.state + '"]').prop('selected', true);
$('#district').val(res.tpabranch.district);
$('#branch_city').val(res.tpabranch.city);
$('#tpa_Branch_PrimaryKey').val(res.tpabranch.id);
$('.form-row').find('#name').val(res.levelcontact[0].name);
$('#email').val(res.levelcontact[0].email);
$('#mobile').val(res.levelcontact[0].mobile);
$('#designation').val(res.levelcontact[0].designation);
res.levelcontact.shift();
$.each(res.levelcontact, function(index, contact) {
console.log(contact);
if (contact !== undefined) {
appendContactHtml(contact);
}
});
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
});
function loadBranchList()
{
var base_url = '<?= base_url("master/tpa/branch/list/"); ?>';
var tpa_branch_action = base_url + tpa_Branch_PrimaryKey;
if ($('#tpa_id_branch').val() != '') {
$.ajax({
url: tpa_branch_action,
type: 'GET',
success: function(response) {
var branchTable = '';
$.each(response.tpa_branch, function(index, item) {
branchTable += `
<tr>
<td>${item.branch_name}</td>
<td>${item.branch_code}</td>
<td><a class="mdi mdi-lead-pencil btnBranchEdit" href="#" data-id="${item.id}" style="font-size:18px;"></a></td>
</tr>
`;
});
$('#tpa_branch_list').html(branchTable);
},
error: function(xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
}
}
});
function appendContactHtml(contact = false, reset = false) {
console.log('appendContactHtml function called ')
contactCount++;
var container = document.getElementById('container');
var uniqueId = Date.now().toString();
var html = `
<div id="${uniqueId}">
<hr>
<h6 class="header-title">Contact ${contactCount}</h6>
<br>
<div class="form-row">
<div class="form-group col-md-6">
<label for="${uniqueId}_first_name">Name<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.name : ''}" type="text" class="form-control" placeholder="Enter Contact Name" name="name[]" id="${uniqueId}_name" required>
</div>
<div class="form-group col-md-6">
<label for="${uniqueId}_last_name">Email<span class="text-danger">*</span></label>
<input data-parsley-type="email" value="${contact !== undefined && contact !== false ? contact.email : ''}" type="email" class="form-control" placeholder="Enter Contact Email" name="email[]" id="${uniqueId}_email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="${uniqueId}_mobile">Mobile<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.mobile : ''}" type="tel" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="${uniqueId}_mobile" required>
</div>
<div class="form-group col-md-6">
<label for="${uniqueId}_designation">Designation<span class="text-danger">*</span></label>
<input data-parsley-type="number" data-parsley-length="[10,10]" value="${contact !== undefined && contact !== false ? contact.designation : ''}" type="text" class="form-control" placeholder="Enter Designation Name" name="designation[]" id="${uniqueId}_designation" required>
</div>
</div>
<div class="form-group" style="display: flex;">
<button style="margin-right: 10px;" type="button" class="btn btn-primary btn-sm ac" onclick="appendContactHtml()" id="${uniqueId}_add">Add Contact</button>
<button type="button" class="btn btn-danger btn-sm" onclick="removeContact(this)" id="${uniqueId}_remove">Remove</button>
</div>
</div>
`;
if(reset == false){
console.log(reset)
container.insertAdjacentHTML('beforeend', html);
storeButtonId(uniqueId + '_add');
if (contactCount >= 3) {
hideStoredAddButtons();
}
}
}
function removeContact(button) {
var uniqueId = button.id.split("_")[0];
var contactSection = document.getElementById(uniqueId);
if (contactSection) {
contactSection.parentNode.removeChild(contactSection);
contactCount --;
if (contactCount < 3) {
var addButton = document.querySelector('.ac');
if (addButton) {
addButton.style.display = 'block';
}
}
}
}
function storeButtonId(id) {
var buttonIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
buttonIds.push(id);
localStorage.setItem('buttonIds', JSON.stringify(buttonIds));
}
function hideStoredAddButtons() {
var storedIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
storedIds.forEach(function(id) {
var addButton = document.getElementById(id);
var first_addButton = document.querySelector('.ac')
if (addButton) {
addButton.style.display = 'none';
first_addButton.style.display = 'none';
}
});
}
function showNextAddButton() {
var storedIds = JSON.parse(localStorage.getItem('buttonIds')) || [];
var addButtonShown = false;
// Iterate through the stored IDs to find the next "Add" button to show
storedIds.forEach(function(id) {
if (!addButtonShown) {
var addButton = document.getElementById(id);
if (addButton && addButton.style.display === 'none') {
addButton.style.display = 'block';
addButtonShown = true; // Set to true once an "Add" button is shown
}
}
});
}
function validateForm() {
var isValid = true;
$('#branch_form input, #branch_form select').each(function() {
if ($(this).is('input[type="text"]') || $(this).is('select')) {
if ($.trim($(this).val()) == '') {
isValid = false;
return false;
}
}
});
return isValid;
}
</script>

132
app/Views/tpa_list.php Normal file
View File

@ -0,0 +1,132 @@
<div class="row" id="tpa_list">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="margin-bottom:1rem;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">TPA List</h4>
</div>
<div class="col-6" style="text-align: right; position: relative;top: 53px;">
<a href="<?= base_url("master/tpa/create"); ?>" type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light" data-toggle="" data-placement="top" title="Add" data-trigger="hover">ADD</a>
</div>
</div>
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0"
id="tickets-table">
<thead class="bg-light">
<tr>
<th class="font-weight-medium">Name</th>
<th class="font-weight-medium">Action</th>
</tr>
</thead>
<tbody>
<?php if(is_array($tpaList)) {foreach($tpaList as $row){ ?>
<tr>
<td><?php echo $row['name']; ?> ( <?php echo $row['short_name']; ?> ) </td>
<td>
<div class="btn-group dropdown">
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown"aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="<?= base_url("master/tpa/list/"); ?><?= $row['id'];?>"><i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>Edit</a>
<a class="dropdown-item" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete</a>
</div>
</div>
</td>
</tr>
<?php }}?>
</tbody>
</table>
</div>
</div>
</div><!-- end col -->
</div>
<!-- end row -->
<script>
$(document).ready(function(){
$('#tickets-table').DataTable({
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" ,
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'TPAList',
exportOptions: {
columns: ':not(:last-child)'
}
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
});
})
const btnExport = document.querySelector("#btnExport");
const tableElement = document.querySelector("#tickets-table");
btnExport.addEventListener("click", () => {
const obj = new csvExport(tableElement);
const csvData = obj.exportCsv();
const blob = new Blob([csvData], { type: "text/csv" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "TPAList.csv";
a.click();
setTimeout(() => {
URL.revokeObjectURL(url);
}, 500);
});
class csvExport {
constructor(table, header = true) {
this.table = table;
this.rows = Array.from(table.querySelectorAll("tr"));
if (!header && this.rows[0].querySelectorAll("th").length) {
this.rows.shift();
}
}
exportCsv() {
const lines = [];
const ncols = this._longestRow();
for (const row of this.rows) {
let line = "";
for (let i = 0; i < ncols - 1; i++) { // Exclude the last column
if (row.children[i] !== undefined) {
line += csvExport.safeData(row.children[i]);
}
line += i !== ncols - 2 ? "," : ""; // Adjusted for the last column exclusion
}
lines.push(line);
}
return lines.join("\n");
}
_longestRow() {
return this.rows.reduce((length, row) => (row.childElementCount > length ? row.childElementCount : length), 0);
}
static safeData(td) {
let data = td.textContent;
//Replace all double quote to two double quotes
data = data.replace(/"/g, `""`);
//Replace , and \n to double quotes
data = /[",\n"]/.test(data) ? `"${data}"` : data;
return data;
}
}
</script>

View File

@ -0,0 +1,69 @@
<style>
body {
.multiselect-native-select {
position: relative;
/* bottom: 32px; */
select {
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px -1px -1px -3px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
left: 50%;
top: 30px;
}
}
.multiselect-container{
width: 100% !important;
}
.multiselect-selected-text{
float: left !important;
}
}
</style>
<div class="row" id="tpa_add">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">TPA Onboarding</h4>
</div>
<!-- <div class="col-6" style="text-align: right;">
<a href="<?= base_url("master/tpa/list"); ?>" class="btn btn-primary waves-effect waves-light">Back</a>
</div> -->
</div>
<ul class="nav nav-pills navtab-bg">
<li class="nav-item">
<a href="#general-q-tab" data-toggle="tab" aria-expanded="false"
class="nav-link px-3 py-2 active">
<span class="mr-1"><i class="mdi mdi-contacts"></i></span>
<span class="d-none d-sm-inline-block">General</span>
</a>
</li>
<li class="nav-item">
<a href="#branch-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2" id="tpa_branch_contacts_id">
<span class="mr-1"><i class="mdi mdi-source-branch"></i></span>
<span class="d-none d-sm-inline-block">Branch & Contacts</span>
</a>
</li>
</ul>
<div class="tab-content">
<?php include('tpa_basic_info.php'); ?>
<?php include('tpa_branch.php'); ?>
</div>
</div>
</div>
</div>
</div>

View File

@ -60,7 +60,9 @@
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
"sort-packages": true,
"process-timeout": 900
},
"scripts": {
"test": "phpunit"