Changes
Specific Folder FTP Upload / ftp-deploy (push) Successful in 29s Details

This commit is contained in:
Ravi Gulhane 2026-11-04 15:02:22 +05:30
parent d7e11dfacc
commit b75579f346
3 changed files with 135 additions and 29 deletions

View File

@ -95,6 +95,22 @@ class TgicsHelper
return strtolower(trim((string) $value)) === 'yes';
}
/**
* Read validation flag from a contact object (supports attribute_ prefix).
*/
public static function contactHasWhatsappValidated($item): bool
{
if (!$item) {
return false;
}
$direct = $item->tgics_whatsapp_validated ?? null;
if (self::isWhatsappValidatedFlag($direct)) {
return true;
}
$prefixed = $item->attribute_tgics_whatsapp_validated ?? null;
return self::isWhatsappValidatedFlag($prefixed);
}
/**
* Map contact_id => whether WhatsApp is validated for TGICS.
*
@ -122,11 +138,16 @@ class TgicsHelper
try {
$resp = LambdaRequest::getrequest('contact', 'contact/get_one', ['id' => $id], $accessToken);
$item = $resp->data->item ?? null;
if ($item && self::isWhatsappValidatedFlag($item->tgics_whatsapp_validated ?? '')) {
$status[$id] = true;
}
$validated = self::contactHasWhatsappValidated($item);
$status[$id] = $validated;
Log::info('[TGICS_WA_STATUS] contact lookup', [
'contact_id' => $id,
'validated' => $validated,
'flag' => $item->tgics_whatsapp_validated ?? ($item->attribute_tgics_whatsapp_validated ?? null),
'api_status' => $resp->status ?? null,
]);
} catch (\Throwable $e) {
Log::warning('TGICS WhatsApp validation lookup failed for '.$id.': '.$e->getMessage());
Log::warning('[TGICS_WA_STATUS] lookup failed for '.$id.': '.$e->getMessage());
}
}

View File

@ -1705,6 +1705,43 @@ class FormController extends Controller
}
}
// Team3 doctor tagging (single submit): mark attribute = Yes on selected doctor(s)
$team3DrTagAttributes = [
'1793772514-e8e67206-8dba-471e-b08f-deece5d36d11' => 'levoswitch_drs',
'1793767249-069bf040-1469-4117-b364-e4851e1f4bdf' => 'toba_titans_drs',
];
if (isset($team3DrTagAttributes[$formdata->form_id])) {
$tagAttribute = $team3DrTagAttributes[$formdata->form_id];
$rawContactIds = $post['contact_id'] ?? [];
if (!is_array($rawContactIds)) {
$rawContactIds = [$rawContactIds];
}
$contactIds = [];
foreach ($rawContactIds as $contactId) {
$contactId = trim((string) $contactId);
if ($contactId !== '' && strcasecmp($contactId, 'others') !== 0) {
$contactIds[] = $contactId;
}
}
$contactIds = array_values(array_unique($contactIds));
if ($contactIds !== [] && !empty($formdata->partition)) {
list($application, $domain) = explode('-', $formdata->partition);
$token = DB::table('users')->select('access_token')->where('domain', $domain)->where('permissions', 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
$userId = trim((string) ($post['user_id'] ?? ($formdata->user_id ?? '')));
if ($token->isNotEmpty() && $userId !== '') {
foreach ($contactIds as $contactId) {
LambdaRequest::postrequest('contact', 'contact/update', [
'domain' => $domain,
'application' => $application,
'user_id' => $userId,
'id' => $contactId,
$tagAttribute => 'Yes',
], $token[0]->access_token);
}
}
}
}
if($formdata->form_id == '1757055046-ba0eff4e-0d4a-4e90-b190-c59f12ef6edd') {
// if(isset($post['cresar_bs_launched']) && $post['cresar_bs_launched'] == 'Yes' ) {
list($application, $domain) = explode("-", $formdata->partition);
@ -8104,6 +8141,40 @@ class FormController extends Controller
]);
}
// Team3 doctor tagging: mark attribute = Yes on each selected doctor
$team3DrTagAttributes = [
'1793772514-e8e67206-8dba-471e-b08f-deece5d36d11' => 'levoswitch_drs',
'1793767249-069bf040-1469-4117-b364-e4851e1f4bdf' => 'toba_titans_drs',
];
if (isset($team3DrTagAttributes[$formdata->form_id])) {
$tagAttribute = $team3DrTagAttributes[$formdata->form_id];
$contactIds = [];
if (!empty($post['contact_id']) && is_array($post['contact_id'])) {
foreach ($post['contact_id'] as $contactId) {
$contactId = trim((string) $contactId);
if ($contactId !== '' && strcasecmp($contactId, 'others') !== 0) {
$contactIds[] = $contactId;
}
}
}
$contactIds = array_values(array_unique($contactIds));
if ($contactIds !== [] && !empty($formdata->partition)) {
list($application, $domain) = explode('-', $formdata->partition);
$token = DB::table('users')->select('access_token')->where('domain', $domain)->where('permissions', 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
$userId = trim((string) ($post['user_id'] ?? ($formdata->user_id ?? '')));
if ($token->isNotEmpty() && $userId !== '') {
foreach ($contactIds as $contactId) {
LambdaRequest::postrequest('contact', 'contact/update', [
'domain' => $domain,
'application' => $application,
'user_id' => $userId,
'id' => $contactId,
$tagAttribute => 'Yes',
], $token[0]->access_token);
}
}
}
}
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
$post = $this->applyPobAmounts($post);
@ -13550,6 +13621,11 @@ class FormController extends Controller
}
$validated = \App\Helpers\TgicsHelper::isContactWhatsappValidated($contactId, $domain);
\Log::info('[TGICS_WA_STATUS] poll', [
'contact_id' => $contactId,
'domain' => $domain,
'validated' => $validated,
]);
return response()->json([
'status' => 'success',

View File

@ -866,25 +866,15 @@
$('body').addClass('modal-open');
}
function startTgicsWaPoll(contactId) {
stopTgicsWaPoll();
tgicsWaPollStartedAt = Date.now();
$('#tgics-validate-wa-status').text('Waiting for validation…');
tgicsWaPollTimer = setInterval(function() {
if (Date.now() - tgicsWaPollStartedAt > 120000) {
stopTgicsWaPoll();
$('#tgics-validate-wa-status').text('Still waiting. Close and try Validate again after the doctor sends the message.');
return;
}
$.ajax({
function checkTgicsWaStatus(contactId) {
return $.ajax({
type: 'GET',
url: '/form/tgicswhatsappstatus',
data: {
contact_id: contactId,
partition: 'rapport-lifemankind'
},
success: function(res) {
}
}).then(function(res) {
if (res && res.status === 'success' && res.data && res.data.validated) {
stopTgicsWaPoll();
$('#tgics-validate-wa-status').text('Validated!');
@ -897,10 +887,29 @@
}).then(function() {
window.location.reload();
});
return true;
}
}
return false;
}, function(err) {
console.warn('[TGICS_WA_STATUS] poll failed', err);
return false;
});
}, 3000);
}
function startTgicsWaPoll(contactId) {
stopTgicsWaPoll();
tgicsWaPollStartedAt = Date.now();
$('#tgics-validate-wa-status').text('Waiting for validation…');
// Immediate check, then every 2s
checkTgicsWaStatus(contactId);
tgicsWaPollTimer = setInterval(function() {
if (Date.now() - tgicsWaPollStartedAt > 120000) {
stopTgicsWaPoll();
$('#tgics-validate-wa-status').text('Still waiting. Close and try Validate again after the doctor sends the message.');
return;
}
checkTgicsWaStatus(contactId);
}, 2000);
}
$(document).on('click', '.tgics-validate-wa-btn', function(e) {