diff --git a/cp/app/Controllers/ApplicationsController.php b/cp/app/Controllers/ApplicationsController.php index 62637f6..eb75f1e 100644 --- a/cp/app/Controllers/ApplicationsController.php +++ b/cp/app/Controllers/ApplicationsController.php @@ -364,9 +364,7 @@ class ApplicationsController extends Controller 'reid' => null, 'redate' => null, 'acid' => null, - 'acdate' => null, - 'rgpstatus' => null, - 'addPeriod' => null, + 'acdate' => null, 'authtype' => 'pw', 'authinfo' => $authInfo, 'phase_name' => $phaseName, @@ -1087,7 +1085,17 @@ class ApplicationsController extends Controller try { $db->beginTransaction(); - + + $db->update( + 'application_status', + [ + 'status' => 'allocated' + ], + [ + 'domain_id' => $domain['id'] + ] + ); + $currentDateTime = new \DateTime(); $crdate = $currentDateTime->format('Y-m-d H:i:s.v'); // Current timestamp diff --git a/cp/resources/views/partials/js-applications.twig b/cp/resources/views/partials/js-applications.twig index afc0b67..1c768f7 100644 --- a/cp/resources/views/partials/js-applications.twig +++ b/cp/resources/views/partials/js-applications.twig @@ -11,23 +11,29 @@ function domainLinkFormatter(cell){ var displayName = cell.getValue(); var punycodeName = cell.getRow().getData().name_o; - return `${displayName}`; + return `${displayName}`; } function actionsFormatter(cell, formatterParams, onRendered) { var rowData = cell.getRow().getData(); var actionButtons = ''; - + var isRejected = rowData.application_status.some(statusObj => statusObj.status && statusObj.status.includes('rejected')); var isInvalid = rowData.application_status.some(statusObj => statusObj.status && statusObj.status.includes('invalid')); + var isValidated = rowData.application_status.some(statusObj => statusObj.status && statusObj.status.includes('validated')); + var isAllocated = rowData.application_status.some(statusObj => statusObj.status && statusObj.status.includes('allocated')); - if (!isRejected && !isInvalid) { + if (!isRejected && !isInvalid && !isValidated && !isAllocated) { actionButtons += ` `; actionButtons += ` `; actionButtons += ` `; actionButtons += ``; + } else if ((isValidated || isAllocated) && !isRejected && !isInvalid) { + actionButtons += ` Validated`; + } else if ((isRejected || isInvalid) && !isValidated && !isAllocated) { + actionButtons += ` Invalid`; } else { - actionButtons += ` Completed`; + actionButtons += ` Completed`; } return actionButtons; @@ -45,22 +51,37 @@ // Check if statusArray is empty or not return createBadge(statusArray, 'info'); } - + function statusFormatter(cell) { var statusArray = cell.getValue(); var rowData = cell.getRow().getData(); // Get the entire row data - // Function to create a badge - function createBadge(text, badgeClass) { - return `${text}`; + // Function to create status text with appropriate class + function createStatusText(text, statusClass) { + return `${text}`; } // Check if statusArray is empty or not if (statusArray && Array.isArray(statusArray) && statusArray.length > 0) { - return statusArray.map(item => createBadge(item.status, 'lime')).join(' '); + return statusArray.map(item => { + let status = item.status.toLowerCase(); + + if (status.includes('invalid') || status.includes('rejected')) { + return createStatusText(item.status, 'red'); + } else if (status.includes('validated') || status.includes('allocated')) { + return createStatusText(item.status, 'green'); + } else if (status.includes('pendingvalidation')) { + return createStatusText(item.status, 'orange'); // Color for pending validation + } else { + return createStatusText(item.status, 'gray'); // Default/unknown status + } + }).join(' '); + } else { + // Handle case when statusArray is empty or undefined + return `Unknown`; } } - + var searchTerm = ""; // global variable to hold the search term function updateSearchTerm(term) { @@ -123,8 +144,8 @@ placeholder: "{{ __('No Data') }}", columns:[ {formatter:"responsiveCollapse", width:30, minWidth:30, hozAlign:"center", resizable:false, headerSort:false, responsive:0}, - {title:"{{ __('Name') }}", field:"name", width:250, resizable:false, headerSort:true, formatter: domainLinkFormatter, responsive:0}, - {title:"{{ __('Applicant') }}", width:150, field:"registrant_identifier", resizable:false, headerSort:true, responsive:2}, + {title:"{{ __('Name') }}", field:"name", width:200, resizable:false, headerSort:true, formatter: domainLinkFormatter, responsive:0}, + {title:"{{ __('Applicant') }}", width:200, field:"registrant_identifier", resizable:false, headerSort:true, responsive:2}, {title:"{{ __('Creation Date') }}", width:250, minWidth:150, field:"crdate", resizable:false, headerSort:true, responsive:2}, {title:"{{ __('Phase') }}", width:150, minWidth:100, field:"phase_type", formatter: phaseFormatter, resizable:false, headerSort:true, responsive:2}, {title:"{{ __('Status') }}", width:200, field:"application_status", formatter: statusFormatter, resizable:false, headerSort:true, download:false, responsive:2},