MERGE_UAT_FORM_VALIDATION&MEDIBUDDY&LIVE_ISSUES
This commit is contained in:
commit
278f43f4af
@ -41,6 +41,7 @@ class Acl
|
||||
'#^/sales/dashboard#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID, STAFF_ROLE_ID]],
|
||||
'#^/sales#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID, STAFF_ROLE_ID]],
|
||||
'#^/expense#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID, STAFF_ROLE_ID]],
|
||||
'#^/sendDataToTPA#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID, ACCOUNT_MANAGER_ROLE_ID, MANAGER_ROLE_ID]],
|
||||
|
||||
|
||||
|
||||
|
||||
@ -850,6 +850,7 @@ $routes->get('HealthIndiaGetBenefDetails','HealthIndiaApiController::HealthIndia
|
||||
// API service (Don't delete)
|
||||
$routes->post("ecardRequest", "ApiServiceController::ecardRequest");
|
||||
$routes->post("getTPAID", "ApiServiceController::getTPAID");
|
||||
$routes->post("sendDataToTPA", "ApiServiceController::sendDataToTPA");
|
||||
$routes->get('fileDownload','MediAssistApiController::fileDownload');
|
||||
|
||||
|
||||
|
||||
@ -250,6 +250,10 @@ class JobWorker extends AdminController
|
||||
'visitOffBoard' => [
|
||||
'type' => 'CC', // Handler Category
|
||||
'handler' => 'App\Controllers\EmployeeController',
|
||||
],
|
||||
'ICICIPushEmployeeDetails' => [
|
||||
'type' => 'CC', // Handler Category
|
||||
'handler' => 'App\Controllers\ICICILombardController',
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
@ -1383,29 +1383,28 @@ class MediAssistApiController extends BaseController
|
||||
|
||||
$plainJson = json_encode($payload, JSON_UNESCAPED_SLASHES);
|
||||
|
||||
// Derive a 32‑byte key (AES‑256) and 16‑byte IV from the provided strings
|
||||
// $key = substr(hash('sha256', $keyString, true), 0, 32);
|
||||
// $iv = substr(hash('md5', $ivString, true), 0, 16);
|
||||
|
||||
// Encrypt with AES‑256‑CBC + PKCS7 padding (OpenSSL default)
|
||||
$cipherTextRaw = openssl_encrypt($plainJson, $cipher_algorithm, $keyString, OPENSSL_RAW_DATA, $ivString);
|
||||
// ✅ EXACT same as C#
|
||||
$key = substr(str_pad($keyString, 32, '0'), 0, 32);
|
||||
$iv = substr(str_pad($ivString, 16, '0'), 0, 16);
|
||||
|
||||
// Encrypt
|
||||
$cipherTextRaw = openssl_encrypt($plainJson, $cipher_algorithm, $key, OPENSSL_RAW_DATA, $iv);
|
||||
|
||||
if ($cipherTextRaw === false) {
|
||||
log_message('error', 'MEDI_ASSIST - Wellness SSO URL generation | Encryption failed while generating Medi Assist wellness token.');
|
||||
return [
|
||||
'status' => 'failed',
|
||||
'message' => 'Encryption failed while generating Medi Assist wellness token.',
|
||||
];
|
||||
throw new \Exception('Encryption failed.');
|
||||
}
|
||||
|
||||
// ✅ Step 1: Base64 encode
|
||||
$base64Cipher = base64_encode($cipherTextRaw);
|
||||
|
||||
// Base64 encode and URL‑encode for use as EncryptedSSO
|
||||
$encryptedSSO = urlencode(base64_encode($cipherTextRaw));
|
||||
// $encryptedSSO = rtrim(strtr(base64_encode($cipherTextRaw), '+/', '-_'), '=');
|
||||
// ✅ Step 2: PREFIX IV (CRITICAL — matches C#)
|
||||
$encryptedSSO = $iv . $base64Cipher;
|
||||
|
||||
// Build the final login URL
|
||||
$loginUrl = str_replace(['{0}', '{1}'], [$planId, $encryptedSSO], $loginUrlTemplate);
|
||||
// ⚠️ URL encode (VERY IMPORTANT for this format)
|
||||
$finalSSO = urlencode($encryptedSSO);
|
||||
|
||||
// Build URL
|
||||
$loginUrl = str_replace(['{0}', '{1}'], [$planId, $finalSSO], $loginUrlTemplate);
|
||||
|
||||
log_message('error', 'MEDI_ASSIST - Wellness SSO URL generation | Medi Assist wellness SSO URL generated successfully.');
|
||||
|
||||
|
||||
@ -1429,7 +1429,7 @@ class TestingController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
public function testMediAssistWellness()
|
||||
public function testMediAssistWellness2()
|
||||
{
|
||||
// Config
|
||||
$keyString = env('MEDIASSIST_WELLNESS_KEY');
|
||||
@ -1489,6 +1489,76 @@ class TestingController extends BaseController
|
||||
], 200);
|
||||
}
|
||||
|
||||
public function testMediAssistWellness()
|
||||
{
|
||||
try {
|
||||
// Config
|
||||
$keyString = env('MEDIASSIST_WELLNESS_KEY');
|
||||
$ivString = env('MEDIASSIST_WELLNESS_IV');
|
||||
$loginUrlTemplate = env('MEDIASSIST_WELLNESS_LOGIN_URL');
|
||||
$partnerCorpId = '15963';
|
||||
|
||||
$cipher_algorithm = 'AES-256-CBC';
|
||||
|
||||
// Payload
|
||||
$payload = [
|
||||
'Id' => '15022',
|
||||
'expiryTime' => (string)(time() + 600),
|
||||
'CPartnerId' => $partnerCorpId,
|
||||
];
|
||||
|
||||
$plainJson = json_encode($payload, JSON_UNESCAPED_SLASHES);
|
||||
|
||||
// ✅ EXACT same as C#
|
||||
$key = substr(str_pad($keyString, 32, '0'), 0, 32);
|
||||
$iv = substr(str_pad($ivString, 16, '0'), 0, 16);
|
||||
|
||||
// Encrypt
|
||||
$cipherTextRaw = openssl_encrypt($plainJson,$cipher_algorithm,$key,OPENSSL_RAW_DATA,$iv);
|
||||
|
||||
if ($cipherTextRaw === false) {
|
||||
throw new \Exception('Encryption failed.');
|
||||
}
|
||||
|
||||
// ✅ Step 1: Base64 encode
|
||||
$base64Cipher = base64_encode($cipherTextRaw);
|
||||
|
||||
// ✅ Step 2: PREFIX IV (CRITICAL — matches C#)
|
||||
$encryptedSSO = $iv . $base64Cipher;
|
||||
|
||||
// ⚠️ URL encode (VERY IMPORTANT for this format)
|
||||
$finalSSO = urlencode($encryptedSSO);
|
||||
|
||||
// Build URL
|
||||
$loginUrl = str_replace(
|
||||
['{0}', '{1}'],
|
||||
[$partnerCorpId, $finalSSO],
|
||||
$loginUrlTemplate
|
||||
);
|
||||
|
||||
return $this->respond([
|
||||
'status' => true,
|
||||
'data' => [
|
||||
'loginUrl' => $loginUrl,
|
||||
'encryptedSSO' => $encryptedSSO,
|
||||
'base64Only' => $base64Cipher,
|
||||
'ivUsed' => $iv,
|
||||
'plainPayload' => $payload,
|
||||
],
|
||||
], 200);
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
|
||||
log_message('error', 'MediAssist SSO Error: ' . $e->getMessage());
|
||||
|
||||
return $this->respond([
|
||||
'status' => false,
|
||||
'message' => $e->getMessage(),
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function decryptMediAssistWellness($encryptedSSO)
|
||||
{
|
||||
// Config
|
||||
|
||||
@ -506,6 +506,7 @@ class VidalApiController extends BaseController
|
||||
$tpa_claim_no = $claimData['claimNumber'] ?? '';
|
||||
$currentStatus = $claimData['status'] ?? '';
|
||||
$tpa_claim_type = $claimData['claimType'] ?? '';
|
||||
$tpa_shortfall_no = $claimData['shortfallNo'] ?? '';
|
||||
$doa = !empty($claimData['doa'] ?? null) ? date('Y-m-d', strtotime(str_replace('/', '-', $claimData['doa']))) : null;
|
||||
|
||||
|
||||
@ -532,6 +533,9 @@ class VidalApiController extends BaseController
|
||||
if (!empty($tpa_claim_type)) {
|
||||
$updateArray['tpa_claim_type'] = $tpa_claim_type;
|
||||
}
|
||||
if (!empty($tpa_shortfall_no)) {
|
||||
$updateArray['tpa_shortfall_no'] = $tpa_shortfall_no;
|
||||
}
|
||||
|
||||
if($ticket['doa'] == $doa || $ticket['claim_number'] == $tpa_claim_no){
|
||||
// UPDATE ticket_master
|
||||
@ -1078,6 +1082,7 @@ class VidalApiController extends BaseController
|
||||
tm.tpa_no as memberId,
|
||||
tm.tpa_claim_push_reference_no as claimInwardNO,
|
||||
tm.tpa_claim_id as claimNO,
|
||||
tm.tpa_shortfall_no as shortfallNO,
|
||||
cp.policy_no as policyNo,
|
||||
cp.policy_start_date as startDate,
|
||||
cp.policy_end_date as endDate,
|
||||
@ -1150,7 +1155,7 @@ class VidalApiController extends BaseController
|
||||
|
||||
// 4. PREPARE REQUEST BODY
|
||||
$body = [
|
||||
"shortFallNo" => $ticket['claimNO'], // or actual shortfall number if different (GUR-0326-CL-0001471)
|
||||
"shortFallNo" => $ticket['shortfallNO'],
|
||||
];
|
||||
|
||||
// If single file → fileId
|
||||
|
||||
@ -2047,7 +2047,7 @@ input:checked + .slider_blue::before {
|
||||
}
|
||||
|
||||
//append the CD Account number for the dropdown
|
||||
function appendCDACNO(data, select = null) {
|
||||
function appendCDACNOOld(data, select = null) {
|
||||
|
||||
//console.log('appendCDACNO', data);
|
||||
//console.log('appendCDACNO', select);
|
||||
@ -2084,6 +2084,30 @@ input:checked + .slider_blue::before {
|
||||
$('#cd_ac_no').val(select).trigger('change');
|
||||
}
|
||||
}
|
||||
|
||||
function appendCDACNO(data, select = null) {
|
||||
const $dropdown = $('#cd_ac_no');
|
||||
|
||||
// 1. Build everything as a single string/fragment instead of multiple appends
|
||||
let optionsHtml = '<option value="">Select CD Account Number</option>';
|
||||
|
||||
if (!data || data.length === 0) {
|
||||
optionsHtml += '<option value="add_cd">+ Add New CD</option>';
|
||||
} else {
|
||||
// 2. Faster Loop and String Concatenation
|
||||
$.each(data, function(index, item) {
|
||||
optionsHtml += `<option value="${item.id}">${item.cd_ac_no}</option>`;
|
||||
});
|
||||
}
|
||||
|
||||
// 3. Single DOM update (Idhu dhaan performance-ah boost pannum)
|
||||
$dropdown.html(optionsHtml);
|
||||
|
||||
// 4. Handle Selection
|
||||
if (select) {
|
||||
$dropdown.val(select).trigger('change');
|
||||
}
|
||||
}
|
||||
|
||||
// append Base Policy to the dropdown for edit only
|
||||
function appendBasePolicyList(data, select = null)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user