From 60155f92cca6ffec74c2fdc69c842c9f190a37c8 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 4 Dec 2025 10:30:23 +0530 Subject: [PATCH] FEAT_WELLNESS_CARD --- app/Controllers/EmployeeRestController.php | 79 +++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 42706028..4fb1aeda 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -2997,8 +2997,9 @@ class EmployeeRestController extends AdminController } $emp_reatail_policy_data = $this->getEmpRetailPolicy($employeeSelfData); + $emp_wellness_data = $this->getWellnessUrl($employeeSelfData['id'] ?? null); - return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result, 'emp_name' => $employeeName, 'pre_policy_count' => $prePolicyCount, 'retail_policy_data' => $emp_reatail_policy_data], 200); + return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result, 'emp_name' => $employeeName, 'pre_policy_count' => $prePolicyCount, 'retail_policy_data' => $emp_reatail_policy_data, 'wellness_data' => $emp_wellness_data], 200); } else { return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200); } @@ -4715,4 +4716,80 @@ class EmployeeRestController extends AdminController return []; } } + + public function getWellnessUrl($emp_id) + { + // $emp_id = $this->request->getGet('emp_id'); + + $db = \Config\Database::connect(); + $data = $db->table('employees e') + ->select('pt.policy_type, + e.name, e.email_corporate as email, e.mobile as phone, e.emp_code as memberId, e.gender, e.dob, e.relationship as relation, + cp.policy_no as policyNumber, cp.policy_no as employeeId, cp.policy_start_date as policyStartDate, cp.policy_end_date as policyEndDate , cp.wellness_plan_id as planId') + ->join('employee_polices ep', 'e.id = ep.employee_id') + ->join('client_policy cp', 'ep.client_policy_id = cp.id') + ->join('policy_type pt', 'cp.policy_type_id = pt.id') + ->where('e.id', $emp_id) + ->where('e.emp_status', 'active') + ->where('ep.status', 'active') + ->where('e.is_active', 1) + ->where('ep.is_active', 1) + ->get() + ->getResultArray(); + + + $userParams = []; + foreach ($data as $row) { + if ($row['planId'] != null) { + $userParams['name'] = $row['name']; + $userParams['email'] = $row['email']; + $userParams['phone'] = $row['phone']; + $userParams['memberId'] = $row['employeeId']; // memberId is unique primary key. + $userParams['gender'] = $row['gender']; + $userParams['dob'] = $row['dob']; + $userParams['relation'] = $row['relation']; + $userParams['policyNumber'] = $row['policyNumber']; + $userParams['employeeId'] = $row['memberId']; + $userParams['policyStartDate']= $row['policyStartDate']; + $userParams['policyEndDate'] = $row['policyEndDate']; + $userParams['policyName'] = $row['policy_type']; + $userParams['planId'] = $row['planId']; + $userParams['moduleName'] = 'home'; + break; // stop after first GMC match + } + } + + if (empty($userParams)) { + return ['status' => 'failed','message' => 'Coming soon........!']; + } + + // echo 'coming';die(); + // Derive 32-byte key from SHA256 + $derivedKey = hash('sha256', env('VISIT_SECRET_KEY'), true); + + // Build query string like Node.js + $plainText = ''; + foreach ($userParams as $k => $v) { + $plainText .= "&{$k}={$v}"; + } + $plainText = ltrim($plainText, '&'); + + // Encrypt + $algorithm = "aes-256-cbc"; + $encrypted = openssl_encrypt($plainText, $algorithm, $derivedKey, OPENSSL_RAW_DATA, env('VISIT_IV')); + + // Base64URL encode (same as Node.js output) + $output = rtrim(strtr(base64_encode($encrypted), '+/', '-_'), '='); + + $baseURL = env('VISIT_BASE_URL'); + $clientId = env('VISIT_CLIENT_ID'); + $finalUrl = $baseURL . '/sso?userParams=' . $output . '&clientId=' . $clientId; + + if (!empty($finalUrl)) { + log_message('error', 'VISIT SSO | emp_id: '.$emp_id.' | URL: '.$finalUrl); + return ['status' => 'success','data' => $finalUrl]; + } else { + return ['status' => 'failed','message' => 'Coming soon........!']; + } + } }