diff --git a/.env.sample b/.env.sample index 6af188a4..b3f6111e 100644 --- a/.env.sample +++ b/.env.sample @@ -14,13 +14,14 @@ # ENVIRONMENT #-------------------------------------------------------------------- -CI_ENVIRONMENT = development +# CI_ENVIRONMENT = development #-------------------------------------------------------------------- # APP #-------------------------------------------------------------------- -app.baseURL = 'http://localhost/nhance/' +app.baseURL = 'http://localhost/client_changes/nhance/' +app.appTimezone = 'Asia/Kolkata' # If you have trouble with `.`, you could also use `_`. # app_baseURL = '' # app.forceGlobalSecureRequests = false @@ -31,19 +32,74 @@ app.baseURL = 'http://localhost/nhance/' #-------------------------------------------------------------------- +# Dev DB Connection database.default.hostname = 119.18.54.85 database.default.database = venbaehn_nhance database.default.username = venbaehn_nhance_user1 database.default.password = 'iM~X7(cR+}A-' +database.default.DBDriver = MySQLi +database.default.DBPrefix = +database.default.port = 3306 + +database.tests.hostname = 119.18.54.85 +database.tests.database = venbaehn_nhance +database.tests.username = venbaehn_nhance_user1 +database.tests.password = 'iM~X7(cR+}A-' +database.tests.DBDriver = MySQLi +database.tests.DBPrefix = +database.tests.port = 3306 + +# Test DB Connection + +# database.default.hostname = 119.18.54.85 +# database.default.database = venbaehn_nhance_test +# database.default.username = venbaehn_nhance_user1 +# database.default.password = 'iM~X7(cR+}A-' # database.default.DBDriver = MySQLi # database.default.DBPrefix = # database.default.port = 3306 -database.default.hostname = 119.18.54.85 -database.default.database = venbaehn_nhance -database.default.username = venbaehn_nhance_user1 -database.default.password = 'iM~X7(cR+}A-' +# database.tests.hostname = 119.18.54.85 +# database.tests.database = venbaehn_nhance_test +# database.tests.username = venbaehn_nhance_user1 +# database.tests.password = 'iM~X7(cR+}A-' +# database.tests.DBDriver = MySQLi +# database.tests.DBPrefix = +# database.tests.port = 3306 + +# UAT DB Connection + +# database.default.hostname = 119.18.54.85 +# database.default.database = venbaehn_nhance_uat +# database.default.username = venbaehn_nhance_user1 +# database.default.password = 'iM~X7(cR+}A-' +# database.default.DBDriver = MySQLi +# database.default.DBPrefix = +# database.default.port = 3306 + +# database.tests.hostname = 119.18.54.85 +# database.tests.database = venbaehn_nhance_uat +# database.tests.username = venbaehn_nhance_user1 +# database.tests.password = 'iM~X7(cR+}A-' +# database.tests.DBDriver = MySQLi +# database.tests.DBPrefix = +# database.tests.port = 3306 + +# Local PhpMyAdmin DB Connection + +# database.default.hostname = localhost +# database.default.database = nhance +# database.default.username = root +# database.default.password = '' +# database.default.DBDriver = MySQLi +# database.default.DBPrefix = +# database.default.port = 3306 + +# database.tests.hostname = localhost +# database.tests.database = nhance +# database.tests.username = root +# database.tests.password = '' # database.tests.DBDriver = MySQLi # database.tests.DBPrefix = # database.tests.port = 3306 @@ -125,12 +181,12 @@ database.default.password = 'iM~X7(cR+}A-' #-------------------------------------------------------------------- # session.driver = 'CodeIgniter\Session\Handlers\FileHandler' -# session.cookieName = 'ci_session' -# session.expiration = 7200 +session.cookieName = 'ci_session_dev' +session.expiration = 86400 # session.savePath = null # session.matchIP = false -# session.timeToUpdate = 300 -# session.regenerateDestroy = false +session.timeToUpdate = 300 +session.regenerateDestroy = true #-------------------------------------------------------------------- # LOGGER @@ -151,5 +207,10 @@ database.default.password = 'iM~X7(cR+}A-' GOOGLE_OAUTH_APP_NAME = 'OAuth' GOOGLE_OAUTH_CLIENT_ID = '696241936560-m2mr272ge7vr2n4q36c22l3d2gdgi90l.apps.googleusercontent.com' GOOGLE_OAUTH_CLIENT_SECRET = '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' -GOOGLE_OAUTH_REDIRECT_URI = 'http://localhost/nhance/oauth2callback' +GOOGLE_OAUTH_REDIRECT_URI = 'http://localhost/client_changes/nhance/oauth2callback' GOOGLE_OAUTH_SCOPES = "https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile" + + +App_Url = https://venbait.in/nhance/app/dev/ +POST_ENROLLMENT_APP_LINK = https://venbait.in/nhance/employee/dev/ +NHANCE_LOGO = https://venbait.in/nhance/dev/public/assets/images/Nhance_Favi.png \ No newline at end of file diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a0dd7be7..9e8fd8e1 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -16,6 +16,8 @@ $routes->get("testing", "ClientController::Testing"); $routes->get("update-policy-terms-for-corrections", "ClientController::updatePolicyTermsForCorrections"); $routes->get("update_rack_rate_json", "ClientController::updateRackRateJson"); $routes->get("updatajson", "EmpDataServiceController::updatajson"); +$routes->get("view", "EmployeeController::viewECard/$1"); + $routes->post("add_advertise_image", "AppContentManagementController::add_advertise_image"); @@ -109,6 +111,7 @@ $routes->group("/client", ["filter" => "authMVC"], function ($routes) { $routes->get("list/(:any)", "ClientController::getClientPolicyById/$1"); $routes->post("policyGMCTerms", "ClientController::policyGMCTerms"); $routes->get("getterms", "ClientController::getterms"); + $routes->get("remove/(:any)", "ClientController::removePolicy/$1"); }); $routes->group("kyc", ["filter" => "authMVC"], function ($routes) { @@ -252,7 +255,6 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("fetch-emp-count/(:any)", "EmployeeController::getEmpCount/$1"); $routes->get("init-Emp-onboard/(:any)", "EmployeeController::initiateManualEmployeesOnboardProcess/$1"); $routes->get("full-excel-error-file/(:any)", "EmployeeController::downloadFullExcelErrorFile/$1"); - $routes->get("id-card", "EmployeeController::viewECard/$1"); $routes->get("preview-card/(:any)", "EmployeeController::previewTemplate/$1"); $routes->get("export-import-error-list/(:any)", "EmployeeController::errorListExportImport/$1"); $routes->get("has_policy_config_completed/(:any)", "EmployeeController::hasPolicyConfigCompleted/$1"); @@ -268,6 +270,8 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("check_addition_premium_JSON/(:any)", "ClientController::checkAdditionPremiumJSON/$1"); $routes->get("get_policy_type_for_base_policy/(:any)", "ClientController::getPolicyTypeForBasePolicy/$1"); $routes->get("get_client_details/(:any)", "ClientController::getClientDetails/$1"); + $routes->get("featch_dashboard_data/(:any)", "DashboardController::featch_dashboard_data/$1"); + $routes->get("remove_rack_rate/(:any)", "ClientController::removeRackRate/$1"); }); $routes->cli('cli/processjob', 'JobWorker::processJob'); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 7b694d78..e6f61eb0 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -229,15 +229,24 @@ class ClientController extends AdminController public function removeClient($id = null) { $this->myLogger->logme('error','Client Remove function called'); - // $data = $this->request->getPost(); - $data['updated_by'] = get_session_userid(); - $data['is_active'] = 0; - $update = $this->clientModel->update($id,$data); - if($update){ + + $client_policy_data = $this->clientPolicyModel + ->where('policy_status', 1) + ->where('Is_active', 1) + ->where('client_id', $id) + ->countAllResults(); + if($client_policy_data == 0){ + + $data['updated_by'] = get_session_userid(); + $data['is_active'] = 0; + $update = $this->clientModel->update($id,$data); return $this->respond(['status' => true,'code' => 200], 200); + }else{ - return $this->respond(['status' => false,'code' => 404], 200); + + return $this->respond(['status' => false,'code' => 404, 'message' => 'The Client has active policy'], 200); } + } public function removeClientBranch($id = null) @@ -319,6 +328,7 @@ class ClientController extends AdminController 5 => 'Non EB', 6 => 'Refund By Insurer', 7 => 'Opening Amount', + 8 => 'Truncated', ]; $data['subTypeOptions'] = $subTypeOptions; @@ -411,6 +421,7 @@ class ClientController extends AdminController } $editData['client_policy'] = $clientPoliceData; + $editData['client_policy']['role'] = get_role_id(); $editData['notification'] =$this->notificationModel->select('template_name,enabled')->where('client_id',$id)->findAll(); $editData['placeHolders'] = ['member_name','nhance_logo','tpa_id','ecard_download_link', 'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link', 'client_name']; @@ -757,8 +768,8 @@ class ClientController extends AdminController $data['no_of_lives'] = $this->request->getPost('no_of_lives'); $data['policy_status'] = $this->request->getPost('policy_status'); $data['no_of_employees'] = $this->request->getPost('no_of_employees'); - $data['earned_premium_date'] = change_date_format($this->request->getPost('earned_premium_date'), 'd-m-Y', 'Y-m-d'); - $data['claims_incurred_date'] = change_date_format($this->request->getPost('claims_incurred_date'), 'd-m-Y', 'Y-m-d'); + $data['earned_premium_date'] = change_date_format($this->request->getPost('earned_premium_date'), 'd-m-Y', 'Y-m-d') ?? null; + $data['claims_incurred_date'] = change_date_format($this->request->getPost('claims_incurred_date'), 'd-m-Y', 'Y-m-d') ?? null; $data['incurred_claims_ratio'] = $this->request->getPost('incurred_claims_ratio'); $data['no_lives_at_inception'] = $this->request->getPost('no_lives_at_inception'); $data['premium_paid_at_inception'] = $this->request->getPost('premium_paid_at_inception'); @@ -833,6 +844,7 @@ class ClientController extends AdminController $insert = $this->clientPolicyModel->insert($data); if($insert){ $clientPoliceData = $this->clientPolicyModel->getClientPolicyByClientId($this->request->getPost('client_id')); + $clientPoliceData['role'] = get_role_id(); return $this->respond(['status' => true,'code' => 200,'data' => $clientPoliceData, 'method' => 'CERATE', 'post_data' => $data], 200); }else{ return $this->respond(['status' => false,'code' => 404, 'message' => 'no data found'], 200); @@ -870,8 +882,8 @@ class ClientController extends AdminController $data['no_of_lives'] = $this->request->getPost('no_of_lives'); $data['policy_status'] = $this->request->getPost('policy_status'); $data['no_of_employees'] = $this->request->getPost('no_of_employees'); - $data['earned_premium_date'] = change_date_format($this->request->getPost('earned_premium_date'), 'd-m-Y', 'Y-m-d'); - $data['claims_incurred_date'] = change_date_format($this->request->getPost('claims_incurred_date'), 'd-m-Y', 'Y-m-d'); + $data['earned_premium_date'] = change_date_format($this->request->getPost('earned_premium_date'), 'd-m-Y', 'Y-m-d') ?? null; + $data['claims_incurred_date'] = change_date_format($this->request->getPost('claims_incurred_date'), 'd-m-Y', 'Y-m-d') ?? null; $data['incurred_claims_ratio'] = $this->request->getPost('incurred_claims_ratio'); $data['no_lives_at_inception'] = $this->request->getPost('no_lives_at_inception'); $data['premium_paid_at_inception'] = $this->request->getPost('premium_paid_at_inception'); @@ -937,7 +949,7 @@ class ClientController extends AdminController // dd($data); $data['updated_by'] = get_session_userid(); - // print_r($data);die; + // print_r(json_encode($data));die; $insert = $this->clientPolicyModel->update($id,$data); $lastQuery = $this->clientPolicyModel->getLastQuery(); @@ -946,7 +958,7 @@ class ClientController extends AdminController if($insert){ $clientPoliceData = $this->clientPolicyModel->getClientPolicyByClientId($client_id); - + $clientPoliceData['role'] = get_role_id(); // foreach ($clientPoliceData as $key => $value) { // $clientPoliceData[$key]->policy_start_date = date('d-M-Y', strtotime($value->policy_start_date)); @@ -958,6 +970,41 @@ class ClientController extends AdminController } } + public function removePolicy($id = null) + { + $this->myLogger->logme('error', 'Client Policy Remove function called'); + + $data = [ + 'updated_by' => get_session_userid(), + 'is_active' => 0 + ]; + + $emp_details = $this->employeePolicyModel + ->join('employees', 'employees.id = employee_polices.employee_id') + ->where('client_policy_id', $id) + ->where('employee_polices.status', 'active') + ->where('employee_polices.is_active', 1) + ->where('employees.emp_status', 'active') + ->where('employees.is_active', 1) + ->countAllResults(); + if($emp_details == 0){ + + $update = $this->clientPolicyModel->where('id', $id)->set($data)->update(); + + if ($update) { + return $this->respond(['status' => true, 'code' => 200], 200); + } else { + return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to remove policy'], 200); + } + + }else{ + + return $this->respond(['status' => false, 'code' => 404, 'message' => 'The policy has active employees'], 200); + + } + + } + public function createClientPolicyPremium() { @@ -1715,10 +1762,12 @@ class ClientController extends AdminController $data['family_floaters']['parents-in-law'] =2; $data['family_floaters']['either-parents-pil'] =0; }else if($temp_family_floaters[$value] == '2EPORPIL'){ + //Parents or PIL (Any two of Father, Mother, MIl, FIL) $data['family_floaters']['parents'] =0; $data['family_floaters']['parents-in-law'] =0; $data['family_floaters']['either-parents-pil'] =2; }else if($temp_family_floaters[$value] == 'EPORPIL'){ + //Either Parents or PIL (Parents or Parents In Law) $data['family_floaters']['parents'] =0; $data['family_floaters']['parents-in-law'] =0; $data['family_floaters']['either-parents-pil'] =1; @@ -2117,7 +2166,8 @@ class ClientController extends AdminController } } - public function getClientBranch($client_id){ + public function getClientBranch($client_id) + { $branchs = $this->clientBranchModel ->select('*') @@ -2125,8 +2175,6 @@ class ClientController extends AdminController ->findAll(); return $this->respond(['status' => true,'code' => 200, 'data' => $branchs], 200); - - } public function getClientAllDetailsByUsingClientID($client_id) @@ -2136,7 +2184,7 @@ class ClientController extends AdminController $builder = $db->table('clients'); $builder->select(' - policies.name as policy_name, + policy_type.policy_type, insurers.name as insurer_name, insurers.short_name as insurer_short_name, @@ -2150,9 +2198,9 @@ class ClientController extends AdminController CASE WHEN client_policy.base_policy IS NULL THEN "Not Appear" WHEN client_policy.base_policy = 0 THEN "Not Appear" - ELSE (SELECT policies.name + ELSE (SELECT policy_type.policy_type FROM client_policy AS base_client_policy - JOIN policies ON policies.id = base_client_policy.policy_id + JOIN policy_type ON policy_type.id = base_client_policy.policy_type_id WHERE base_client_policy.id = client_policy.base_policy) END as base_policy_name, @@ -2185,13 +2233,11 @@ class ClientController extends AdminController ', false); $builder->join('client_policy', 'client_policy.client_id = clients.id'); $builder->join('client_branch', 'client_policy.client_branch_id = client_branch.id'); - $builder->join('policies', 'policies.id = client_policy.policy_id'); - $builder->join('policy_type', 'policy_type.id = policies.policy_type_id'); + $builder->join('policy_type', 'policy_type.id = client_policy.policy_type_id'); $builder->join('insurers', 'insurers.id = client_policy.insurer_id'); $builder->join('tpa', 'tpa.id = client_policy.tpa_id'); $builder->where('clients.is_active', 1); $builder->where('client_policy.is_active', 1); - $builder->where('policies.is_active', 1); $builder->where('policy_type.is_active', 1); $builder->where('client_policy.policy_status', 1); $builder->where('clients.id', $client_id); @@ -2281,8 +2327,6 @@ class ClientController extends AdminController } - - $data['client_policy'] = $client_policy; $data['client_branch'] = $this->clientModel @@ -2306,10 +2350,7 @@ class ClientController extends AdminController ->get()->getResultArray(); - $data['client'] = $this->clientModel - ->select('clients.*, states.state as state') - ->join('states', 'states.id = clients.state') - ->where('clients.id', $client_id)->first(); + $data['client'] = $this->clientModel->where('clients.id', $client_id)->first(); $client_rm = $this->clientRMModel @@ -2337,7 +2378,7 @@ class ClientController extends AdminController $data['heads'] = $heads; // dd($data); - //$this->loadLayout('client_info', $data); + // $this->loadLayout('client_info', $data); $html = view('client_info', $data); @@ -2645,7 +2686,7 @@ class ClientController extends AdminController public function updateRackRateJson() { - // $client_policy_id = 13; + // $client_policy_id = 12; $results = $this->policyPremium2Model ->select('*') @@ -2664,6 +2705,7 @@ class ClientController extends AdminController ->get() ->getResultArray(); + // dd($results, $results2); $client_policy_ids = []; $json = []; @@ -2740,7 +2782,9 @@ class ClientController extends AdminController $client_policy_id = $result['client_policy_id']; $client_policy_data = $this->clientPolicyModel->where('id', $client_policy_id)->first(); - if($client_policy_data['policy_terms']){ + // dd($client_policy_data); + + if(isset($client_policy_data) && $client_policy_data['policy_terms']){ $self = 1; $spouse = 'NA'; @@ -2784,4 +2828,38 @@ class ClientController extends AdminController } + + public function removeRackRate($rack_rate_name = null, $client_policy_id = null) + { + $this->myLogger->logme('error', 'Rack Rate Remove function called'); + + $data = [ + 'updated_by' => get_session_userid(), + 'is_active' => 0 + ]; + + $rackRateData = $this->policyPremium2Model + ->where('rack_rate_name', $rack_rate_name) + ->where('client_policy_id', $client_policy_id) + ->where('is_active',1) + ->countAllResults(); + + if($rackRateData > 0){ + $update = $this->policyPremium2Model + ->where('rack_rate_name', $rack_rate_name) + ->where('client_policy_id', $client_policy_id) + ->set($data)->update(); + + if ($update) { + return $this->respond(['status' => true, 'code' => 200, 'message' => 'Rack Rate removed successfully', 'rr_count' => $rackRateData], 200); + } else { + return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to remove policy', 'rr_count' => $rackRateData], 200); + } + }else{ + + return $this->respond(['status' => false, 'code' => 404, 'message' => 'Rack Rate not available', 'rr_count' => $rackRateData], 200); + } + + } + } \ No newline at end of file diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index da5e1ac6..b1ed384e 100644 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -18,16 +18,17 @@ use App\Models\JobModel; use App\Models\ClientPolicyModel; use App\Models\NotificationModel; use App\Models\EmployeePolicyModel; +use App\Controllers\PendingActionsContrller; class DashboardController extends AdminController { - + use ResponseTrait; protected $messageModel; protected $clientModel; protected $userMessageModel; protected $myLogger; - + public function __construct() { set_session_context('Dashboard'); @@ -53,6 +54,19 @@ class DashboardController extends AdminController ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') ->findAll(); + $pendingActionsController = new PendingActionsController; + $pendingActionsData = $pendingActionsController->getPendingActionsForDashBoard(); + + $results = $this->clientModel->select('clients.id as client_id, clients.client_name, clients.short_name, + client_branch.id as client_branch_id, client_branch.branch_name, + client_branch.branch_code, employees.id as employee_id, + employees.name as employee_name, employees.relationship, + employees.emp_code, employees.emp_status, auth_history.user_type') + ->join('client_branch', 'clients.id = client_branch.client_id', 'left') + ->join('employees', 'client_branch.id = employees.client_branch_id', 'left') + ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') + ->findAll(); + $groupedData = []; foreach ($results as $row) { @@ -62,15 +76,21 @@ class DashboardController extends AdminController $branchId = $row['client_branch_id']; $branchName = $row['branch_name']; $branchCode = $row['branch_code']; - $employeeId = $row['employee_id']; - $employeeName = $row['employee_name']; - $employeeRelationship = $row['relationship']; - $employeeEmpCode = $row['emp_code']; - $employeeEmpStatus = $row['emp_status']; - $employeeUserType = $row['user_type']; + $clientPolicyId = $row['client_policy_id']; $policyTypeId = $row['policy_type_id']; - + $employeeId =''; + if ($employeeId != $row['employee_id']) { + $employeeId = $row['employee_id']; + } else { + $employeeId = null; + } + $employeeName = $row['employee_name']; + $employeeRelationship = $row['relationship']; + $employeeEmpCode = $row['emp_code']; + $employeeEmpStatus = $row['emp_status']; + $employeeUserType = $row['user_type']; + // Initialize the client entry if it doesn't exist if (!isset($groupedData[$clientId])) { $groupedData[$clientId] = [ @@ -80,7 +100,7 @@ class DashboardController extends AdminController 'branches' => [] ]; } - + // Initialize the branch entry if it doesn't exist if (!isset($groupedData[$clientId]['branches'][$branchId])) { $groupedData[$clientId]['branches'][$branchId] = [ @@ -116,14 +136,14 @@ class DashboardController extends AdminController if (!empty($employeeUserType)) { $groupedData[$clientId]['branches'][$branchId]['emp_login']++; } - + // Increment emp_enroll if emp_status is not 'draft' if ($employeeEmpStatus !== 'draft') { $groupedData[$clientId]['branches'][$branchId]['emp_enroll']++; } } } - + // Re-index the arrays to match the expected structure foreach ($groupedData as &$client) { foreach ($client['branches'] as &$branch) { @@ -136,6 +156,7 @@ class DashboardController extends AdminController $session = \Config\Services::session(); $session->set('enrollment_data', json_encode($data)); // echo "
";
+        $data['pendingActionsData'] = $pendingActionsData;
         // print_r($data);die;
 
         
@@ -154,7 +175,7 @@ class DashboardController extends AdminController
         $userId = get_session_userid();
         $roleId = 5;
         $teamId = 1;
-    
+
         if ($userId != null && $roleId != null && $teamId != null) {
             $messages = $this->messageModel->getMessagesForUser($userId, $roleId, $teamId);
             return $this->respond(['status' => true, 'code' => 200, 'message' => $messages], 200);
@@ -163,7 +184,7 @@ class DashboardController extends AdminController
             return $this->respond(['status' => false, 'code' => 404, 'message' => 'No data found'], 200);
         }
     }
-    
+
 
     public function acknowledgeMessage($messageId)
     {
@@ -258,4 +279,41 @@ class DashboardController extends AdminController
         return json_encode(true);
     }
 
+    public function featch_dashboard_data($type)
+    {
+        $pendingActionsController = new PendingActionsController;
+        $pendingActionsData = $pendingActionsController->getPendingActionsForClientData();
+
+        $data = [];
+
+        if($type == 'insurer'){
+
+            $data = $pendingActionsData['uhid'];
+
+        }else if($type == 'TPA'){
+            $data = $pendingActionsData['tpa'];
+
+        }else if($type == 'I'){
+            $data = $pendingActionsData['inception'];
+
+        }else if($type == 'D'){
+            $data = $pendingActionsData['deletion'];
+
+        }else if($type == 'C'){
+            $data = $pendingActionsData['correction'];
+
+        }else if($type == 'SI'){
+            $data = $pendingActionsData['si_enhancement'];
+
+        }else if($type == 'policy'){
+            $data = $pendingActionsData['policy'];
+
+        }else if($type == 'ticket'){
+            $data = $pendingActionsData['uhid'];
+        }
+
+        return $this->respond(['status' => true, 'data' => $data], 200);
+    }
+
+
 }
diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php
index 2fbd2d09..2df33a79 100644
--- a/app/Controllers/EmpDataServiceController.php
+++ b/app/Controllers/EmpDataServiceController.php
@@ -26,6 +26,7 @@ use App\Models\MessageModel;
 use App\Models\UserMessageModel;
 use App\Models\CDMasterModel;
 use App\Models\InsurerExcelExportTemplateModel;
+use App\Models\ClientBranchModel;
 
 use App\Controllers\Jobs;
 use App\Controllers\JobWorker;
@@ -56,6 +57,7 @@ class EmpDataServiceController extends BaseController
     protected $userMessageModel;
     protected $CDMasterModel;
     protected $excelExportTemplateModel;
+    protected $clientBranchModel;
 
 
     public function __construct()
@@ -77,6 +79,7 @@ class EmpDataServiceController extends BaseController
         $this->userMessageModel          = new UserMessageModel();
         $this->CDMasterModel    = new CDMasterModel();
         $this->excelExportTemplateModel    = new InsurerExcelExportTemplateModel();
+        $this->clientBranchModel  = new ClientBranchModel();
 
     }
 
@@ -1785,7 +1788,7 @@ class EmpDataServiceController extends BaseController
                 'endorsement_no' => null,
                 'client_branch_id' => $client_branch_id,
                 'count' => $emp_count,
-                'event' => $file['event_type'],
+                'event_name' => $file['event_type'],
                 'policy_name' => $policy_name['policy_name'],
                 'user_id' => $user_id,
             ]]);
@@ -2830,7 +2833,7 @@ class EmpDataServiceController extends BaseController
             'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null,
             'endorsement_no' => $endorsement_id ?? null,
             'count' => $emp_count,
-            'event' => $file['event_type'],
+            'event_name' => $file['event_type'],
             'policy_name' => $policy_name['policy_name'],
             'user_id' => $user_id,
         ]]);
@@ -3345,7 +3348,7 @@ class EmpDataServiceController extends BaseController
             'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null,
             'endorsement_no' => $endorsement_id ?? null,
             'count' => $emp_count,
-            'event' => $file['event_type'],
+            'event_name' => $file['event_type'],
             'policy_name' => $policy_name['policy_name'],
             'user_id' => $user_id,
         ]]);
@@ -3770,38 +3773,52 @@ class EmpDataServiceController extends BaseController
     {
         if (!empty($arrayData)) {
 
-            $amount = $this->employeePolicyModel->query("
-                    SELECT SUM(rata_premimum + gst) AS total_sum
-                    FROM employee_polices
-                    WHERE id IN (" . implode(',', $arrayData['employeeIds']) . ")
-                ")->getRow();
 
-            $insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first();
-            $description = 'The following amount of Rs. ' . round($amount->total_sum, 2) . '/- has been debited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.';
-            
-            if(get_session_userid() == null){
+            $client_branch_data = $this->clientBranchModel->where('id', $arrayData['client_branch_id'])->first();
+            $units = json_decode($client_branch_data['units']);
+
+            // dd(json_decode($client_branch_data['units'])); 
+
+
+            foreach($units as $unit)
+            {
+
+                $amount = $this->employeePolicyModel->query("
+                        SELECT SUM(rata_premimum + gst) AS total_sum
+                        FROM employee_polices
+                        JOIN employees ON employees.id = employee_polices.employee_id
+                        WHERE employees.unit = '$unit'
+                        AND employee_polices.id IN (" . implode(',', $arrayData['employeeIds']) . ")
+                    ")->getRow();
+
+                if($amount){      
+
+                    $insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first();
+                    $description = 'The following amount of Rs. ' . round($amount->total_sum, 2) . '/- has been debited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event_name']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.';
+
+                    $data = [
+                        'amount' => $amount->total_sum ?? 0,
+                        'sub_type_id' => 4,
+                        'client_id' => $arrayData['client_id'],
+                        'client_policy_id' => $arrayData['client_policy_id'],
+                        'endorsement_no' => $arrayData['endorsement_no'] ?? null,
+                        'cd_ac_no' => $arrayData['cd_ac_no'] ?? null,
+                        'insurer_id' => $insurer_id['insurer_id'],
+                        'unit' => $unit,
+                        'description' => $description,
+                        'transaction_type' => 'Debit',
+                        'updated_by' => $arrayData['user_id'],
+                        'event_name' => $arrayData['event_name'],
+                        'is_active' => 1,
+                    ];
+
+                    $response = DepositHelper::saveDeposit($data,  $arrayData['user_id']);
+                }
 
             }
 
-
-            $data = [
-                'amount' => $amount->total_sum ?? 0,
-                'sub_type_id' => 4,
-                'client_id' => $arrayData['client_id'],
-                'client_policy_id' => $arrayData['client_policy_id'],
-                'endorsement_no' => $arrayData['endorsement_no'] ?? null,
-                'cd_ac_no' => $arrayData['cd_ac_no'] ?? null,
-                'insurer_id' => $insurer_id['insurer_id'],
-                'description' => $description,
-                'transaction_type' => 'Debit',
-                'updated_by' => $arrayData['user_id'],
-                'is_active' => 1,
-            ];
-            $response = DepositHelper::saveDeposit($data,  $arrayData['user_id']);
             return true;
-            // print_r($response);
-            // $query = $this->employeePolicyModel->getLastQuery();
-            // echo $query . "
"; + } else { return 0; @@ -3815,32 +3832,49 @@ class EmpDataServiceController extends BaseController if (!empty($arrayData)) { - $amount = $this->employeePolicyModel->query(" - SELECT SUM(rata_premimum + gst) AS total_sum - FROM employee_polices - WHERE id IN (" . implode(',', $arrayData['employeeIds']) . ") - ")->getRow(); + $client_branch_data = $this->clientBranchModel->where('id', $arrayData['client_branch_id'])->first(); + $units = json_decode($client_branch_data['units']); - $insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first(); - $description = 'The following amount of ' . round($amount->total_sum, 2) . ' has been credited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.'; + foreach($units as $unit) + { - $data = [ + $amount = $this->employeePolicyModel->query(" + SELECT SUM(rata_premimum + gst) AS total_sum + FROM employee_polices + JOIN employees ON employees.id = employee_polices.employee_id + WHERE employees.unit = '$unit' + AND id IN (" . implode(',', $arrayData['employeeIds']) . ") + ")->getRow(); + + if($amount){ + + $insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first(); + $description = 'The following amount of ' . round($amount->total_sum, 2) . ' has been credited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event_name']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.'; + + $data = [ + + 'amount' => $amount->total_sum, + 'sub_type_id' => 4, + 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, + 'insurer_id' => $insurer_id['insurer_id'], + 'unit' => $unit, + 'description' => $description, + 'transaction_type' => 'Debit', + 'updated_by' => $arrayData['user_id'], + 'event_name' => $arrayData['event_name'], + 'is_active' => 1, + ]; + + $response = DepositHelper::saveDeposit($data, $arrayData['user_id']); + } + } + + $msg = "SI Enhancement Cash Deposite Updated Successfully "; + return [$msg]; - 'amount' => $amount->total_sum, - 'sub_type_id' => 4, - 'client_id' => $arrayData['client_id'], - 'client_policy_id' => $arrayData['client_policy_id'], - 'endorsement_no' => $arrayData['endorsement_no'] ?? null, - 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, - 'insurer_id' => $insurer_id['insurer_id'], - 'description' => $description, - 'transaction_type' => 'Debit', - 'updated_by' => $arrayData['user_id'], - 'is_active' => 1, - ]; - $response = DepositHelper::saveDeposit($data, $arrayData['user_id']); - $msg = "SI Enhancement Cash Deposite Updated Successfully -- " . $description; - return [$msg, $response]; // print_r($response); // $query = $this->employeePolicyModel->getLastQuery(); // echo $query . "
"; @@ -3858,34 +3892,46 @@ class EmpDataServiceController extends BaseController // echo '
';
             // print_r($arrayData); die;
-            $amount = $this->employeePolicyModel->query("
-                SELECT SUM(rata_premimum + gst) AS total_sum
-                    FROM employee_polices
-                    WHERE id IN (" . implode(',', $arrayData['employeeIds']) . ")
-                ")->getRow();
 
-            $insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first();
-            $description = 'The following amount of ' . round($amount->total_sum, 2) . ' has been credited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.';
+            $client_branch_data = $this->clientBranchModel->where('id', $arrayData['client_branch_id'])->first();
+            $units = json_decode($client_branch_data['units']);
 
-            $data = [
+            foreach($units as $unit) {
 
-                'amount' => $amount->total_sum,
-                'sub_type_id' => 3,
-                'client_id' => $arrayData['client_id'],
-                'client_policy_id' => $arrayData['client_policy_id'],
-                'endorsement_no' => $arrayData['endorsement_no'] ?? null,
-                'cd_ac_no' => $arrayData['cd_ac_no'] ?? null,
-                'insurer_id' => $insurer_id['insurer_id'],
-                'description' => $description,
-                'transaction_type' => 'Credit',
-                'updated_by' => $arrayData['user_id'],
-                'is_active' => 1,
-            ];
-            $response = DepositHelper::saveDeposit($data, $arrayData['user_id']);
-            $msg = "Deletion Cash Deposite Updated Successfully -- " . $description;
-            return [$msg, $response];
+                $amount = $this->employeePolicyModel->query("
+                    SELECT SUM(rata_premimum + gst) AS total_sum
+                        FROM employee_polices
+                        JOIN employees ON employees.id = employee_polices.employee_id
+                        WHERE employees.unit = '$unit'
+                        AND id IN (" . implode(',', $arrayData['employeeIds']) . ")
+                    ")->getRow();
+                
+                if($amount){
 
-            return true;
+                    $insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first();
+                    $description = 'The following amount of ' . round($amount->total_sum, 2) . ' has been credited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event_name']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.';
+
+                    $data = [
+
+                        'amount' => $amount->total_sum,
+                        'sub_type_id' => 3,
+                        'client_id' => $arrayData['client_id'],
+                        'client_policy_id' => $arrayData['client_policy_id'],
+                        'endorsement_no' => $arrayData['endorsement_no'] ?? null,
+                        'cd_ac_no' => $arrayData['cd_ac_no'] ?? null,
+                        'insurer_id' => $insurer_id['insurer_id'],
+                        'description' => $description,
+                        'transaction_type' => 'Credit',
+                        'updated_by' => $arrayData['user_id'],
+                        'event_name' => $arrayData['event_name'],
+                        'is_active' => 1,
+                    ];
+
+                    $response = DepositHelper::saveDeposit($data, $arrayData['user_id']);
+                }
+            }
+            $msg = "Deletion Cash Deposite Updated Successfully -- ";
+            return [$msg];
             // print_r($response);
             // $query = $this->employeePolicyModel->getLastQuery();
             // echo $query . "
"; @@ -4062,12 +4108,9 @@ class EmpDataServiceController extends BaseController return $result; } - // ----------------------------------------------------------------------------------- - - public function readExcelToArray($file) { if ($file->isValid() && !$file->hasMoved()) { @@ -4102,8 +4145,6 @@ class EmpDataServiceController extends BaseController } } - - public function insertBatchFileAndBatchListForImportExcel($data, $ids) { @@ -4126,7 +4167,6 @@ class EmpDataServiceController extends BaseController return true; } - public function sendMailForDownloadingECard(array $ids) { @@ -4283,7 +4323,6 @@ class EmpDataServiceController extends BaseController public function getDataByFileId($file_id, $status = 'success') { - $data = $this->batchFileModel ->select('batch_files.*, clients.client_name, clients.short_name, policy_type.policy_type as policy_name, client_branch.branch_name') ->join('clients', 'clients.id = batch_files.client_id') @@ -4293,7 +4332,6 @@ class EmpDataServiceController extends BaseController ->where('batch_files.id', $file_id) ->first(); - if($status == 'success'){ $msg_txt = $data['client_name'] . '( ' . $data['branch_name'] . ' )' . ' - ' . $data['policy_name'] . ' - ' . $data['event_type'] . ' - ' . $data['actions'] . ' - ' . $data['insurer_or_tpa']; @@ -4313,8 +4351,6 @@ class EmpDataServiceController extends BaseController public function setPullNotification($data) { - - $array = ['message_text' => $data['msg_txt'], 'action_url' => $data['url'], 'msg_status' => $data['status'], 'msg_title' => $data['title']]; $jsonEncodeData = json_encode($array); @@ -4327,66 +4363,37 @@ class EmpDataServiceController extends BaseController 'message_type' => '1to1', ]; - $this->messageModel->insert($msg_data); - - } public function updatajson() { // $columns = [ - // ["column_index" => 0, "column_name" => "MEMBERID / EMPID", "db_column_name" => "emp_code"], - // ["column_index" => 1, "column_name" => "UHID", "db_column_name" => "uhid"], - // ["column_index" => 2, "column_name" => "GRADE", "db_column_name" => null], + // ["column_index" => 0, "column_name" => "SR NO", "db_column_name" => 'index'], + // ["column_index" => 1, "column_name" => "EmployeeId", "db_column_name" => "emp_code"], + // ["column_index" => 2, "column_name" => "UHID", "db_column_name" => "uhid"], // ["column_index" => 3, "column_name" => "DOJ", "db_column_name" => "emp_doj"], - // ["column_index" => 4, "column_name" => "INSURED NAME", "db_column_name" => "insured_name"], - // ["column_index" => 5, "column_name" => "ADDRESS 1", "db_column_name" => null], - // ["column_index" => 6, "column_name" => "ADDRESS 2", "db_column_name" => null], - // ["column_index" => 7, "column_name" => "CITY", "db_column_name" => null], - // ["column_index" => 8, "column_name" => "STATE", "db_column_name" => null], - // ["column_index" => 9, "column_name" => "PINCODE", "db_column_name" => null], - // ["column_index" => 10, "column_name" => "Age", "db_column_name" => "emp_age"], - // ["column_index" => 11, "column_name" => "DOB", "db_column_name" => "emp_dob"], - // ["column_index" => 12, "column_name" => "RELATION SHIP", "db_column_name" => "emp_relationship"], - // ["column_index" => 13, "column_name" => "Gender", "db_column_name" => "emp_gender"], - // ["column_index" => 14, "column_name" => "DOC", "db_column_name" => "doc"], - // ["column_index" => 15, "column_name" => "DOE", "db_column_name" => "doe"], - // ["column_index" => 16, "column_name" => "SUM INSURED", "db_column_name" => "basic_cover_si"], - // ["column_index" => 17, "column_name" => "PROPOSER NAME", "db_column_name" => null], - // ["column_index" => 18, "column_name" => "DOS", "db_column_name" => "dos"], - // ["column_index" => 19, "column_name" => "MOBILE NO", "db_column_name" => null], - // ["column_index" => 20, "column_name" => "EMAIL ID", "db_column_name" => null], - // ["column_index" => 21, "column_name" => "FATHER/HUSBAND NAME", "db_column_name" => null], - // ["column_index" => 22, "column_name" => "REMARKS", "db_column_name" => null], - // ["column_index" => 23, "column_name" => "FLAG STATUS", "db_column_name" => "flag_status"], - // ["column_index" => 24, "column_name" => "EXCEPTIONS", "db_column_name" => "exceptions"], - // ["column_index" => 25, "column_name" => "ABHA", "db_column_name" => null] - // ]; - - // $columns = [ - // ["column_index" => 0, "column_name" => "Sr.No", "db_column_name" => "index"], - // ["column_index" => 1, "column_name" => "Tata Aig Ref. No", "db_column_name" => "uhid"], - // ["column_index" => 2, "column_name" => "EMP ID", "db_column_name" => "emp_code"], - // ["column_index" => 3, "column_name" => "Name of Insured", "db_column_name" => "emp_name"], - // ["column_index" => 4, "column_name" => "GC Current Details", "db_column_name" => "old_value"], - // ["column_index" => 5, "column_name" => "Modified Details", "db_column_name" => "new_value"], - // ["column_index" => 6, "column_name" => "Revision W.E.F (DD/MM/YYYY)", "db_column_name" => null], - // ["column_index" => 7, "column_name" => "NEW TTD", "db_column_name" => null], - // ["column_index" => 8, "column_name" => "New Category's", "db_column_name" => null], - // ["column_index" => 9, "column_name" => "Remarks", "db_column_name" => "remarks"], - // ["column_index" => 10, "column_name" => "DOC", "db_column_name" => null], - // ["column_index" => 11, "column_name" => "Errors", "db_column_name" => null] + // ["column_index" => 4, "column_name" => "Name OF Insured", "db_column_name" => "emp_name"], + // ["column_index" => 5, "column_name" => "Age", "db_column_name" => "emp_age"], + // ["column_index" => 6, "column_name" => "Gender", "db_column_name" => "emp_gender"], + // ["column_index" => 7, "column_name" => "DOC", "db_column_name" => null], + // ["column_index" => 8, "column_name" => "TOTALSI", "db_column_name" => "basic_cover_si"], + // ["column_index" => 9, "column_name" => "DOS", "db_column_name" => "dateofexit"], + // ["column_index" => 10, "column_name" => "Mobile", "db_column_name" => 'emp_mobile'], + // ["column_index" => 11, "column_name" => "EmailID", "db_column_name" => 'emp_email_c'], + // ["column_index" => 12, "column_name" => "REMARKS", "db_column_name" => "remarks"], + // ["column_index" => 13, "column_name" => "FLAG STATUS", "db_column_name" => null], + // ["column_index" => 14, "column_name" => "EXCEPTIONS", "db_column_name" => null], + // ["column_index" => 15, "column_name" => "ABHA", "db_column_name" => null] // ]; + // $json = json_encode($columns); - // $this->excelExportTemplateModel->where('id', 31)->set('jsoncolumns', $json)->update(); + // $this->excelExportTemplateModel->where('id', 37)->set('jsoncolumns', $json)->update(); } - - } diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 4e87cdb1..42bd37bd 100644 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -7,6 +7,8 @@ use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; +use App\Helpers\DepositHelper; + use App\Models\EmployeeModel; use App\Models\EmployeePolicyModel; @@ -21,6 +23,7 @@ use App\Models\ClientPolicyModel; use App\Models\TPAModel; use App\Models\InsurerExcelExportTemplateModel; use App\Models\InsurerModel; +use App\Models\ClientDepositModel; use App\Controllers\Jobs; @@ -58,6 +61,7 @@ class EmployeeController extends AdminController protected $policiesModel; protected $excelExportTemplateModel; protected $insurerModel; + protected $cashDepositModel; public function __construct() { @@ -76,13 +80,14 @@ class EmployeeController extends AdminController $this->TPAModel = new TPAModel(); $this->policiesModel = new PolicesModel(); $this->insurerModel = new InsurerModel(); + $this->cashDepositModel = new ClientDepositModel(); } public function list() { // $model = new UserModel(); $data = []; - $data['status'] = ['draft' => 'Draft', 'active' => 'Active', 'inactive' => 'In-Active', 'expired' => 'Expired']; + $data['status'] = ['draft' => 'Draft', 'active' => 'Active', 'inactive' => 'In-Active', 'pending' => 'Pending']; if (count($this->request->getGet())) { $filterData = $this->request->getGet(); $data['employees'] = $this->employeePolicyModel->getEmployeePolicy( @@ -247,7 +252,7 @@ class EmployeeController extends AdminController //for TPA/insurer upload - $data['events'] = ['inception' => 'Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addition' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement']; + $data['events'] = ['inception' => 'Inception (Employee + Dependents)', 'missed_inception' => 'Missed Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addition' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement']; //for inception upload $data['actions'] = ['inception' => 'Inception (Employee + Dependents)', 'missed_inception' => 'Missed Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addtion' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement','enrollment' => 'Enrollment']; @@ -433,7 +438,7 @@ class EmployeeController extends AdminController if ($actions == 'export') { - if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition') { + if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition' || $event_type == 'missed_inception') { $return = $empDataServiceController->generateExcelForAdditionandInception($batch_data); @@ -555,7 +560,7 @@ class EmployeeController extends AdminController $batch_data['status'] = 'pending'; $batch_data['file_name'] = $filename; - if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition') { + if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition' || $event_type == 'missed_inception') { $file_id = $this->batchFileModel->insert($batch_data); @@ -818,7 +823,6 @@ class EmployeeController extends AdminController return redirect()->to(base_url('/employee/upload')); } - public function downloadFileList($file_id = null) { // $actionType = $this->request->getGet(); @@ -852,7 +856,6 @@ class EmployeeController extends AdminController } } - public function featchEmpList() { $client_id = $this->request->getGet('client_id'); @@ -864,7 +867,6 @@ class EmployeeController extends AdminController return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => $html], 200); } - public function viewUploadedEmployeeList() { @@ -913,7 +915,6 @@ class EmployeeController extends AdminController } } - public function getEmpCount($id = null) { @@ -928,7 +929,6 @@ class EmployeeController extends AdminController } - public function downloadFullExcelErrorFile($file_id, $rowIndex = 1, $colIndex = 1) { // Get file data from the database @@ -1162,115 +1162,56 @@ class EmployeeController extends AdminController { // $this->loadLayout('ecard_template/default_ecard'); - - $empDataServiceController = new EmpDataServiceController(); - $file_name = generate_filename("TCS", 'inception', 'export', 'insurer', 'policy', 'branch'); - - $export_data = [ - 'client_id' => 12, - 'client_policy_id' => 12, - 'client_branch_id' => 1, - 'insurer_or_tpa' => 'insurer', - 'event_type' => 'inception', - 'actions' => 'export', - 'file_name' => $file_name, - ]; - - $template_json = $this->clientPolicyModel - ->select('insurer_excel_export_template.jsoncolumns') - ->join('insurer_excel_export_template', 'insurer_excel_export_template.insurer_id = client_policy.insurer_id and insurer_excel_export_template.policy_type_id = client_policy.policy_type_id') - ->where('client_policy.id', $export_data['client_policy_id']) - ->where('insurer_excel_export_template.event_name', $export_data['event_type']) - ->where('insurer_excel_export_template.type_name', $export_data['actions']) - ->first(); - - $template_array = json_decode($template_json['jsoncolumns'], true); - - // dd($template_array); - - $objects = $this->employeePolicyModel->getInceptionEmployeeDataForExportExcel($export_data); - - $totals = 0; - foreach ($objects as $item) { - $totals += $item->total; - } - - dd($objects, $totals); - - $excel_data_info = generate_insurer_based_excel($template_array, $objects); - - // Generate Excel file - $tempFile = tmpfile(); - $success = generate_excel($excel_data_info['header'], $excel_data_info['data'], $tempFile, 1); - - // If Excel generation is successful - if ($success) { - - $random_number_count = 4; - $export_data['batch_code'] = generate_random_string($random_number_count); - $export_data['created_by'] = get_session_userid(); - - $insert = $this->batchFileModel->insert($export_data); - $batch_file_batch_code = $this->batchFileModel->where('id', $insert)->first(); - $batch_code = $batch_file_batch_code['batch_code']; - - // $this->insertBatchList(['batch_code' => $batch_code, 'batch_list_data' => $objects ]); - - $job_details = new Jobs(); - $r = Jobs::addJob(['job_name' => 'insertBatchList', 'payload' => ['batch_code' => $batch_code, 'user_id' => get_session_userid(), 'batch_list_data' => $objects]]); - - - // If batch operation is successful - if (true) { - - // Clear the output buffer to avoid any unwanted output - if (ob_get_level()) { - ob_end_clean(); - } - - // Set headers for Excel file download - header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - header('Content-Disposition: attachment; filename="' . $export_data['file_name'] . '"'); - header('Content-Transfer-Encoding: binary'); - header('Cache-Control: must-revalidate'); - header('Pragma: public'); - header('Expires: 0'); - - // Output file contents - rewind($tempFile); - fpassthru($tempFile); - - // Close and remove temporary file - fclose($tempFile); - - return true; // Excel file successfully generated and exported - - } else { - - return false; // Batch operation failed - } - } - - - + $data = [ + 'employeeIds' => [6,8,10], + 'client_id' => 12, + 'client_policy_id' => 12, + 'client_branch_id' => 1, + 'cd_ac_no' => '34567834567892', + 'endorsement_no' => null, + 'count' => 3, + 'event_name' =>'inception', + 'policy_name' => 'new policy', + 'user_id' => 1, + ]; + $empDataServiceController = new EmpDataServiceController(); + $empData= $empDataServiceController->cashDepositCalculationForInception($data); } - - public function truncateFileData() //truncateFileDataIn DB (de activate rows) + + //truncateFileDataIn DB (de activate rows) + public function truncateFileData($file_id, $role_id = null) { $file_id = $this->request->uri->getSegment(3); // $file_id = 112; $file = $this->fileModel->find($file_id); + $client_id = $file['client_id']; + $client_policy_id = $file['policy_id']; + $loggedInUserID = get_session_userid(); + + $policy_data = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + $cd_tranction = $this->cashDepositModel + ->where('client_id', $client_id) + ->where('insurer_id', $policy_data['insurer_id']) + ->where('event_name',$file['action']) + ->where('client_policy_id', $client_policy_id) + ->orderBy('id', 'desc') + ->first(); + // $file['action'] = 'si_enhancement'; // $result = []; // !dd($file); if ($file['action'] == 'inception' || $file['action'] == 'dependent_addition' || $file['action'] == 'addition') { $result = $this->employeeModel->getEmpListByFileId(file_id: $file_id, emp_status: ['active'], policy_status: ['active']); // ~dd($result); - if (count($result)) { - return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'File data already processed'], 200); + if (count($result) && $role_id == null) { + if(get_role_id() == 1 || get_role_id() == 5){ + return $this->respond(['role' => get_role_id(), 'dataStatus' => false, 'code' => 404, 'message' => 'File data already processed. Do you want to truncate data from uploaded file?'], 200); + }else{ + return $this->respond(['role' => get_role_id(), 'dataStatus' => false, 'code' => 404, 'message' => 'File data already processed'], 200); + } } else { //update emp and emp plocies @@ -1283,9 +1224,30 @@ class EmployeeController extends AdminController //update file status $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + if($cd_tranction){ + + $cd_data = [ + 'amount' => $cd_tranction['amount'], + 'sub_type_id' => 8, + 'endorsement_no' => null, + 'insurer_id' =>$policy_data['insurer_id'], + 'description' => 'The policy Truncated by Admin or Head', + 'transaction_type' => 'Credit', + 'updated_by' => 1, + 'client_id' => $client_id, + 'client_policy_id' => $client_policy_id, + 'cd_ac_no' => $policy_data['cd_ac_no'] ?? null, + 'event_name' => $file['action'], + ]; + + $response = DepositHelper::saveDeposit($cd_data, $loggedInUserID); + } + return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => round($affectedRows / 2)], 200); } + } else if ($file['action'] == 'si_enhancement' || $file['action'] == 'correction' || $file['action'] == 'deletion') { + $res = $this->empEndorsementModel->select(['count(id) as count']) ->where('emp_endorsement.file_id', $file_id) ->groupStart() @@ -1294,18 +1256,48 @@ class EmployeeController extends AdminController ->groupEnd() ->get() ->getResult(); + // print_r($this->empEndorsementModel->getLastQuery()); // echo $res[0]->count;die(); - if ($res[0]->count == 0) { + if ($res[0]->count == 0 || $role_id == 5 || $role_id == 1) { //update truncated status to db $this->empEndorsementModel->where('file_id', $file_id) ->set(['status' => 'truncated']) ->update(); //update file status $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + + if($cd_tranction && $file['action'] != 'correction'){ + + $transaction_type = 'Credit'; + if($file['action'] == 'deletion'){ + $transaction_type = 'Debit'; + } + + $cd_data = [ + 'amount' => $cd_tranction['amount'], + 'sub_type_id' => 8, + 'endorsement_no' => null, + 'insurer_id' =>$policy_data['insurer_id'], + 'description' => 'The policy Truncated by Admin or Head', + 'transaction_type' => $transaction_type, + 'updated_by' => 1, + 'client_id' => $client_id, + 'client_policy_id' => $client_policy_id, + 'cd_ac_no' => $policy_data['cd_ac_no'] ?? null, + 'event_name' => $file['action'], + ]; + + $response = DepositHelper::saveDeposit($cd_data, $loggedInUserID); + } + return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => 'success'], 200); } else { - return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'File data already processed'], 200); + if(get_role_id() == 1 || get_role_id() == 5){ + return $this->respond(['role' => get_role_id(), 'dataStatus' => false, 'code' => 404, 'message' => 'File data already processed. Do you want to truncate data from uploaded file?'], 200); + }else{ + return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'File data already processed'], 200); + } } } } diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 1458100e..01735912 100644 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -954,7 +954,7 @@ class EmployeeRestController extends AdminController public function getEmployeePolicy() { - // try { + try { $id = $this->request->getGet('id'); $emp_code = $this->request->getGet('emp_code'); @@ -1114,21 +1114,21 @@ class EmployeeRestController extends AdminController // Add family floter buttons placement data for FE validation if(count($floters)){ - foreach ($floters as $familyFloatesValue) { + foreach ($floters as $familyFloatesValue) { - $temp2['is_value_exist'] = false; - $temp2['data']['family_floater_key'] = $familyFloatesValue; - $temp2['data']['client_policy_id'] = $array->ClientPolicyId; - $temp2['data']['button_name'] = 'Add '.ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue))); - $temp2['data']['form_type'] = preg_replace('/\d/', '', $familyFloatesValue); - - - $temp2['data']['age_validation'] = $this->getAgeRange($decodedArray,$familyFloatesValue); + $temp2['is_value_exist'] = false; + $temp2['data']['family_floater_key'] = $familyFloatesValue; + $temp2['data']['client_policy_id'] = $array->ClientPolicyId; + $temp2['data']['button_name'] = 'Add '.ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue))); + $temp2['data']['form_type'] = preg_replace('/\d/', '', $familyFloatesValue); + + + $temp2['data']['age_validation'] = $this->getAgeRange($decodedArray,$familyFloatesValue); - array_push($data,$temp2); + array_push($data,$temp2); + } } - } $array->mapped_family_floaters = $data; $array->type = "Group Medical Coverage"; @@ -1164,9 +1164,9 @@ class EmployeeRestController extends AdminController }else{ return $this->respond(['status' => 'failed','code' => 404,'data' => []], 200); } - // } catch (\Exception $e) { - // return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500); - // } + } catch (\Exception $e) { + return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500); + } } @@ -1178,6 +1178,7 @@ class EmployeeRestController extends AdminController ->where('client_branch_id',$client_branch_id) ->where('is_active', 1 ) ->where('is_addon_value',0)->findAll(); + // return $employeeData; foreach ($GmcParrentsPolicy as $key => $array) { @@ -1241,6 +1242,7 @@ class EmployeeRestController extends AdminController // Convert familyFloaters terms data to plain array $floters = $this->FloterConvertion($familyFloates); + $data = []; foreach ($floters as $familyFloatesValue) { $dependent = preg_replace('/\d/', '', $familyFloatesValue); @@ -1363,8 +1365,10 @@ class EmployeeRestController extends AdminController $result = ' '; foreach ($array as $key => $value) { if ($value > 0) { - if($value != 0 && $key ==='either-parents-pil') { + if($value == 1 && $key ==='either-parents-pil') { $result .= ' + Either 2 Parents or 2 Parents in law'; + }if($value == 2 && $key ==='either-parents-pil') { + $result .= ' + Any 2 of Parents and Parents in law'; }else if($value != 0 && $key ==='spouse') { $string = str_replace('-', ' ', $key); $string = ucwords($string); @@ -1373,15 +1377,29 @@ class EmployeeRestController extends AdminController $result = 'Can Add Self '; }else if($value != 0 && $key ==='childrens') { if($value > 1){ $result .= ' + '.$value.' Children'; }else{ $result .= ' + '.$value.' Child'; } + }else if($value != 0 && $key ==='elders_count') { + }else{ $string = str_replace('-', ' ', $key); $string = ucwords($string); $result .= ' + '.$value.' '.$string; } + + } } + + $first_two_chars = substr($result, 0, 3); + + if($first_two_chars == " +"){ + $modified_string = substr($result, 3); + return "Can Add ".$modified_string; + }else{ + return $result; + } + return substr($result, 0, 2) !== " +"; - return $result; + } public function getClientDetails() @@ -1874,7 +1892,7 @@ class EmployeeRestController extends AdminController { $transformed_famility_details = transform_db_data_to_excel($family); // print_r($transformed_famility_details);die(); - $data = calculate_premimum($transformed_famility_details,$policy_terms,$slab_details,$file,$default_si); + $data = calculate_premium($transformed_famility_details,$policy_terms,$slab_details,$file,$default_si); // dd($data); $employee_data_group_by_family[$emp_id] = $data; @@ -2404,7 +2422,8 @@ class EmployeeRestController extends AdminController $firebase->send($message); return $this->response->setJSON(['status' => 'success']); } catch (MessagingException $e) { - return $this->response->setJSON(['status' => 'error', 'message' => $e->getMessage()]); + //return $this->response->setJSON(['status' => 'error', 'message' => $e->getMessage()]); + log_message('error', $e->getMessage()); } } diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index 0a6a9ba1..4ddd51e6 100644 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -161,7 +161,7 @@ class EmployeeServiceController extends AdminController 'format' => null, 'allowed_values' => null, 'custom' => 'check_si', - 'params' => ['row', 'policy_terms', 'slab_details'] + 'params' => ['row', 'policy_details', 'slab_details'] ], 'doc' => [ 'col_idx' => 7, @@ -1496,17 +1496,43 @@ class EmployeeServiceController extends AdminController if(!count($existing_endorsements)) { //transform data to send + + //get applicable slab rate for current member relation + $pre_rack_rate_name = ''; + $applicable_rack_rate_name = ''; + $applicable_rack_rate_master = ''; foreach ($slab_details['slab_rates'] as $skey => $slab_value) { - if($slab_value['si'] == $row[3]) + if($pre_rack_rate_name != $slab_value['rack_rate_name']) { - $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); - break; + $pre_rack_rate_name = $slab_value['rack_rate_name']; + $rack_rate_json = json_decode($slab_value['additional_relationship']); + if(in_array(strtolower($employee['relationship']), $rack_rate_json) && $rack_rate_json[ strtolower($employee['relationship']) ] != 0 && $rack_rate_json[ strtolower($employee['relationship']) ] != NA) + { + $applicable_rack_rate_name = $slab_value['rack_rate_name']; + $applicable_rack_rate_master = $slab_value['grid_master']; + break; + } } } + + //get max age,max count of the familiy + $max_age_and_max_count_of_current_member = $this->employeeModel->getFamiliyCountAndMaxage($employee['emp_code']); + //transform SI excel row data as inception excel OR premium calculateable fomart + + $data = transform_si_excel_row_to_calculatable_format(employee: $employee,employee_policy: $employee_policy,maxage_and_maxcount: $max_age_and_max_count_of_current_member,slab_details: $slab_details,applicable_slab_name: $applicable_rack_rate_name,augmented_si: $row[3],grid_master: $applicable_rack_rate_master); + $policy_terms = $this->clientPolicyModel->getPolicyDetails($file['client_id'],$file['policy_id']); + //grouping slab details by rack rate name + $temp_slab_rates = group_slab_rates_basedon_name($slab_details); + + $calculated_data = premium_calculation_manager($data,$policy_terms,$temp_slab_rates,$row[3]); + + $group_key = rand(100000, 999999); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $calculated_data['policy_details']['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + + } @@ -1522,109 +1548,114 @@ class EmployeeServiceController extends AdminController // insert or update in db for inception addition depent addition - public function employeesOnboardProcess($params) + public function employeesOnboardProcess($params) { $familiy_data = $params['familiy_data']; $file = $params['file']; foreach($familiy_data as $fkey => $value) { - if($file['id'] == null || $value['temp']['source'] == 'excel' || (($file['action'] == 'dependent_addition' && ($value['temp']['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($value['temp']['premium_type'] == 2 || $value['temp']['premium_type'] == null)))) //insert data come from excel and from db i.e. ( $file['id'] == null for enrollment data) + if(is_array($value)) { - - $employee = $this->employeeModel->checkExistingEmp($value,$file['client_branch_id']); - $policy_data = $value['policy_details']; - $temp = $value['temp']; - unset($value['policy_details']); - unset($value['temp']); - // Kint::dump($value); - // Kint::dump($temp); - // Kint::dump($policy_data); - // echo '---------------------------------------'; - - //start implemet of si enhancement of grid type 10,11 - if(count($employee) && $file['action'] == 'dependent_addition' && $temp['source'] == 'db' && in_array($value['temp']['grid_id'],[10,11]) && ( ($value['temp']['premium_type'] == 1 && (strtolower($value['relationship']) == 'self' || $temp['acting_self'])) || ($value['temp']['premium_type'] == 2 || $value['temp']['premium_type'] == null))) - { - $log_message = 'Employee record from DB,Checking SI for - '.$employee[0]['name'].'('.$employee[0]['emp_code'].')'; - $this->myLogger->logme('error',$log_message); - $res = $this->employeesSIEnhanceProcessWhileOnbboard(employee:$employee[0],policy_data: $policy_data,file:$file);// where employee holds existing emp data and policy_data holds new si enhancement - break;//skip db employee - } - //end implemet of si enhancement of grid type - - //save employee table - $value['relationship'] = ucfirst(trim($value['relationship'])); - if(count($employee)) - { - $value['updated_by'] = $file['created_by']; - $value['id'] = $employee[0]['id']; - $value['emp_status'] = 'active'; - $value['client_branch_id'] = $file['client_branch_id']; - $log_message = 'Update Employee - '.$employee[0]['name'].'('.$employee[0]['emp_code'].') with PK '.$employee[0]['id']; - // $this->myLogger->logme('error',('Update - ' . $employee[0]['id'].' - '. $employee[0]['emp_code'] .' - '.$employee[0]['name'])); - // echo 'insert emp'; - } - else - { - $value['emp_status'] = 'active'; - $value['created_by'] = $file['created_by']; - $value['client_branch_id'] = $file['client_branch_id']; - $log_message = 'Insert Employee- '.$value['name'] .'('.$value['emp_code'] .') with PK '; - // $this->myLogger->logme('error',('Insert - ' . $value['emp_code'] .' - '. $value['name'])); - // echo 'update emp'; - } - - $this->employeeModel->save($value); - $emp_id = $this->employeeModel->getInsertID(); - if($emp_id != 0){ $log_message .= $emp_id; } - else{ $emp_id = $employee[0]['id']; } - - $this->myLogger->logme('error',$log_message); - - //save policy table - $employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id,'client_policy_id' => $file['policy_id']]); - if(count($employee_policy)) - { - $policy_data['updated_by'] = $file['created_by']; - $policy_data['id'] = $employee_policy[0]['id']; - $policy_data['status'] = 'active'; - - $log_message = 'Update Employee Policy for '. $value['name'].'('. $value['emp_code'].') with PK- ' . $employee_policy[0]['id'] .' client policy ID '.$employee_policy[0]['client_policy_id'].' with SI '.$policy_data['basic_cover_si']; - // echo 'insert policy'; - } - else - { - $policy_data['employee_id'] = $emp_id; - $policy_data['client_policy_id'] = $file['policy_id']; - $policy_data['created_by'] = $file['created_by']; - $policy_data['status'] = 'active'; - $log_message = 'Insert Employee Policy for '. $value['name'].'('. $value['emp_code'].') - client policy id -'. $file['policy_id'].' - with SI '.$policy_data['basic_cover_si']; - // echo 'update policy'; - } - - $this->employeePolicyModel->save($policy_data); - $emp_policy_id = $this->employeePolicyModel->getInsertID(); - if($emp_policy_id != 0)//emp policy inserted - { - $log_message .= ' with PK ' . $emp_policy_id; - - //make endorsement entry if action is addition OR Dependt addition - if(($file['action'] == 'missed_inception' || $file['action'] == 'dependent_addition' || $file['action'] == 'addition') && $temp['source'] == 'excel') + + if($file['id'] == null || $value['temp']['source'] == 'excel' || (($file['action'] == 'dependent_addition' && ($value['temp']['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($value['temp']['premium_type'] == 2 || $value['temp']['premium_type'] == null)))) //insert data come from excel and from db i.e. ( $file['id'] == null for enrollment data) { - $log_message = $file['action'].' - endorsement'. $value['emp_code'].' - '.$value['name'].' - with policy id'.$emp_policy_id; - $this->myLogger->logme('error',$log_message); - $actions = ($file['action'] == 'dependent_addition' ? 'da' : ($file['action'] == 'addition' ? 'a' : NULL)); - $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_code' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'name' => $value['name'],'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by']]; - $this->employeeEndorsementforAddtionAndDependentAddition($addition_endorse_data); - } + + $employee = $this->employeeModel->checkExistingEmp($value,$file['client_branch_id']); + $policy_data = $value['policy_details']; + $temp = $value['temp']; + unset($value['policy_details']); + unset($value['temp']); + // Kint::dump($value); + // Kint::dump($temp); + // Kint::dump($policy_data); + // echo '---------------------------------------'; + + //start implemet of si enhancement of grid type 10,11 + if(count($employee) && $file['action'] == 'dependent_addition' && $temp['source'] == 'db' && in_array($value['temp']['grid_id'],[10,11]) && ( ($value['temp']['premium_type'] == 1 && (strtolower($value['relationship']) == 'self' || $temp['acting_self'])) || ($value['temp']['premium_type'] == 2 || $value['temp']['premium_type'] == null))) + { + $log_message = 'Employee record from DB,Checking SI for - '.$employee[0]['name'].'('.$employee[0]['emp_code'].')'; + $this->myLogger->logme('error',$log_message); + $res = $this->employeesSIEnhanceProcessWhileOnbboard(employee:$employee[0],policy_data: $policy_data,file:$file);// where employee holds existing emp data and policy_data holds new si enhancement - } - else{ $emp_policy_id = $employee_policy[0]['id']; } + break;//skip db employee + } + //end implemet of si enhancement of grid type + + //save employee table + $value['relationship'] = ucfirst(trim($value['relationship'])); + if(count($employee)) + { + $value['updated_by'] = $file['created_by']; + $value['id'] = $employee[0]['id']; + $value['emp_status'] = 'active'; + $value['client_branch_id'] = $file['client_branch_id']; + $log_message = 'Update Employee - '.$employee[0]['name'].'('.$employee[0]['emp_code'].') with PK '.$employee[0]['id']; + // $this->myLogger->logme('error',('Update - ' . $employee[0]['id'].' - '. $employee[0]['emp_code'] .' - '.$employee[0]['name'])); + // echo 'insert emp'; + } + else + { + $value['emp_status'] = 'active'; + $value['created_by'] = $file['created_by']; + $value['client_branch_id'] = $file['client_branch_id']; + $log_message = 'Insert Employee- '.$value['name'] .'('.$value['emp_code'] .') with PK '; + // $this->myLogger->logme('error',('Insert - ' . $value['emp_code'] .' - '. $value['name'])); + // echo 'update emp'; + } + + $this->employeeModel->save($value); + $emp_id = $this->employeeModel->getInsertID(); + if($emp_id != 0){ $log_message .= $emp_id; } + else{ $emp_id = $employee[0]['id']; } + + $this->myLogger->logme('error',$log_message); + + //save policy table + $employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id,'client_policy_id' => $file['policy_id']]); + if(count($employee_policy)) + { + $policy_data['updated_by'] = $file['created_by']; + $policy_data['id'] = $employee_policy[0]['id']; + $policy_data['status'] = 'active'; + + $log_message = 'Update Employee Policy for '. $value['name'].'('. $value['emp_code'].') with PK- ' . $employee_policy[0]['id'] .' client policy ID '.$employee_policy[0]['client_policy_id'].' with SI '.$policy_data['basic_cover_si']; + // echo 'insert policy'; + } + else + { + $policy_data['employee_id'] = $emp_id; + $policy_data['client_policy_id'] = $file['policy_id']; + $policy_data['created_by'] = $file['created_by']; + $policy_data['status'] = 'active'; + $log_message = 'Insert Employee Policy for '. $value['name'].'('. $value['emp_code'].') - client policy id -'. $file['policy_id'].' - with SI '.$policy_data['basic_cover_si']; + // echo 'update policy'; + } + + $this->employeePolicyModel->save($policy_data); + $emp_policy_id = $this->employeePolicyModel->getInsertID(); + if($emp_policy_id != 0)//emp policy inserted + { + $log_message .= ' with PK ' . $emp_policy_id; + + //make endorsement entry if action is addition OR Dependt addition + if(($file['action'] == 'missed_inception' || $file['action'] == 'dependent_addition' || $file['action'] == 'addition') && $temp['source'] == 'excel') + { + $log_message = $file['action'].' - endorsement'. $value['emp_code'].' - '.$value['name'].' - with policy id'.$emp_policy_id; + $this->myLogger->logme('error',$log_message); + $actions = ($file['action'] == 'dependent_addition' ? 'da' : ($file['action'] == 'addition' ? 'a' : NULL)); + $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_code' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'name' => $value['name'],'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by']]; + $this->employeeEndorsementforAddtionAndDependentAddition($addition_endorse_data); + } + + } + else{ $emp_policy_id = $employee_policy[0]['id']; } - $this->myLogger->logme('error',$log_message); + $this->myLogger->logme('error',$log_message); }// if end - }// for end + }// is array check end + }// for end }//function end diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index 18e73a8e..603f9e51 100644 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -1062,10 +1062,9 @@ class MasterController extends AdminController //start CD Master list public function CDMasterList() { - $data['CD_Master_Data'] = $this->CDMasterModel->getCDMasterList(); - $data['insurers'] = $this->insurerModel->findAll(); - $data['clients'] = $this->clientModel->findAll(); + $data['insurers'] = $this->insurerModel->where('is_active', 1)->findAll(); + $data['clients'] = $this->clientModel->where('is_active', 1)->findAll(); $this->loadLayout('cd_master_list', $data); } @@ -1087,6 +1086,7 @@ class MasterController extends AdminController 'insurer_id' => $data['insurer_id'], 'description' => 'opening Amount', 'transaction_type' => 'Credit', + 'event_name' => null, 'updated_by' => 1, ]; @@ -1157,7 +1157,12 @@ class MasterController extends AdminController public function getCDMasterDataByID($id = null) { - $cd_data = $this->CDMasterModel->where('id', $id)->first(); + $cd_data = $this->CDMasterModel + ->where('id', $id) + ->where('is_active', 1) + ->first(); + + // convert the date formate 2000-01-01 to 01-01-2000 $cd_data['opening_date'] = date('d-m-Y', strtotime($cd_data['opening_date'])); if ($cd_data) { @@ -1169,7 +1174,10 @@ class MasterController extends AdminController public function checkUniqueCDAccountNumber($AccountNumber) { - $uniqueAC = $this->CDMasterModel->where('cd_ac_no', $AccountNumber)->findAll(); + $uniqueAC = $this->CDMasterModel + ->where('cd_ac_no', $AccountNumber) + ->where('is_active', 1) + ->findAll(); if($uniqueAC != null){ return $this->respond(['status' => true, 'message' => 'The CD Account Number is Already Exist', 'code' => 200], 200); @@ -1184,7 +1192,18 @@ class MasterController extends AdminController $this->myLogger->logme('error','CDMaster Remove function called'); $data['updated_by'] = get_session_userid(); $data['is_active'] = 0; - $update = $this->CDMasterModel->where('id', $id)->set($data)->update(); + $cash_transaction_data = $this->CDMasterModel->where('id', $id)->first(); + + $update = $this->CDMasterModel->where('id', $id)->set($data)->update(); + + $cd_tranction_update = $this->clientDepositModel + ->where('client_id', $cash_transaction_data['client_id']) + ->where('insurer_id', $cash_transaction_data['insurer_id']) + ->where('cd_ac_no', $cash_transaction_data['cd_ac_no']) + ->where('sub_type', 7) + ->set($data) + ->update(); + if($update){ return $this->respond(['status' => true,'code' => 200], 200); }else{ diff --git a/app/Controllers/PendingActionsController.php b/app/Controllers/PendingActionsController.php index b47a4b2f..bb8f2e92 100644 --- a/app/Controllers/PendingActionsController.php +++ b/app/Controllers/PendingActionsController.php @@ -7,7 +7,6 @@ use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -use App\Helpers\DepositHelper; use App\Helpers\MailHelper; use App\Helpers\sendMailNotification; @@ -43,10 +42,10 @@ class PendingActionsController extends AdminController public function __construct() { - //section + //session set_session_context('PendingActionsController Called'); - //services + //log services $this->myLogger = \Config\Services::mylogger(); $this->db = \Config\Database::connect(); @@ -60,7 +59,7 @@ class PendingActionsController extends AdminController $this->empEndorsementModel = new EmpEndorsementModel(); } - + //for AJAX public function getPendingActions() { //get pending actions like inception, corrections,deletions,SI enhanccnement to users @@ -71,12 +70,144 @@ class PendingActionsController extends AdminController $deletion = $this->getPendingActionForDeletion(); $tpa = $this->getPendingActionForTPAIDEmpty(); $uhid = $this->getPendingActionForUHIDEmpty(); + $PolicyRenewalData = $this->getPolicyRenewalDataForAllClient(); + // dd($inception, $si_enhancement, $correction, $deletion, $tpa, $uhid); - $data = ['inception' => $inception, 'correction' => $correction, 'si_enhancement' => $si_enhancement, 'deletion' => $deletion, 'tpa' => $tpa, 'uhid' => $uhid]; + $data = ['inception' => $inception, 'correction' => $correction, 'si_enhancement' => $si_enhancement, 'deletion' => $deletion, 'tpa' => $tpa, 'uhid' => $uhid, 'policy' => $PolicyRenewalData]; return $this->respond($data); } + + //for NORMAL + public function getPendingActionsForClientData() + { + + $inception = $this->getPendingActionForInception(); + $correction = $this->getPendingActionForCorrection(); + $si_enhancement = $this->getPendingActionForSIEnhancement(); + $deletion = $this->getPendingActionForDeletion(); + $tpa = $this->getPendingActionForTPAIDEmpty(); + $uhid = $this->getPendingActionForUHIDEmpty(); + $PolicyRenewalData = $this->getPolicyRenewalDataForAllClient(); + + // dd($inception, $si_enhancement, $correction, $deletion, $tpa, $uhid); + + $data = ['inception' => $inception, 'correction' => $correction, 'si_enhancement' => $si_enhancement, 'deletion' => $deletion, 'tpa' => $tpa, 'uhid' => $uhid, 'policy' => $PolicyRenewalData]; + return $data; + } + + //for only COUNT + public function getPendingActionsForDashBoard() + { + $tpa = $this->getPendingActionForTPAIDEmpty(); + $uhid = $this->getPendingActionForUHIDEmpty(); + $deletion = $this->getPendingActionForDeletion(); + $inception = $this->getPendingActionForInception(); + $ticketData = $this->getTicketsDataForDashBoard(); + $correction = $this->getPendingActionForCorrection(); + $si_enhancement = $this->getPendingActionForSIEnhancement(); + $PolicyRenewalData = $this->getPolicyRenewalDataForAllClient(); + + $uhid_export_count = []; + $uhid_not_export_count = []; + foreach ($uhid as $value) { + if($value['batch_export_count'] == 1){ + $uhid_export_count[] = $value['batch_export_count']; + }else{ + $uhid_not_export_count[] = $value['batch_export_count']; + } + } + $tpa_export_count = []; + $tpa_not_export_count = []; + foreach ($tpa as $value) { + if($value['batch_export_count'] == 1){ + $tpa_export_count[] = $value['batch_export_count']; + }else{ + $tpa_not_export_count[] = $value['batch_export_count']; + } + } + $deletion_export_count = []; + $deletion_not_export_count = []; + foreach ($deletion as $value) { + if($value['batch_export_count'] == 1){ + $deletion_export_count[] = $value['batch_export_count']; + }else{ + $deletion_not_export_count[] = $value['batch_export_count']; + } + } + $correction_export_count = []; + $correction_not_export_count = []; + foreach ($correction as $value) { + if($value['batch_export_count'] == 1){ + $correction_export_count[] = $value['batch_export_count']; + }else{ + $correction_not_export_count[] = $value['batch_export_count']; + } + } + $si_export_count = []; + $si_not_export_count = []; + foreach ($si_enhancement as $value) { + if($value['batch_export_count'] == 1){ + $si_export_count[] = $value['batch_export_count']; + }else{ + $si_not_export_count[] = $value['batch_export_count']; + } + } + + // dd($uhid_export_count, $tpa_export_count ,$deletion_export_count, $correction_export_count, $si_export_count, $ticketData, $inception, $si_enhancement, $correction, $deletion, $tpa, $uhid, $PolicyRenewalData); + + $inception = count($inception); + $correction = count($correction); + $si_enhancement = count($si_enhancement); + $deletion = count($deletion); + $tpa = count($tpa); + $uhid = count($uhid); + $PolicyRenewalData = count($PolicyRenewalData); + $ticketData = count($ticketData); + + $uhid_export_count = count($uhid_export_count); + $tpa_export_count = count($tpa_export_count); + $deletion_export_count = count($deletion_export_count); + $correction_export_count = count($correction_export_count); + $si_export_count = count($si_export_count); + + $uhid_not_export_count = count($uhid_not_export_count); + $tpa_not_export_count = count($tpa_not_export_count); + $deletion_not_export_count = count($deletion_not_export_count); + $correction_not_export_count = count($correction_not_export_count); + $si_not_export_count = count($si_not_export_count); + + + // dd($inception, $si_enhancement, $correction, $deletion, $tpa, $uhid, $PolicyRenewalData); + + $data = [ + 'inception' => $inception, + 'correction' => $correction, + 'si_enhancement' => $si_enhancement, + 'deletion' => $deletion, + 'tpa' => $tpa, + 'uhid' => $uhid, + 'PolicyRenewalData' => $PolicyRenewalData, + 'ticketData' => $ticketData, + + 'uhid_export_count' => $uhid_export_count, + 'tpa_export_count' => $tpa_export_count, + 'deletion_export_count' => $deletion_export_count, + 'correction_export_count' => $correction_export_count, + 'si_export_count' => $si_export_count, + + 'uhid_not_export_count' => $uhid_not_export_count, + 'tpa_not_export_count' => $tpa_not_export_count, + 'deletion_not_export_count' => $deletion_not_export_count, + 'correction_not_export_count' => $correction_not_export_count, + 'si_not_export_count' => $si_not_export_count, + ]; + return $data; + } + + + public function getPendingActionForInception() @@ -121,7 +252,6 @@ class PendingActionsController extends AdminController return $results; } - public function getPendingActionForCorrection() { @@ -152,6 +282,7 @@ class PendingActionsController extends AdminController clients.id as client_id, client_branch.id as branch_id, client_branch.branch_name, + policy_type.policy_type as policy_name, emp_endorsement.id, emp_endorsement.pk, emp_endorsement.endorsement_id, @@ -161,10 +292,20 @@ class PendingActionsController extends AdminController emp_endorsement.actions, emp_endorsement.name, emp_endorsement.status, - employees.name as ename + employees.name as ename, + ( + SELECT COUNT(*) + FROM batch_files bl + WHERE bl.client_id = clients.id + AND bl.actions = "export" + AND bl.event_type = "correction" + AND bl.insurer_or_tpa = "tpa" + ) AS export_count ') ->join('employees', 'emp_endorsement.pk = employees.id AND employees.is_active = 1 AND employees.emp_status = \'active\'') ->join('clients', 'employees.client_id = clients.id AND clients.is_active = 1', 'left') + ->join('client_policy', 'client_policy.client_id = clients.id AND clients.is_active = 1', 'left') + ->join('policy_type', 'client_policy.policy_type_id = policy_type.id ') ->join('client_branch', 'client_branch.id = employees.client_branch_id', 'left') ->where([ 'emp_endorsement.actions' => 'c', @@ -195,14 +336,16 @@ class PendingActionsController extends AdminController $results = $query->getResultArray(); - $filteredResults = array_filter($results, function ($value) { - return $value['subquery_count'] != 0; - }); + $filteredResults = []; + foreach ($results as $value) { + if ($value['subquery_count'] != 0) { + $filteredResults[] = $value; + } + } return $filteredResults; } - public function getPendingActionForSIEnhancement() { @@ -282,14 +425,16 @@ class PendingActionsController extends AdminController $results = $query->getResultArray(); - $filteredResults = array_filter($results, function ($value) { - return $value['subquery_count'] != 0; - }); + $filteredResults = []; + foreach ($results as $value) { + if ($value['subquery_count'] != 0) { + $filteredResults[] = $value; + } + } return $filteredResults; } - public function getPendingActionForDeletion() { @@ -369,14 +514,16 @@ class PendingActionsController extends AdminController // Fetch the results $results = $query->getResultArray(); - $filteredResults = array_filter($results, function ($value) { - return $value['subquery_count'] != 0; - }); - + $filteredResults = []; + foreach ($results as $value) { + if ($value['subquery_count'] != 0) { + $filteredResults[] = $value; + } + } + return $filteredResults; } - public function getPendingActionForUHIDEmpty() { // Subquery for batch_export_count @@ -425,7 +572,6 @@ class PendingActionsController extends AdminController return $results; } - public function getPendingActionForTPAIDEmpty() { @@ -483,4 +629,86 @@ class PendingActionsController extends AdminController return $results; } + + public function getPolicyRenewalDataForAllClient() + { + $PolicyRenewalData = $this->clientPolicyModel + ->select(' + clients.client_name, + client_branch.branch_name, + policy_type.policy_type as policy_name, + client_policy.policy_end_date, + client_branch.id as branch_id + ') + ->join('clients', 'clients.id = client_policy.client_id') + ->join('client_branch', 'client_branch.id = client_policy.client_branch_id') + ->join('policy_type', 'policy_type.id = client_policy.policy_type_id') + ->where('client_policy.is_active', 1) + ->where('client_policy.policy_status', 0) + ->where('clients.is_active', 1) + ->where('client_branch.is_active', 1) + ->where('client_policy.policy_end_date < DATE_ADD(CURDATE(), INTERVAL 2 MONTH)', null, false) + ->get() + ->getResultArray(); + + return $PolicyRenewalData; + + } + + public function getTicketsDataForDashBoard() + { + $db = \Config\Database::connect(); + + $ticket_data = $db->table('hdz_tickets') + ->select('hdz_tickets.*, hdz_status.status') + ->join('hdz_status', 'hdz_status.id = hdz_tickets.status') + ->where('hdz_status.active', 1) + ->where('hdz_tickets.status !=', 5) + ->get() + ->getResultArray(); + + return $ticket_data; + } + + //ticket status count + public function getTicketStatusCount() + { + + $db = \Config\Database::connect(); + + // Count status = 1 + $countStatus1 = $db->table('hdz_tickets') + ->selectCount('status') + ->where('status', 1) + ->get() + ->getRowArray()['status']; + + // Count status = 4 + $countStatus4 = $db->table('hdz_tickets') + ->selectCount('status') + ->where('status', 4) + ->get() + ->getRowArray()['status']; + + // Count status = 2 + $countStatus2 = $db->table('hdz_tickets') + ->selectCount('status') + ->where('status', 2) + ->get() + ->getRowArray()['status']; + + // Count status = 3 + $countStatus3 = $db->table('hdz_tickets') + ->selectCount('status') + ->where('status', 3) + ->get() + ->getRowArray()['status']; + + + } + + public function getexportCount() + { + + } } diff --git a/app/Controllers/RestAuthenticationController.php b/app/Controllers/RestAuthenticationController.php index bb6013d5..b313789e 100644 --- a/app/Controllers/RestAuthenticationController.php +++ b/app/Controllers/RestAuthenticationController.php @@ -125,14 +125,12 @@ class RestAuthenticationController extends AdminController { try { $mobile_number = $this->request->getJSON()->mobile_number; - $randomNumber = rand(100000, 999999); - $randomNumber = 123456; + $HrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->first(); if ($HrData) { - $id= $HrData["id"]; - $otp = $this->hrModel->where('id', $id)->set('otp', $randomNumber)->update(); - $result = ['user_verification' => true ,'message' => "Verified Successfully", 'otp'=>$randomNumber]; + + $result = ['user_verification' => true ,'message' => "Verified Successfully"]; return $this->respond(['status' => 'success','code' => 200,'data' => $result],200); } else { $result = ['user_verification' => false , 'message' => "User not found"]; @@ -149,10 +147,10 @@ class RestAuthenticationController extends AdminController { try { $mobile_number = $this->request->getJSON()->mobile_number; - $otp = $this->request->getJSON()->otp; + $otp_verification = $this->request->getJSON()->otp_verification; $hrData = $this->hrModel->where('mobile', $mobile_number)->first(); - if ($hrData && $otp == $hrData["otp"]) { + if ($hrData && $otp_verification == true) { $auth = HttpRequestHelper::getRequestInfo(); if ($auth) { $data = [ @@ -163,10 +161,10 @@ class RestAuthenticationController extends AdminController 'broswer' => $auth['browser'], ]; - $authdata= $this->authHistoryModel->insert($data); + $this->authHistoryModel->insert($data); } - $otp_null = $this->hrModel->where('id', $hrData["id"])->set('otp', null)->update(); + $hrData = $this->hrModel ->select('level_contacts.* , client_branch.client_id as client_id') ->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left') @@ -174,7 +172,7 @@ class RestAuthenticationController extends AdminController ->find(); $result = JWTToken::encode($hrData['0']); - return $this->respond(['status' => 'success','code' => 200,'data' => $result],200); + return $this->respond(['status' => 'success','code' => 200,'data' => $result],200); } else { return $this->respond(['status' => 'failed','code' => 404,'data' => "Invalid OTP"],200); } diff --git a/app/Helpers/DepositHelper.php b/app/Helpers/DepositHelper.php index 3565646e..5d45709e 100644 --- a/app/Helpers/DepositHelper.php +++ b/app/Helpers/DepositHelper.php @@ -54,7 +54,9 @@ class DepositHelper 'cd_ac_no' => $data['cd_ac_no'], 'endorsement_no' => $data['endorsement_no'], 'insurer_id' => $data['insurer_id'], + 'unit' => $data['unit'] ?? null, 'description' => $data['description'], + 'event_name' => $data['event_name'], 'transaction_type' => $data['transaction_type'], 'is_active' => 1, 'created_by' => $loggedInUserID, diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index 80a40917..4f81d9d3 100644 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -225,11 +225,19 @@ if(!function_exists('check_employee_band')) if(!function_exists('check_si')) { - function check_si($row,$policy_terms,$slab_details) + function check_si($row,$policy_details,$slab_details) { $return_array = array('status' => true,'error' => ''); $is_si_found = false; $is_age_slab_found = false; + + if($policy_details[0]['policy_type_id'] == 1 && $slab_details[0]['policy_grid_id'] == 1 && $slab_details[0]['si_or_bp'] == 2) // GPA && grid type 1 for GPA && sub type is basic pay + { + $is_si_found = true; + $is_age_slab_found = true; + $return_array = array('status' => true,'error' => ''); + } + if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA','SI','MI']))// check rule only of action column data available { $received_si = $row['current_action'] == 'SI' ? $row[3] : $row[6]; @@ -868,25 +876,11 @@ if (!function_exists('calculate_premium')) if (!function_exists('calculate_premium_new')) { - function calculate_premium_new(array $family_data,array $policy_terms,array $slab_details,array $fileArr,string $default_si = null,array $existing_units) + function calculate_premium_new(array $family_data,array $policy_terms,array $slab_details,array $fileArr,array $existing_units,string $default_si = null,) { //grouping slab details by rack rate name - $temp_slab_rates = []; - $pre_name = ''; - $pre_grid_master = []; - foreach ($slab_details as $key => $value) - { - $pre_grid_master = $value['grid_master']; - unset($value['grid_master']); - if($value['rack_rate_name'] != $pre_name) - { - $pre_name = $value['rack_rate_name']; - $temp_slab_rates[ $value['rack_rate_name'] ]['slab_rates'][] = $value; - } - $temp_slab_rates[ $value['rack_rate_name'] ]['slab_rates'][] = $value; - $temp_slab_rates[ $value['rack_rate_name'] ]['grid_master'] = $pre_grid_master; - } + $temp_slab_rates = group_slab_rates_basedon_name($slab_details); // dd($temp_slab_rates); /* 1. construct available/incoming family members composition & count */ $incoming_familiy_composition = get_familiy_composition($family_data); @@ -899,8 +893,8 @@ if (!function_exists('calculate_premium_new')) { // dd($slab); $res = compare_incoming_family_slab_with_configured_slab($slab,$incoming_familiy_composition); - kint::dump($key); - kint::dump($res); + // kint::dump($key); + // kint::dump($res); if($res['is_applicable']) { @@ -972,9 +966,9 @@ if (!function_exists('calculate_premium_new')) // // Final combined condition if ($conditions['isEmployeeSourceEnrollment'] || $conditions['isEmployeeSourceExcelFile'] || $primaryGridTypeCondition ) { - + // dd($transformed_familiy_member_data); $transformed_familiy_member_data = premium_calculation_manager($transformed_familiy_member_data,$policy_terms,$temp_slab_rates,$default_si); - + // dd($transformed_familiy_member_data); $result[] = $transformed_familiy_member_data; } @@ -1041,6 +1035,7 @@ if (!function_exists('transform_excel_data_to_db')) $result['temp'] = []; if(isset($memArr['temp'])) $result['temp'] = array_merge($result['temp'],$memArr['temp']); $result['temp']['grid_type'] = $actionArr['grid_info']['type']; + $result['temp']['band'] = $result['band']; $result['temp']['grid_id'] = $actionArr['grid_info']['grid_id']; $result['temp']['action'] = isset($memArr['current_action']) ? $memArr['current_action'] : $current_column_action; $result['temp']['source'] = isset($memArr['temp']['source']) ? $memArr['temp']['source'] : 'excel'; @@ -1062,7 +1057,7 @@ if (!function_exists('premium_calculation_manager')) { function premium_calculation_manager($emp_data,$policy_terms,$slab_details,$default_si = null) { - // Kint::dump($emp_data); + // Kint::dump($emp_data);die(); $myLogger = \Config\Services::mylogger(); // grid type @@ -1143,7 +1138,28 @@ if (!function_exists('premium_calculation_manager')) break; } } + //auto calculate of SI and premium for basic pay type + if(!$is_match_found) + { + if($temp_slab_rates[0]['si_or_bp'] == 2) + { + $temp_si = $emp_data['basic_pay'] * $temp_slab_rates[0]['si_or_bp']; + $temp_premium = ($temp_si * $temp_slab_rates[0]['multiplier']) / 1000; + $emp_data['policy_details']['basic_cover_si'] = $temp_si; + $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); + $emp_data['policy_details']['premium'] = $temp_premium; + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); + $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * ($gst/100)),2,'.',''); + $is_match_found = true; + + $log_message = 'Pre defined SI not found. auto calc SI & premium for -' . $emp_data['emp_code'].' - '. $emp_data['name'].' - '. $temp_si.' - '. $temp_premium; + $myLogger->logme('error',$log_message); + + } + } break; case "2": //GPA - Flat Rate for all SI @@ -1905,8 +1921,8 @@ if(!function_exists('compare_incoming_family_slab_with_configured_slab')) $configured_familiy_composition = json_decode($slab['slab_rates'][0]['additional_relationship'], true); // Remove unnecessary keys - kint::dump($incoming_familiy_composition); - kint::dump($configured_familiy_composition); + // kint::dump($incoming_familiy_composition); + // kint::dump($configured_familiy_composition); unset($configured_familiy_composition['either-parents-pil']); unset($configured_familiy_composition['elders_count']); @@ -2023,4 +2039,59 @@ if(!function_exists('check_unit')) return array('status' => true); } } +} + + +if(!function_exists('transform_si_excel_row_to_calculatable_format')) +{ + function transform_si_excel_row_to_calculatable_format(array $employee,array$employee_policy,array $maxage_and_maxcount,array $slab_details,string $applicable_slab_name,string $augmented_si,array $grid_master) + { + $employee['temp'] = []; + $employee['temp']['max_age'] = $maxage_and_maxcount[0]['max_age']; + $employee['temp']['max_count'] = $maxage_and_maxcount[0]['family_member_count']; + $employee['temp']['grid_name'] = $applicable_slab_name; + $employee['temp']['grid_master'] = $grid_master; + $employee['temp']['acting_self'] = true; + $employee['temp']['premium_type'] = $grid_master['premium_type']; + $employee['temp']['grid_type'] = $applicable_slab_name; + $employee['temp']['grid_id'] = $grid_master['ui_type']; + $employee['temp']['action'] = 'SI'; + $employee['temp']['source'] = 'excel'; + $employee['temp']['emp_id'] = null; + $employee['temp']['emp_policy_id'] = null; + $employee['temp']['policy_status'] = null; + $employee['temp']['emp_status'] = null; + $employee['temp']['rata_premimum'] = null; + + return $employee; + + + + } +} + +if(!function_exists('group_slab_rates_basedon_name')) +{ + function group_slab_rates_basedon_name($slab_details) + { + // dd($slab_details); + //grouping slab details by rack rate name + $temp_slab_rates = []; + $pre_name = ''; + $pre_grid_master = []; + foreach ($slab_details['slab_rates'] as $key => $value) + { + $pre_grid_master = $value['grid_master']; + unset($value['grid_master']); + if($value['rack_rate_name'] != $pre_name) + { + $pre_name = $value['rack_rate_name']; + $temp_slab_rates[ $value['rack_rate_name'] ]['slab_rates'][] = $value; + } + $temp_slab_rates[ $value['rack_rate_name'] ]['slab_rates'][] = $value; + $temp_slab_rates[ $value['rack_rate_name'] ]['grid_master'] = $pre_grid_master; + } + + return $temp_slab_rates; + } } \ No newline at end of file diff --git a/app/Models/CDMasterModel.php b/app/Models/CDMasterModel.php index b936650f..8c7581a3 100644 --- a/app/Models/CDMasterModel.php +++ b/app/Models/CDMasterModel.php @@ -42,7 +42,7 @@ class CDMasterModel extends Model protected function checkAndADDCreatedByValue(array $data) { // Check if 'updated_by' value is null or empty - if (empty($data['data']['created_by'])) { + if (empty($data['data']['created_by'])) { // Set 'updated_by' value to the current session user ID $data['data']['created_by'] = get_session_userid(); } @@ -53,7 +53,7 @@ class CDMasterModel extends Model protected function checkAndUpdateUpdatedByValue(array $data) { // Check if 'updated_by' value is null or empty - if (empty($data['data']['updated_by'])) { + if (empty($data['data']['updated_by'])) { // Set 'updated_by' value to the current session user ID $data['data']['updated_by'] = get_session_userid(); } @@ -65,31 +65,37 @@ class CDMasterModel extends Model { $query = $this->db->table('cd_master') - ->select('cd_master.*, clients.client_name, clients.short_name, insurers.name AS insurer_name, user_profiles.first_name AS user_name, IFNULL(cd_ac_counts.cd_ac_no_count, 0) AS cd_ac_no_count, IFNULL(cd_ac_counts_for_cdt.cd_ac_no_count_cd_tranction, 0) AS cd_ac_no_count_cd_tranction') - ->join('clients', 'clients.id = cd_master.client_id') - ->join('insurers', 'insurers.id = cd_master.insurer_id') - ->join('user_profiles', 'user_profiles.id = cd_master.created_by') - ->join( - '(SELECT cd_master.cd_ac_no, COUNT(client_policy.cd_ac_no) AS cd_ac_no_count + ->select('cd_master.*, clients.client_name, clients.short_name, insurers.name AS insurer_name, user_profiles.first_name AS user_name, IFNULL(cd_ac_counts.cd_ac_no_count, 0) AS cd_ac_no_count, IFNULL(cd_ac_counts_for_cdt.cd_ac_no_count_cd_tranction, 0) AS cd_ac_no_count_cd_tranction') + ->join('clients', 'clients.id = cd_master.client_id') + ->join('insurers', 'insurers.id = cd_master.insurer_id') + ->join('user_profiles', 'user_profiles.id = cd_master.created_by') + ->join( + '(SELECT cd_master.cd_ac_no, COUNT(client_policy.cd_ac_no) AS cd_ac_no_count FROM cd_master JOIN client_policy ON client_policy.cd_ac_no = cd_master.cd_ac_no + WHERE client_policy.is_active = 1 + AND cd_master.is_active = 1 GROUP BY cd_master.cd_ac_no) AS cd_ac_counts', - 'cd_ac_counts.cd_ac_no = cd_master.cd_ac_no', - 'left' - ) - ->join( - '(SELECT cd_master.cd_ac_no, COUNT(cash_deposit.cd_ac_no) AS cd_ac_no_count_cd_tranction + 'cd_ac_counts.cd_ac_no = cd_master.cd_ac_no', + 'left' + ) + ->join( + '(SELECT cd_master.cd_ac_no, COUNT(cash_deposit.cd_ac_no) AS cd_ac_no_count_cd_tranction FROM cd_master JOIN cash_deposit ON cash_deposit.cd_ac_no = cd_master.cd_ac_no + WHERE cash_deposit.is_active = 1 + AND cd_master.is_active = 1 GROUP BY cd_master.cd_ac_no) AS cd_ac_counts_for_cdt', - 'cd_ac_counts_for_cdt.cd_ac_no = cd_master.cd_ac_no', - 'left' - ) - ->where('cd_master.is_active', 1) - ->get(); - + 'cd_ac_counts_for_cdt.cd_ac_no = cd_master.cd_ac_no', + 'left' + ) + ->where('cd_master.is_active', 1) + ->where('clients.is_active', 1) + ->where('insurers.is_active', 1) + ->where('user_profiles.is_active', 1) + ->get(); + $result = $query->getResultArray(); return $result; } - } diff --git a/app/Models/ClientDepositModel.php b/app/Models/ClientDepositModel.php index 9f520dd2..00530dec 100644 --- a/app/Models/ClientDepositModel.php +++ b/app/Models/ClientDepositModel.php @@ -25,6 +25,8 @@ class ClientDepositModel extends Model "client_policy_id", "cd_ac_no", "endorsement_no", + "event_name", + "unit", ]; diff --git a/app/Models/ClientPolicyModel.php b/app/Models/ClientPolicyModel.php index f3bed1e8..29027630 100644 --- a/app/Models/ClientPolicyModel.php +++ b/app/Models/ClientPolicyModel.php @@ -50,6 +50,7 @@ class ClientPolicyModel extends Model "cd_ac_no", "gst", "enrolment_visibility", + "is_active", ]; public function getClientPolicyById($id){ diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index aa1fb9fa..bd6a5e6f 100644 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -190,4 +190,24 @@ class EmployeeModel extends Model return ($result); } + + public function getFamiliyCountAndMaxage(string $emp_code) + { + $query = " + SELECT emp_code,family_member_count,max_age + FROM + ( + SELECT + emp_code, + COUNT(*) AS family_member_count, + MAX(TIMESTAMPDIFF(YEAR, dob, CURDATE())) AS max_age + FROM employees where emp_code = '{$emp_code}' + GROUP BY emp_code + ) AS family_stats + ORDER BY family_member_count DESC, max_age DESC + LIMIT 1;"; + $results = $this->db->query($query)->getResult(); + return $results; + } + } diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php index 1438c730..52ffe324 100644 --- a/app/Models/EmployeePolicyModel.php +++ b/app/Models/EmployeePolicyModel.php @@ -130,7 +130,15 @@ class EmployeePolicyModel extends Model $result->where('employee_polices.client_policy_id', $policy_id); } if ($status !=0 && !empty($status)) { - $result->where('employee_polices.status', $status); + if($status == 'active'){ + $result->where('employee_polices.tpa_id IS NOT NULL'); + $result->where('employee_polices.uhid IS NOT NULL'); + }else if($status == 'pending'){ + $status = 'active'; + $result->where('employee_polices.status', $status); + }else{ + $result->where('employee_polices.status', $status); + } } if (!empty($emp_code)) { $result->where('emp.emp_code', $emp_code); diff --git a/app/Models/PolicesModel.php b/app/Models/PolicesModel.php index cd1c62ba..ec010b82 100644 --- a/app/Models/PolicesModel.php +++ b/app/Models/PolicesModel.php @@ -50,9 +50,9 @@ class PolicesModel extends Model { // echo '2'; $policyPremium2Model = new PolicyPremium2Model(); - $premium_slab_data = $policyPremium2Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1,'rack_rate_type' => 0])->findAll(); + $premium_slab_data = $policyPremium2Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1])->findAll(); - //check any additional rack rate configured + // check any additional rack rate configured $additional_premium_slab_data = $policyPremium2Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1,'rack_rate_type' => 1])->findAll(); diff --git a/app/Views/DashBoard.php b/app/Views/DashBoard.php index 7d8243a5..c174e936 100644 --- a/app/Views/DashBoard.php +++ b/app/Views/DashBoard.php @@ -35,9 +35,9 @@ body { -
+
-
+
@@ -50,10 +50,10 @@ body {
- - - - + +
-
+
diff --git a/app/Views/cd_master_list.php b/app/Views/cd_master_list.php index 30c848f6..04a52784 100644 --- a/app/Views/cd_master_list.php +++ b/app/Views/cd_master_list.php @@ -57,17 +57,25 @@ table.dataTable thead th { by -