@@ -222,9 +225,43 @@
regex = vals.join('|');
table.column(0).search(regex, true, false).draw();
});
-
});
+
+
+ // Select the column by index (1) and apply a search that excludes "Test"
+ // The regex: ^((?!Test).)*$
+ // - ^...$ anchors the start and end
+ // - (?!Test) is a negative lookahead, failing the match if "Test" is found
+ function filterVal(userid) {
+ var currentSearch = table.column(9).search();
+ if (currentSearch.includes(userid)) {
+ table.column(9).search( '' ).draw();
+ $("#filterValBtn").removeClass(`btn-primary`).addClass(`btn-outline-primary`);
+ } else {
+ table.column(9).search( `^((?!${userid}).)*$`, true, false ).draw();
+ $("#filterValBtn").removeClass(`btn-outline-primary`).addClass(`btn-primary`);
+ }
+ }
+
+ function unvalidate(accessnumber,userid) {
+ if(confirm("Are you sure?")) {
+ fetch(`${BASE_URL}/api/request/validate/${accessnumber}`, {
+ method: "DELETE",
+ headers: {"Content-Type": "application/json"},
+ body: JSON.stringify({ userid:`${userid}` })
+ }).then(response => {
+ console.log("Response:", response);
+ $(`#val1user-${accessnumber}`).text("1 : ");
+ $(`#val2user-${accessnumber}`).text("2 : ");
+ $(`#valBtn-${accessnumber}`).prop('disabled', false);
+ $(`#unvalBtn-${accessnumber}`).prop('disabled', false);
+ }).catch(error => {
+ console.log("Error:", error);
+ });
+ }
+ }
+
const BASE_URL = "= base_url(); ?>";
diff --git a/app/Views/admin/modal_unvalidate.php b/app/Views/admin/modal_unvalidate.php
new file mode 100644
index 0000000..790953c
--- /dev/null
+++ b/app/Views/admin/modal_unvalidate.php
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/public/js/admin/request.js b/public/js/admin/request.js
index 7302f96..89c03e5 100644
--- a/public/js/admin/request.js
+++ b/public/js/admin/request.js
@@ -21,31 +21,67 @@
});
}
- function unvalidate(accessnumber,userid) {
- if(confirm("Are you sure?")) {
- fetch(`${BASE_URL}/api/request/validate/${accessnumber}`, {
- method: "DELETE",
- headers: {"Content-Type": "application/json"},
- body: JSON.stringify({ userid:`${userid}` })
- }).then(response => {
- console.log("Response:", response);
- $(`#val1user-${accessnumber}`).text("1 : ");
- $(`#val2user-${accessnumber}`).text("2 : ");
- $(`#valBtn-${accessnumber}`).prop('disabled', false);
- $(`#unvalBtn-${accessnumber}`).prop('disabled', false);
- }).catch(error => {
- console.log("Error:", error);
- });
-
- /*
- const cell = document.querySelector(`[data-acc="${accessnumber}"]`);
- if(cell){
- cell.querySelector(".badge").textContent = "0";
- const btn = cell.querySelector(".invalidate-btn");
- if (btn) btn.remove();
+ function unvalidateShow(accessnumber) {
+ const modalBody = $('#unvalidateModal .modal-body');
+ modalBody.html('
Loading...
Fetching verification details for #' + accessnumber + '...
');
+
+ $.ajax({
+ url: `${BASE_URL}/api/request/unvalidate/${accessnumber}`,
+ method: 'GET',
+ dataType: 'html',
+ success: function(response) {
+ modalBody.html(response);
+ },
+ error: function(xhr, status, error) {
+ console.error("AJAX Error:", status, error);
+ modalBody.html(`
+
+
Error loading content: Could not retrieve verification details.
+
Details: ${error}
+
+ `);
}
- */
- }
+ });
+ }
+ // Function to convert form data into a simple object
+ function formToObject(formElement) {
+ const data = new FormData(formElement);
+ const obj = {};
+ for (const [key, value] of data.entries()) {
+ obj[key] = value;
+ }
+ return obj;
+ }
+
+ // Function to handle the DELETE request
+ function unvalidateRequest(formId, accessnumber) {
+ const formElement = document.getElementById(formId);
+
+ if (confirm("Are you sure you want to unvalidate this request?")) {
+
+ var formDataObject = formToObject(formElement);
+
+ fetch(`${BASE_URL}/api/request/validate/${accessnumber}`, {
+ method: "DELETE",
+ headers: { "Content-Type": "application/json"},
+ body: JSON.stringify( formDataObject )
+ })
+ .then(response => {
+ if (!response.ok) { return response.json().then(err => { throw err; }); }
+ return response.json();
+ })
+ .then(data => {
+ $(`#unvalidateModal`).modal('hide');
+ console.log("Success Response:", data);
+ $(`#val1user-${accessnumber}`).text("1 : ");
+ $(`#val2user-${accessnumber}`).text("2 : ");
+ $(`#valBtn-${accessnumber}`).prop('disabled', false);
+ })
+ .catch(error => {
+ console.error("Fetch Error:", error);
+ alert(`Error unvalidating the request. Details: ${error.message || error}`);
+ });
+ }
}
function validate(accessnumber,userid) {