diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index c80f6c1..ab4f04e 100755 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -99,5 +99,5 @@ class Autoload extends AutoloadConfig * @var string[] * @phpstan-var list */ - public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload', 'excel_import_export', 'file', 'drive','ExcelSanitizeHelper']; + public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload', 'excel_import_export', 'file', 'drive','ExcelSanitizeHelper','sms_helper']; } diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 896ca58..cbb5b40 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -71,6 +71,7 @@ $routes->group("/client", ["filter" => "authMVC"], function ($routes) { $routes->get('remove/(:num)', 'ClientController::removeClient/$1'); $routes->get("list/(:any)", "ClientController::editClientOnboarding/$1"); $routes->post('wipe', 'ClientController::wipeDemoClient'); + $routes->get("typeList/(:any)", "ClientController::typeList/$1"); // application/config/routes.php // Add a route for the view_Deposit method @@ -97,6 +98,8 @@ $routes->group("/client", ["filter" => "authMVC"], function ($routes) { $routes->post("edit", "ClientController::editClientBranch"); $routes->get("list/(:any)", "ClientController::getSingleBranchDataById/$1"); $routes->get("remove/(:any)", "ClientController::removeClientBranch/$1"); + $routes->post("auto_fetch_branch","ClientController::auto_fetch_branch"); + $routes->post("auto_fetch_branch_details","ClientController::auto_fetch_branch_details"); }); $routes->group("relation", ["filter" => "authMVC"], function ($routes) { @@ -141,6 +144,7 @@ $routes->group("/client", ["filter" => "authMVC"], function ($routes) { $routes->group("others", ["filter" => "authMVC"], function ($routes) { $routes->post("create", "ClientController::createOtherTabContent"); + $routes->post('check-duplicate', 'ClientController::validateDuplicateByClientBranch'); }); }); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index fdf55ca..d2eb167 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -151,6 +151,16 @@ class ClientController extends AdminController return $this->response->setJSON(['isDuplicate' => $isDuplicate]); } + public function validateDuplicateByClientBranch() + { + $value = $this->request->getPost('value'); + $clientId = $this->request->getPost('client_id'); + $branchId = $this->request->getPost('branch_id'); + $field = $this->request->getPost('field'); + $isDuplicate = $this->clientModel->isDuplicateByClientBranch($value, $field, $clientId, $branchId); + return $this->response->setJSON(['isDuplicate' => $isDuplicate]); + } + public function smapletest() { $headers = [ @@ -337,7 +347,7 @@ class ClientController extends AdminController { $this->myLogger->logme('error', 'Client list function called'); $headerData['page_name'] = 'Client List'; - $data['clientList'] = $this->clientModel->getCreatedByUserName(); + $data['clientList'] = $this->clientModel->getCreatedByUserName(1); $data['client_rm'] = $this->clientRMModel->getAllClientRM(); $data['lead_data'] = $this->leadsModel->getLeadForInsertClientList(); @@ -349,6 +359,26 @@ class ClientController extends AdminController // $this->loadLayout('client_onboarding', $data); } + public function typeList($id = null) + { + try { + $data = $this->clientModel->getCreatedByUserName($id); // passing client_type + if (empty($data)) { + return $this->response + ->setJSON(['status' => 'error', 'message' => 'No Records found']) + ->setStatusCode(404); + } + + return $this->response + ->setJSON(['status' => 'success', 'data' => $data]) + ->setStatusCode(200); + + } catch (\Throwable $e) { + return $this->response + ->setJSON(['status' => 'error', 'message' => $e->getMessage()]) + ->setStatusCode(500); + } + } public function updateEmpAndPolicyStatus() { @@ -481,6 +511,10 @@ class ClientController extends AdminController // dd($data['placeHolders']); + + // auto fetch client list and branch list from pre + $data['auto_fetch_client_list'] = $this->getClientListFromPost(); + echo view('layout/header', $headerData); echo view('client_onboarding', $data); echo view('layout/footer'); @@ -620,6 +654,8 @@ class ClientController extends AdminController $editData['client_policy']['role'] = get_role_id(); $editData['notification'] = $this->notificationModel->select('template_name,enabled')->where('client_id', $id)->findAll(); $editData['placeHolders'] = ['member_name', 'member_mobile', 'nhance_logo', 'tpa_id', 'ecard_download_link', 'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link', 'client_name']; + + $editData['auto_fetch_client_list'] = $this->getClientListFromPost(); // dd($editData); echo view('layout/header', $headerData); @@ -871,7 +907,29 @@ class ClientController extends AdminController } $data['created_by'] = get_session_userid(); + + // before updating check if post_branch_id is already existing in the current db + + if(isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + $existing_pre_branch = $this->clientBranchModel + ->where('post_branch_id',$data['post_branch_id']) + // ->where('id !=',$pre_branch_id) + ->where('is_active',1) + ->first(); + + if($existing_pre_branch) + { + return $this->respond([ + 'status' => false, + 'code' => 409, + 'message' => 'The branch is already mapped with another branch. Please check.', + ], 409); + } + } + $insert = $this->clientBranchModel->insert($data); + $pre_branch_id = $insert; if ($insert) { $level_contact_data = $this->request->getPost('level_contect_data'); @@ -879,6 +937,16 @@ class ClientController extends AdminController $this->saveLevelContacts($level_contact_data, $insert); } + if($pre_branch_id && isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + // need to update the client_branch in the pre + $result = $this->updatePostClientBranch($data['post_branch_id'],$pre_branch_id , "create"); + + log_message('error','Post client_branch update result for post_branch_id '.$data['post_branch_id'].' and pre_branch_id '.$pre_branch_id.' is '.json_encode($result)); + } + + + // if ($insert) { // for ($i = 0; $i < count($this->request->getPost('name')); $i++) { // // Prepare data to insert @@ -919,7 +987,11 @@ class ClientController extends AdminController $this->myLogger->logme('error', 'Client branch EDIT function called'); $id = $this->request->getPost('branch_id_primarykey'); $client_id = $this->request->getPost('client_id'); + $post_branch_id = $this->request->getPost('post_branch_id') ?? ""; + $data = $this->request->getPost(); + $data['post_branch_id'] = $post_branch_id; + $units = $this->request->getPost('units'); $emp_unit_count = 0; @@ -978,7 +1050,44 @@ class ClientController extends AdminController } $data['updated_by'] = get_session_userid(); + + $pre_branch_id = $id; + + // before updating check if post_branch_id is already existing in the current db + + if(isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + $existing_pre_branch = $this->clientBranchModel + ->where('post_branch_id',$data['post_branch_id']) + ->where('id !=',$pre_branch_id) + ->where('is_active',1) + ->first(); + + if($existing_pre_branch) + { + return $this->respond([ + 'status' => false, + 'code' => 409, + 'message' => 'The branch is already mapped with another branch. Please check.', + ], 409); + } + } + + + $insert = $this->clientBranchModel->update($id, $data); + + + + if($pre_branch_id && isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + // need to update the client_branch in the post + $result = $this->updatePostClientBranch($data['post_branch_id'],$pre_branch_id , "update"); + + log_message('error','Post client_branch update result for post_branch_id '.$data['post_branch_id'].' and pre_branch_id '.$pre_branch_id.' is '.json_encode($result)); + } + + $this->myLogger->logme('error', 'Client branch EDITED by {data}', ['data' => get_session_userid()]); if ($insert) { @@ -5129,4 +5238,125 @@ class ClientController extends AdminController return $this->respond(['status' => true, 'message' => 'Demo client data wiped successfully'], 200); } + + + + private function getClientListFromPost (){ + + $db2 = \Config\Database::connect('postDB'); + + $auto_fetch_client_list = $db2->table('clients') + ->select('id,client_name') + ->where('is_active',1) + ->get()->getResultArray()??[]; + + return $auto_fetch_client_list; + + } + + public function auto_fetch_branch(){ + + $data = $this->request->getPost(); + + $db2 = \Config\Database::connect('postDB'); + + $auto_fetch_branch_list = $db2->table('client_branch') + ->select('id,branch_name') + ->where('client_id',$data['client_id']) + ->where('is_active',1) + ->get()->getResultArray()??[]; + + return + + empty($auto_fetch_branch_list) + + ? $this->response->setJSON([ + 'status' => false, + 'message' => 'branch list is empty', + 'data' => [] + ])->setStatusCode(400) + + : $this->response->setJSON([ + 'status' => true, + 'message' => 'branch list is found' , + 'data' => $auto_fetch_branch_list + ])->setStatusCode(200); + } + + public function auto_fetch_branch_details(){ + + $data = $this->request->getPost(); + + $db2 = \Config\Database::connect('postDB'); + + $auto_fetch_branch_details = $db2->table('client_branch') + ->where('client_id',$data['client_id']) + ->where('id',$data['branch_id']) + ->where('is_active',1) + ->get()->getResultArray()??[]; + + return empty($auto_fetch_branch_details) + + ? $this->response->setJSON([ + 'status' => false, + 'message' => 'branch details is empty', + 'data' => [] + ])->setStatusCode(400) + + : $this->response->setJSON([ + 'status' => true, + 'message' => 'branch details found' , + 'data' => $auto_fetch_branch_details + ])->setStatusCode(200); + + } + + + public function updatePostClientBranch($post_branch_id,$pre_branch_id , $operation){ + + + + + $postDB = \Config\Database::connect('postDB'); + + if($operation != 'create'){ + + $builder = $postDB->table('client_branch'); + $builder->where('pre_branch_id', $pre_branch_id); + $builder->update(['pre_branch_id' => null]); + } + + $builder = $postDB->table('client_branch'); + $builder->where('id', $post_branch_id); + $builder->update(['pre_branch_id' => $pre_branch_id]); + + return true; + + } + + + + + + + + + + + + + + + + + + + + + + + + + + } diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index feca6fd..564fc92 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -761,36 +761,45 @@ class EmployeeController extends AdminController } - public function empby_client_clientbranch($client_id, $branch_id) - { - - $results = $this->clientModel->select('employees.id as employee_id, employees.name as employee_name, - employees.relationship, employees.emp_code, - employees.emp_status, auth_history.user_type') - ->join('employees', $client_id .'= employees.client_id AND ' . $branch_id . '= employees.client_branch_id', 'left') - ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') - ->where('employees.is_active', 1) - ->where('employees.emp_status !=', 'truncated') - ->groupBy('employees.id') - ->findAll(); - + public function empby_client_clientbranch($client_id, $branch_id, $client_policy_id) + { + + $results = $this->clientModel->select(' + employees.id as employee_id, + employees.name as employee_name, + employees.relationship, + employees.emp_code, + employees.emp_status, + auth_history.user_type + ') + ->join('employees', $client_id . '= employees.client_id AND ' . $branch_id . '= employees.client_branch_id', 'left') + ->join('employee_polices', 'employees.id = employee_polices.employee_id') + ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') + ->where('employees.is_active', 1) + ->where('employees.emp_status !=', 'truncated') + ->where('employee_polices.client_policy_id', $client_policy_id) + ->where('employee_polices.is_active', 1) + ->where('employee_polices.status !=', 'truncated') + ->groupBy('employees.id') + ->findAll(); + $groupedData = []; $employeeId = ''; foreach ($results as $row) { - if($employeeId != $row['employee_id']){ + if ($employeeId != $row['employee_id']) { $employeeId = $row['employee_id']; - }else{ + } else { $employeeId = null; } - $employeeName = $row['employee_name'] ; - $employeeRelationship = $row['relationship'] ; - $employeeEmpCode = $row['emp_code'] ; + $employeeName = $row['employee_name']; + $employeeRelationship = $row['relationship']; + $employeeEmpCode = $row['emp_code']; $employeeEmpStatus = $row['emp_status']; $employeeUserType = $row['user_type']; - - + + // if ($employeeId !== null && $employeeRelationship == 'Self') { if ($employeeId !== null) { // Append employee info to the branch's employees list @@ -802,16 +811,16 @@ class EmployeeController extends AdminController 'emp_status' => $employeeEmpStatus, 'user_type' => $employeeUserType ]; - } $employeeId = $row['employee_id']; } - - - return json_encode($groupedData); - } - + // print_r($groupedData); die; + + return json_encode($groupedData); + } + + /** diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 38329a0..904f54a 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -275,6 +275,7 @@ class EmployeeRestController extends AdminController $item->gender = $this->GenderMap($item->relationship , $item->emp_code); $item->dob = $this->convertDateFormatYMD($item->dob); $item->emp_status = 'draft'; + $item->band = $this->getSelfBand($item->emp_code,$item->client_id,$item->client_branch_id); // dd($item); $employee = $this->employeeModel->insert($item); @@ -312,6 +313,22 @@ class EmployeeRestController extends AdminController } + public function getSelfBand(string $emp_code, int $client_id, int $client_branch_id): ?string + { + $employee = $this->employeeModel + ->where('emp_code', $emp_code) + ->where('client_id', $client_id) + ->where('client_branch_id', $client_branch_id) + ->whereIn('emp_status', ['draft', 'enrolled']) + ->where('is_active', 1) + ->where('relationship','Self') + ->first(); + + return $employee['band'] ?? null; + } + + + public function getEmployeePayableValue($client_policy_id,$relationship) { $terms = $this->clientPolicyModel->where('id',$client_policy_id)->get()->getRow()->policy_terms; @@ -1757,53 +1774,28 @@ class EmployeeRestController extends AdminController public function getClientDetails() { - log_message('error', 'STEP 1: getClientDetails called'); - try { - // STEP 2: Extract Authorization header - $jwt = $this->request->getHeaderLine('Authorization'); - log_message('error', 'STEP 2: Authorization header: ' . $jwt); + $pre_client_id = $this->request->getGet('pre_client_id'); + $pre_branch_id = $this->request->getGet('pre_branch_id'); + $post_client_id = $this->request->getGet('post_client_id'); + $post_branch_id = $this->request->getGet('post_branch_id'); + - $jwtParts = explode(' ', $jwt); - if (count($jwtParts) < 2) { - log_message('error', 'STEP 2.1: Invalid Authorization header format'); - return $this->respond(['status' => 'failed', 'code' => 400, 'data' => 'Invalid Authorization header'], 400); - } + if ($pre_client_id != null) { + - $token = $jwtParts[1]; - log_message('error', 'STEP 3: Extracted JWT token'); - - $tokenParts = explode('.', $token); - if (count($tokenParts) !== 3) { - log_message('error', 'STEP 3.1: Invalid JWT structure'); - return $this->respond(['status' => 'failed', 'code' => 400, 'data' => 'Invalid JWT token'], 400); - } - - $decodedPayload = json_decode(base64_decode($tokenParts[1]), true); - log_message('error', 'STEP 4: Decoded JWT payload: ' . json_encode($decodedPayload)); - - $token_type = $decodedPayload['token_type'] ?? null; - log_message('error', 'STEP 5: Token type = ' . $token_type); - - $client_id = $this->request->getGet('client_id'); - $client_branch_id = $this->request->getGet('client_branch_id'); - log_message('error', 'STEP 6: Query params - client_id: ' . $client_id . ', client_branch_id: ' . $client_branch_id); - - if ($token_type === 'pre') { - log_message('error', 'STEP 7: Handling "pre" token type'); - - $client = $this->clientModel->where('id', $client_id)->first(); + $client = $this->clientModel->where('id', $pre_client_id)->first(); if ($client) { - log_message('error', 'STEP 8: Found client: ' . json_encode($client)); + $client['client_logo'] = base_url() . 'public/uploads/logo/' . $client['client_logo']; $clientPolicy = $this->clientPolicyModel - ->where('client_id', $client_id) - ->where('client_branch_id', $client_branch_id) + ->where('client_id', $pre_client_id) + ->where('client_branch_id', $pre_branch_id) ->findAll(); - log_message('error', 'STEP 9: Found client policy count: ' . count($clientPolicy)); + return $this->respond([ 'status' => 'success', @@ -1814,33 +1806,34 @@ class EmployeeRestController extends AdminController ] ], 200); } else { - log_message('error', 'STEP 10: No client found for client_id: ' . $client_id); + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404); } - } elseif ($token_type === 'post') { - log_message('error', 'STEP 11: Handling "post" token type'); + } elseif ($post_client_id != null) { + $restAuthController = new RestAuthenticationController; $queryParams = [ - 'client_id' => $client_id, - 'client_branch_id' => $client_branch_id + 'client_id' => $post_client_id, + 'client_branch_id' => $post_branch_id ]; - log_message('error', 'STEP 12: Calling post enrollment API with params: ' . json_encode($queryParams)); + return $restAuthController->callThirdPartyGETAPI($queryParams, 'getClientDetails'); - return $restAuthController->callThirdPartyGETAPI($queryParams, 'getClientDetails', ['token' => $jwt]); } else { - log_message('error', 'STEP 13: Unknown token_type: ' . $token_type); + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404); } } catch (\Exception $e) { - log_message('error', 'STEP 14: Exception occurred - ' . $e->getMessage()); + return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } + + public function getSiMappedArray($policy_id,$base_policy_id) { $selfGMC = $this->employeeModel->select('employees.name , employee_polices.basic_cover_si') diff --git a/app/Controllers/RestAuthenticationController.php b/app/Controllers/RestAuthenticationController.php index 04902bc..f187422 100755 --- a/app/Controllers/RestAuthenticationController.php +++ b/app/Controllers/RestAuthenticationController.php @@ -74,18 +74,7 @@ class RestAuthenticationController extends AdminController return $response->getBody(); } - // public function callThirdPartyGETAPI($queryParams, $endPoint) - // { - // $client = \Config\Services::curlrequest(); - // $url = env('POST_ENROLLMENT_BASEURL') . $endPoint; - // $response = $client->get($url, [ - // 'query' => $queryParams, // pass as query parameters - // 'http_errors' => false // prevent exception on non-200 status - // ]); - - // return $response->getBody(); - // } public function callThirdPartyGETAPI($queryParams, $endPoint, $params = []) { @@ -114,7 +103,19 @@ class RestAuthenticationController extends AdminController - + + + + + + + + + + + + + // employee auth api's start public function verifyEmployeeWithMobileNumber() @@ -124,7 +125,9 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Verify Employee With Mobile Number: Function called"); try { - $mobile_number = $this->request->getJSON()->mobile_number; + $data = $this->request->getJSON(); + $mobile_number = $data->mobile_number; + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Received mobile_number = " . $mobile_number); $empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['mobile_number' => $mobile_number]); @@ -137,49 +140,97 @@ class RestAuthenticationController extends AdminController return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200); } + + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: employee data both PRE & POST = " . json_encode($empdata)); - $employeeData = $this->employeeModel->select('employees.relationship,EP.employee_id') - ->join('employee_polices EP', 'EP.employee_id = employees.id', 'inner') - ->where('employees.is_active', 1) - ->where('employees.relationship', 'self') - ->where('employees.emp_status !=', 'truncated') - ->where('employees.mobile', $mobile_number) - ->where('EP.is_active', 1) - ->whereIn('EP.status', ['draft', 'enrolled', 'expired']) - ->first(); $employeeData = []; if (isset($empdata['pre']) && !empty($empdata['pre'])) { $employeeData = $empdata['pre']; $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Using PRE data"); - } elseif (isset($empdata['post']) && !empty($empdata['post'])) { - $employeeData = $empdata['post']; - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Using POST data"); } + + $otp = random_int(100000, 999999); $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Final employee data to verify = " . json_encode($employeeData)); if (isset($employeeData['employee_id'])) - { + { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee verified with ID = " . $employeeData['employee_id']); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - $result = ['user_verification' => true ,'message' => "Verified Successfully" ]; - return $this->respond(['status' => 'success','code' => 200,'data' => $result],200); + + + $sql = " + UPDATE employees + INNER JOIN employee_polices ON employee_polices.employee_id = employees.id + SET employees.otp = ? + WHERE employees.id = ? + AND employees.relationship = 'self' + AND employees.is_active = 1 + AND employee_polices.is_active = 1 + AND employee_polices.status IN ('draft', 'enrolled') + "; + + $db = db_connect(); + $update = $db->query($sql, [$otp, $employeeData['employee_id']]); + + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: OTP update query executed. SQL = " . $db->getLastQuery()); + + if($update) + { + + //If post-enrollment data exist update the same otp generated from pre-enrollment. + if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) { + $data->otp = $otp; + $data->client_id = $empdata['post']['client_id']; + $data->employee_id = $empdata['post']['employee_id']; + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Attached otp, client_id and employee_id from POST data to update the otp"); + + $this->callThirdPartyAPI($data, 'updateEmpOTP'); + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Calling callThirdPartyAPI for updateEmpOTP"); + } + + + //send sms + $SMSResult = sendOtpSms($mobile_number, $otp); + if ($SMSResult['status'] == 'success') + { + $result = ['user_verification' => true ,'message' => "Verified Successfully" ]; + return $this->respond(['status' => 'success','code' => 200,'data' => $result],200); + }else{ + $result = ['user_verification' => false, 'message' => "SMS sending failed , try again"]; + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200); + } + + }else{ + + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: OTP update query Failed. SQL = " . $db->getLastQuery()); + + $result = ['user_verification' => false, 'message' => "Try again. , try again"]; + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200); + + } + + + } else { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee ID not found, calling third-party API to POST"); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); + // Call the third-party API function - return $this->callThirdPartyAPI($this->request->getJSON(),'verifyEmployeeNumber'); + $reqData = $this->request->getJSON(); + $reqData->otp = $otp; + return $this->callThirdPartyAPI($reqData,'verifyEmployeeNumber'); } } catch (\Throwable $th) { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString()); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500); + return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500); } } @@ -208,22 +259,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: employee data both PRE & POST = " . json_encode($empdata)); - $employeeData = $this->employeeModel->select(' - employees.relationship, - EP.employee_id, - employees.client_id, - employees.client_branch_id, - employees.email_corporate - - ') - ->join('employee_polices EP', 'EP.employee_id = employees.id', 'inner') - ->where('employees.is_active', 1) - ->where('employees.relationship', 'Self') - ->where('employees.emp_status !=', 'truncated') - ->where('employees.email_corporate', $email) - ->where('EP.is_active', 1) - ->whereIn('EP.status', ['draft', 'enrolled', 'expired']) - ->first(); + $employeeData = []; if (isset($empdata['pre']) && !empty($empdata['pre'])) { @@ -231,15 +267,12 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Using PRE data"); } + $otp = random_int(100000, 999999); - if (isset($employeeData['employee_id'])) { + if (isset($employeeData['employee_id'])) + { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Valid employee found, generating OTP"); - $otp = random_int(100000, 999999); - - // $update = $this->employeeModel->where('email_corporate', $email)->where('relationship', 'self') - // ->where('is_active', 1)->set(array('otp' => $otp )) - // ->update(); $sql = " UPDATE employees @@ -253,7 +286,7 @@ class RestAuthenticationController extends AdminController "; $db = db_connect(); - // $update = $db->query($sql, [$otp, $email]); + $update = $db->query($sql, [$otp, $employeeData['employee_id']]); $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: OTP update query executed. SQL = " . $db->getLastQuery()); @@ -261,17 +294,20 @@ class RestAuthenticationController extends AdminController if($update) { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: OTP updated successfully in PRE DATABASE"); - $data->otp = $otp; + + //If post-enrollment data exist update the same otp generated from pre-enrollment. if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) { + $data->otp = $otp; $data->client_id = $empdata['post']['client_id']; $data->employee_id = $empdata['post']['employee_id']; $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Attached otp, client_id and employee_id from POST data to update the otp"); + + $this->callThirdPartyAPI($data, 'updateEmpOTP'); + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Calling callThirdPartyAPI for updateEmpOTP"); } - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Calling callThirdPartyAPI for updateEmpOTP"); - $this->callThirdPartyAPI($data, 'updateEmpOTP'); - + //send Email $common = [ 'client_id' => $employeeData['client_id'], 'client_branch_id' => $employeeData['client_branch_id'], @@ -309,21 +345,22 @@ class RestAuthenticationController extends AdminController } else { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Employee not found with email in the PRE DATABASE, falling back to third-party API"); + + // Call the third-party API function $apiParams = $this->request->getJSON(); if (!empty($empdata['post']['client_id'])) { $apiParams->client_id = $empdata['post']['client_id']; } - // print_r($apiParams); die; - // Call the third-party API function + $apiParams->otp = $otp; + return $this->callThirdPartyAPI($apiParams, 'verifyEmployeeEmailId'); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->callThirdPartyAPI($apiParams, 'verifyEmployeeEmailId'); } } catch (\Throwable $th) { log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString()); - return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $th], 500); + return $this->respond(['status' => 'failed', 'code' => 500, 'data' => "", 'message' => $th], 500); } } @@ -336,79 +373,42 @@ class RestAuthenticationController extends AdminController try { - $otp_verification = isset($this->request->getJSON()->otp_verification) ? $this->request->getJSON()->otp_verification : null; + $mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null; - - $otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null; $email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null; + $otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null; - if (isset($this->request->getJSON()->login_by_hr)) - { - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: login_by_hr detected, fetching employee data directly"); - $employeeData = $this->employeeModel->where('id', $this->request->getJSON()->employee_id)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first(); - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: employeeData (login_by_hr) = " . json_encode($employeeData)); - }else{ - - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Fetching empdata via RestAuthHelper"); - $empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'otp' => $otp, 'mobile_number' => $mobile_number ]); - // print_r($empdata); die; - - if(empty($empdata)){ - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata is empty"); - log_message('error', ' '); - log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 404,'data' => []],200); - } - - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata = " . json_encode($empdata)); - - if (isset($mobile_number)) - { - // $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first(); - - $employeeData = $this->employeeModel - ->select('employees.*') - ->join('employee_polices EP', 'EP.employee_id = employees.id', 'inner') - ->where('employees.is_active', 1) - ->where('employees.relationship', 'self') - ->where('employees.emp_status !=', 'truncated') - ->where('employees.mobile', $mobile_number) - ->where('EP.is_active', 1) - ->whereIn('EP.status', ['draft', 'enrolled']) - ->first(); - } else { - // $employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('otp', $otp)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first(); - $employeeData = $this->employeeModel - ->select('employees.*') - ->join('employee_polices', 'employees.id = employee_polices.employee_id') - ->where('employees.email_corporate', $email_id) - ->where('employees.relationship', 'Self') - ->where('employee_polices.is_active', 1) - ->whereIn('employee_polices.status', ['draft', 'enrolled']) - ->where('employees.is_active', 1) - ->whereIn('employees.emp_status', ['draft', 'enrolled']) - ->where('employees.otp', $otp) - ->orderBy('id', 'desc') - ->first(); - } - - $employeeData = []; - if (isset($empdata['pre']) && !empty($empdata['pre'])) { - $employeeData = $empdata['pre']; - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Using PRE data from empdata"); - } + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Fetching empdata via RestAuthHelper"); + $empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'otp' => $otp, 'mobile_number' => $mobile_number ]); + + if(empty($empdata)){ + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata is empty"); + log_message('error', ' '); + log_message('error', '************************ PRE END ********************************'); + return $this->respond(['status' => 'Invalid OTP','code' => 404,'data' => "", 'message' => "Invalid OTP"],200); } + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata = " . json_encode($empdata)); + + + $employeeData = []; + if (isset($empdata['pre']) && !empty($empdata['pre'])) { + $employeeData = $empdata['pre']; + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Using PRE data from empdata"); + } + + + $requestData = $this->request->getJSON(); if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) { $requestData->client_id = $empdata['post']['client_id']; $requestData->employee_id = $empdata['post']['employee_id']; $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Added client_id and employee_id to requestData for to get the POST employee data"); } - // print_r($requestData); die; + - if ($employeeData && $otp_verification == true || $employeeData && isset($this->request->getJSON()->login_by_hr) || $employeeData && isset($this->request->getJSON()->otp) ) + if ( $employeeData && isset($this->request->getJSON()->otp) ) { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Verified employee found"); $auth = HttpRequestHelper::getRequestInfo(); @@ -447,41 +447,91 @@ class RestAuthenticationController extends AdminController log_message('error', '************************ PRE END ********************************'); // Call the third-party API function $apiResponse = $this->callThirdPartyAPI($requestData,'getVerifiedUserData'); - return $this->respond(['status' => 'failed','code' => 404,'data' => [] , 'post_enrollment'=> json_decode($apiResponse, true)],200); + return $this->respond(['status' => 'failed','code' => 404,'data' => '' , 'post_enrollment'=> json_decode($apiResponse, true)],200); } + } catch (\Exception $e) { $this->myLogger->logme("error", "Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString()); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 500,'data' =>[], 'error' => $e->getMessage()],500); + return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => "Invalid OTP", 'error' => $e->getMessage()],500); } } // employee auth api's end + + + + + + + + + + + + + // HR auth api's start public function verifyHrWithMobileNumber() { try { - $mobile_number = $this->request->getJSON()->mobile_number; - + + $data = $this->request->getJSON(); + + $mobile_number = $data->mobile_number; + $HrData = $this->hrModel->where('mobile', $mobile_number) ->where('contact_type', 'client') ->where('is_active', 1) ->first(); - - if ($HrData) { + + $otp = random_int(100000, 999999); + + + if ($HrData) + { - $result = ['user_verification' => true ,'message' => "Verified Successfully"]; - return $this->respond(['status' => 'success','code' => 200,'data' => $result],200); - } else { - // Call the third-party API function - return $this->callThirdPartyAPI($this->request->getJSON(),'verifyHrWithMobileNumber'); + $sql = "UPDATE level_contacts SET otp = ? WHERE mobile = ? AND contact_type = 'client' AND is_active = 1"; + + $db = db_connect(); + $update = $db->query($sql, [$otp, $mobile_number]); + + if($update) + { + //update otp in post-enrollment + $data->otp = $otp; + $this->callThirdPartyAPI($data, 'updateHROTP'); + + //send sms + $SMSResult = sendOtpSms($mobile_number, $otp); + if ($SMSResult['status'] == 'success') + { + $result = ['user_verification' => true, 'message' => "Verified Successfully"]; + return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200); + } else { + $result = ['user_verification' => false, 'message' => "SMS sending failed , try again"]; + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200); + } + + }else { + $result = ['user_verification' => false, 'message' => "SMS sending failed , try again"]; + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200); + } + + }else { + + // Call the third-party API function + $reqData = $this->request->getJSON(); + $reqData->otp = $otp; + return $this->callThirdPartyAPI($reqData,'verifyHrWithMobileNumber'); } + } catch (\Throwable $th) { return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500); } @@ -500,9 +550,11 @@ class RestAuthenticationController extends AdminController ->where('is_active', 1) ->first(); + $otp = random_int(100000, 999999); + if ($HrData) { - $otp = random_int(100000, 999999); + $sql = " UPDATE level_contacts @@ -545,6 +597,8 @@ class RestAuthenticationController extends AdminController } else { // Call the third-party API function + $reqData = $this->request->getJSON(); + $reqData->otp = $otp; return $this->callThirdPartyAPI($this->request->getJSON(),'verifyHrWithEmail'); } @@ -556,21 +610,19 @@ class RestAuthenticationController extends AdminController public function getVerifiedHrData() { try { - // mobile number - $otp_verification = isset($this->request->getJSON()->otp_verification) ? $this->request->getJSON()->otp_verification : null; - $mobile_number = isset($this->request->getJSON()->mobile_no) ? $this->request->getJSON()->mobile_no : null; - // email id + $otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null; $email = isset($this->request->getJSON()->email) ? $this->request->getJSON()->email : null; + $mobile_number = isset($this->request->getJSON()->mobile_no) ? $this->request->getJSON()->mobile_no : null; if (isset($mobile_number)) { - $hrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->first(); + $hrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->where('otp', $otp)->first(); }else{ $hrData = $this->hrModel->where('email', $email)->where('contact_type', 'client')->where('otp', $otp)->first(); } - if ($hrData && $otp_verification == true || $hrData && isset($this->request->getJSON()->otp) ) + if ($hrData) { $auth = HttpRequestHelper::getRequestInfo(); @@ -590,45 +642,75 @@ class RestAuthenticationController extends AdminController if(isset($this->request->getJSON()->mobile_no)){ - $hrData = $this->hrModel ->select('level_contacts.* , client_branch.client_id as client_id') + $getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name , client_branch.post_branch_id') ->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left') + ->join('clients', 'client_branch.client_id = clients.id', 'left') ->where('level_contacts.mobile', $mobile_number ) ->where('level_contacts.contact_type', 'client') - ->find(); + ->findAll(); + //set otp value null + $this->hrModel->where('mobile', $mobile_number)->where('otp', $otp)->where('contact_type', 'client')->set(['otp'=>null])->update(); - }else if(isset($this->request->getJSON()->otp)){ + }else if(isset($this->request->getJSON()->email)){ + $getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name , client_branch.post_branch_id') + ->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left') + ->join('clients', 'client_branch.client_id = clients.id', 'left') + ->where('level_contacts.email', $email ) + ->where('level_contacts.contact_type', 'client') + ->findAll(); + //set otp value null $this->hrModel->where('email', $email)->where('otp', $otp)->where('contact_type', 'client')->set(['otp'=>null])->update(); - - $hrData = $this->hrModel ->select('level_contacts.* , client_branch.client_id as client_id') - ->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left') - ->where('level_contacts.email', $email ) - ->where('level_contacts.contact_type', 'client') - ->find(); } - //call and get allowed module data from post enrollment - $queryParams = [ - 'hr_id' => $hrData['0']['id'], - 'request_for' => 'pre_enrollment' - ]; - $HRAccessRes = $this->callThirdPartyGETAPI($queryParams,'getHRAccessData'); - $HRAccessData = json_decode($HRAccessRes,true); - if(isset($HRAccessData['data']['allowed_modules'])){ $hrData['0']['allowed_modules'] = json_decode($HRAccessData['data']['allowed_modules'],true)['pre']; }else{ $hrData['0']['allowed_modules'] = []; } - - $hrData['0']['token_type'] = 'pre'; - $result = JWTToken::encode($hrData['0']); - - // Call the third-party API function - $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData'); - return $this->respond(['status' => 'success','code' => 200,'data' => $result , 'post_enrollment'=> json_decode($apiResponse, true)],200); + + if(count($getAllhrData)) + { + $db2 = \Config\Database::connect('postDB'); + foreach ($getAllhrData as $key => $value) { + + $HRAccessData = $db2->table('hr_access_control hr') + ->where('hr.pre_client_id',$value['client_id']) + ->where('hr.pre_branch_id', $value['client_branch_id']) + ->where('hr.pre_hr_id', $value['id']) + ->get()->getRowArray(); + + + if (!empty($HRAccessData) && isset($HRAccessData['allowed_modules'])) { + + $decoded = json_decode($HRAccessData['allowed_modules'], true); + $getAllhrData[$key]['allowed_modules'] = $decoded; + + $token = JWTToken::encode($HRAccessData); + $getAllhrData[$key]['token'] = $token; + + } else { + $getAllhrData[$key]['allowed_modules'] = []; + $getAllhrData[$key]['token'] = ""; + } + + } + + + // Call the third-party API function + $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData'); + return $this->respond(['status' => 'success','code' => 200,'data' => $getAllhrData , 'post_enrollment'=> json_decode($apiResponse, true)],200); + + }else { + + // Call the third-party API function + $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData'); + return $this->respond(['status' => 'failed','code' => 404,'data' => "" , 'post_enrollment'=> json_decode($apiResponse, true)],200); + } + + } else { // Call the third-party API function $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData'); - return $this->respond(['status' => 'failed','code' => 404,'data' => "Invalid OTP" , 'post_enrollment'=> json_decode($apiResponse, true)],200); + return $this->respond(['status' => 'failed','code' => 404,'data' => "" , 'post_enrollment'=> json_decode($apiResponse, true)],200); } } catch (\Exception $e) { return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500); @@ -761,7 +843,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString()); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500); + return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500); } } @@ -870,7 +952,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString()); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500); + return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500); } } @@ -896,7 +978,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: No employee data found both PRE and POST"); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200); + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => ""], 200); } $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: empdata = " . json_encode($empdata)); @@ -979,10 +1061,10 @@ class RestAuthenticationController extends AdminController // Call the third-party API function $apiResponse = $this->callThirdPartyAPI($requestData, 'verifyMpin'); - return $this->respond(['status' => 'failed', 'code' => 404, 'data' => "Invalid OTP", 'post_enrollment' => json_decode($apiResponse, true)], 200); + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => "", 'post_enrollment' => json_decode($apiResponse, true)], 200); //$apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'/getVerifiedUserData'); - // return $this->respond(['status' => 'failed','code' => 404,'data' => "Invalid OTP", 'post_enrollment'=> json_decode($apiResponse, true)],200); + // return $this->respond(['status' => 'failed','code' => 404,'data' => "", 'post_enrollment'=> json_decode($apiResponse, true)],200); } @@ -990,7 +1072,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString()); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); + return $this->respond(['status' => 'failed', 'code' => 500, 'data' => "", 'message' => $e->getMessage()], 500); return $this->respond(['status' => 'failed', 'code' => 200, 'post_enrollment' => json_decode($apiResponse, true)], 200); } } @@ -1068,7 +1150,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Mpin - Exist"); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'success','code' => 200,'data' => "Mpin - exist" , 'Mpin' =>$employeeData["mpin"], 'is_mpin_skipped' => $employeeData['is_mpin_skipped'], 'is_biometric_enabled' => $employeeData['is_biometric_enabled']],200); + return $this->respond(['status' => 'success','code' => 200,'data' => "", 'message' => "Mpin - exist" , 'Mpin' =>$employeeData["mpin"], 'is_mpin_skipped' => $employeeData['is_mpin_skipped'], 'is_biometric_enabled' => $employeeData['is_biometric_enabled']],200); } else { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Mpin - not found in PRE so call the thirdpartapi to the POST to check the MPIN"); log_message('error', ' '); @@ -1081,7 +1163,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString()); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500); + return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $e->getMessage()],500); } } diff --git a/app/Helpers/RestAuthHelper.php b/app/Helpers/RestAuthHelper.php index 27d16b0..1308676 100644 --- a/app/Helpers/RestAuthHelper.php +++ b/app/Helpers/RestAuthHelper.php @@ -285,6 +285,10 @@ class RestAuthHelper ->where('EP.is_active', 1) ->whereIn('EP.status', ['draft', 'enrolled']); + if (!empty($otp)) { + $builder->where('employees.otp', $otp); + } + if (!empty($old_mpin)) { $builder->where('employees.mpin', $old_mpin); } diff --git a/app/Helpers/sendMailNotification.php b/app/Helpers/sendMailNotification.php index 01ff5d5..8698874 100755 --- a/app/Helpers/sendMailNotification.php +++ b/app/Helpers/sendMailNotification.php @@ -875,7 +875,7 @@ class sendMailNotification // $client_id = $params['client_id']; // $client_policy_id = $params['client_policy_id']; // $common = $params['common']; -data: name: name: + // data: name: name: // $clientModel = new ClientModel(); // $clientPolicyModel = new ClientPolicyModel(); // $PolicyPremium1Model = new PolicyPremium1Model(); diff --git a/app/Helpers/sms_helper.php b/app/Helpers/sms_helper.php new file mode 100644 index 0000000..e8398f6 --- /dev/null +++ b/app/Helpers/sms_helper.php @@ -0,0 +1,44 @@ + $apiKey, + 'MobileNo' => $mobile, + 'SenderID' => $senderId, + 'Message' => $message, + 'ServiceName' => $serviceName, + 'DLTTemplateID' => $templateId, + ]); + + // Send request + $response = @file_get_contents($url); + + log_message('info' , 'SMS - Response '.$response); + + // If response failed + if ($response === FALSE) { + return ['status' => 'failed', 'message' => 'Failed to send SMS.']; + } + + + return ['status' => 'success', 'message' => 'OTP sent successfully', 'api_response' => $response]; + } +} diff --git a/app/Models/ClientBranchModel.php b/app/Models/ClientBranchModel.php index 100f503..695cd16 100755 --- a/app/Models/ClientBranchModel.php +++ b/app/Models/ClientBranchModel.php @@ -25,6 +25,7 @@ class ClientBranchModel extends Model "gst", "sez", "units", + "post_branch_id" ]; public function getBranchAndContactByBranchId($branch_id){ diff --git a/app/Models/ClientModel.php b/app/Models/ClientModel.php index 1013d0d..89c77d6 100755 --- a/app/Models/ClientModel.php +++ b/app/Models/ClientModel.php @@ -105,13 +105,21 @@ class ClientModel extends Model } - public function getCreatedByUserName(){ + public function getCreatedByUserName($client_type = null){ - return $this->db->table('clients') + // return $this->db->table('clients') + // ->select('clients.*') + // ->where('is_active', 1) + // ->get() + // ->getResult(); + $query = $this->db->table('clients') ->select('clients.*') - ->where('is_active', 1) - ->get() - ->getResult(); + ->where('clients.is_active', 1); + if (!empty($client_type)) { + $query->where('clients.client_type', $client_type); + } + $data = $query->get()->getResult(); + return $data; } @@ -206,5 +214,19 @@ class ClientModel extends Model return $result; } + public function isDuplicateByClientBranch($value, $field, $clientId, $branchId) + { + $builder = $this->db->table('level_contacts lc') + ->select('lc.id') + ->join('client_branch cb', 'lc.ref_id = cb.id', 'left') + ->where('lc.'.$field, $value) + ->where('lc.contact_type', 'client') + ->where('cb.client_id', $clientId) + ->where('lc.ref_id', $branchId) + ->get(); + + return $builder->getNumRows() > 0 ? true : false; + } + } diff --git a/app/Views/client_basic_info.php b/app/Views/client_basic_info.php index ab3233a..29d2c76 100755 --- a/app/Views/client_basic_info.php +++ b/app/Views/client_basic_info.php @@ -91,13 +91,14 @@ input:checked + .slider:before {
-
diff --git a/app/Views/client_branch.php b/app/Views/client_branch.php index 9ef5c5a..fc524c9 100755 --- a/app/Views/client_branch.php +++ b/app/Views/client_branch.php @@ -70,6 +70,12 @@
+ +
+ +
+
+
+ +
+
+
+ + + + + + + + + + diff --git a/app/Views/enrollment_list.php b/app/Views/enrollment_list.php index d88a461..bc59899 100755 --- a/app/Views/enrollment_list.php +++ b/app/Views/enrollment_list.php @@ -314,17 +314,18 @@ var client_id = $('#clients').val(); var branch_id = $('#branch_id').val(); - if (client_id == '0' || branch_id == '0') { + var client_policy_id = $('#client_policy_id').val(); + if (client_id == '0' || branch_id == '0' || client_policy_id == '0') { Swal.fire({ title: "warning!", - text: 'Please select the Client and Client Branch.', + text: 'Please select the Client, Client Branch and Client Policy.', icon: "warning" }); return false; } $.ajax({ - url: '' + '/employee/empby_client_clientbranch/' + client_id + '/' + branch_id, + url: '' + '/employee/empby_client_clientbranch/' + client_id + '/' + branch_id + '/' + client_policy_id, method: 'GET', headers: { "Content-Type": "application/json", @@ -359,7 +360,7 @@ var loggedIn_count = 0; data.forEach(function(employee, index) { - if(employee.emp_status !== 'draft'){ + if(employee.emp_status === 'enrolled'){ var enrolled = 'Yes'; enrolled_count++; }else{ @@ -369,8 +370,13 @@ if(employee.user_type === 'employee'){ var loggedIn = 'Yes'; loggedIn_count++; - }else{ - var loggedIn = 'No'; + }else{ + + if (employee.relationship && employee.relationship.toLowerCase() === "self") { + var loggedIn = 'No'; + }else{ + var loggedIn = '-'; + } } table.row.add([ @@ -485,6 +491,8 @@ $('#emp_enrolled_view_click').on('click', function() { + + console.log($(this).hasClass('click_hover')); if ($(this).hasClass('click_hover')) { // $(this).removeClass('click_hover'); $('.click_hover').each(function() { @@ -496,7 +504,7 @@ $(this).removeClass('click_hover'); }); $('#emp_enrolled_view_click').addClass('click_hover'); - filterTable(3, 'Yes'); // Filter "Enrolled" column (4th column, index 3) + filterTable(4, 'Yes'); // Filter "Enrolled" column (4th column, index 3) } }); @@ -512,7 +520,7 @@ $(this).removeClass('click_hover'); }); $('#emp_not_enrolled_view_click').addClass('click_hover'); - filterTable(3, 'No'); // Filter "Enrolled" column (4th column, index 3) + filterTable(4, 'No'); // Filter "Enrolled" column (4th column, index 3) } }); @@ -528,7 +536,7 @@ $(this).removeClass('click_hover'); }); $('#emp_logged_in_view_click').addClass('click_hover'); - filterTable(4, 'Yes'); // Filter "Logged-In" column (5th column, index 4) + filterTable(5, 'Yes'); // Filter "Logged-In" column (5th column, index 4) } }); @@ -544,7 +552,7 @@ $(this).removeClass('click_hover'); }); $('#emp_not_logged_in_view_click').addClass('click_hover'); - filterTable(4, 'No'); // Filter "Logged-In" column (5th column, index 4) + filterTable(5, 'No'); // Filter "Logged-In" column (5th column, index 4) } }); @@ -738,7 +746,6 @@ }); }); - function sendManualReminder(input) { console.log('sendManualReminder function called'); @@ -779,44 +786,45 @@ return false; } - Swal.fire({ - title: "Do you want to send reminder mail?", - showDenyButton: true, - showCancelButton: false, - confirmButtonText: "Yes,Send", - denyButtonText: "Don't Send" - }).then((result) => { + Swal.fire({ + title: "Do you want to send reminder mail?", + showDenyButton: true, + showCancelButton: false, + confirmButtonText: "Yes,Send", + denyButtonText: "Don't Send" + }).then((result) => { - if (result.isConfirmed) { + if (result.isConfirmed) { - $.ajax({ - url: '' + client_id + '/' + client_branch_id + '/' + client_policy_id, - type: "GET", - dataType: 'json', - success: function(res) { + $.ajax({ + url: '' + client_id + '/' + client_branch_id + '/' + client_policy_id, + type: "GET", + dataType: 'json', + success: function(res) { - console.log('send_manual_reminder', res) + console.log('send_manual_reminder', res) - $('.loader').fadeOut(); - $('.loader-mask').delay(350).fadeOut('slow'); + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); - if(res.status == false){ - toastr.info(res.message, 'INFO'); - }else{ - toastr.success(res.message, 'SUCCESS'); + if(res.status == false){ + toastr.info(res.message, 'INFO'); + }else{ + toastr.success(res.message, 'SUCCESS'); + } + + }, + error: function(xhr, status, error) { + console.error(xhr.responseText); + console.error(status, error); + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); } - - }, - error: function(xhr, status, error) { - console.error(xhr.responseText); - console.error(status, error); - $('.loader').fadeOut(); - $('.loader-mask').delay(350).fadeOut('slow'); - } - }); - // Swal.fire("Saved!", "", "success"); - } - }); + }); + // Swal.fire("Saved!", "", "success"); + } + }); } + diff --git a/app/Views/layout/footer.php b/app/Views/layout/footer.php index 9a52853..5026672 100755 --- a/app/Views/layout/footer.php +++ b/app/Views/layout/footer.php @@ -932,6 +932,29 @@ function confirmActionSweertAlert(message = "Are you sure?", confirmText = "Yes, + + \ No newline at end of file diff --git a/app/Views/layout/header.php b/app/Views/layout/header.php index 33630d0..aa201ad 100755 --- a/app/Views/layout/header.php +++ b/app/Views/layout/header.php @@ -329,84 +329,8 @@ }); - - @@ -420,24 +344,219 @@ -
+
+ + +
+ + + +