diff --git a/go/internal/cmc/handlers/quotes/quotes.go b/go/internal/cmc/handlers/quotes/quotes.go
index 2b2945f9..c377abc7 100644
--- a/go/internal/cmc/handlers/quotes/quotes.go
+++ b/go/internal/cmc/handlers/quotes/quotes.go
@@ -710,11 +710,13 @@ func (h *QuotesHandler) DisableReminders(w http.ResponseWriter, r *http.Request)
// Parse form data
if err := r.ParseForm(); err != nil {
+ log.Printf("Failed to parse form for disable reminders: %v", err)
http.Error(w, "Invalid form data", http.StatusBadRequest)
return
}
quoteIDStr := r.FormValue("quote_id")
+ log.Printf("DisableReminders: received quote_id='%s', all form values: %v", quoteIDStr, r.Form)
if quoteIDStr == "" {
http.Error(w, "Missing quote_id", http.StatusBadRequest)
return
diff --git a/go/templates/quotes/index.html b/go/templates/quotes/index.html
index fc2bb726..906a1431 100644
--- a/go/templates/quotes/index.html
+++ b/go/templates/quotes/index.html
@@ -38,16 +38,16 @@
{{if .LatestReminderType}}
{{if or (eq .LatestReminderType "First Reminder") (eq .LatestReminderType "First Reminder Sent")}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{else if or (eq .LatestReminderType "Second Reminder") (eq .LatestReminderType "Second Reminder Sent")}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{else if or (eq .LatestReminderType "Final Reminder") (eq .LatestReminderType "Final Reminder Sent")}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{else}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{end}}
{{else}}
- No Reminder Sent
+ No Reminder Sent{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{end}}
|
@@ -137,16 +137,16 @@
|
{{if .LatestReminderType}}
{{if or (eq .LatestReminderType "First Reminder Sent") (eq .LatestReminderType "First Reminder")}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{else if or (eq .LatestReminderType "Second Reminder Sent") (eq .LatestReminderType "Second Reminder")}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{else if or (eq .LatestReminderType "Final Reminder Sent") (eq .LatestReminderType "Final Reminder")}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{else}}
- {{.LatestReminderType}}
+ {{.LatestReminderType}}{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{end}}
{{else}}
- No Reminder Sent
+ No Reminder Sent{{if .RemindersDisabled}}Automatic reminders disabled{{end}}
{{end}}
|
@@ -339,6 +339,7 @@ function hideConfirmModal() {
}
function showDisableModal(quoteID, enquiryRef) {
+ console.log('showDisableModal called with:', quoteID, enquiryRef);
currentQuoteID = quoteID;
document.getElementById('disableModalQuoteID').textContent = quoteID;
document.getElementById('disableModalEnquiryRef').textContent = enquiryRef;
@@ -420,15 +421,18 @@ document.getElementById('modalConfirmBtn').addEventListener('click', async funct
document.getElementById('disableModalCancelBtn').addEventListener('click', hideDisableModal);
document.getElementById('disableModalConfirmBtn').addEventListener('click', async function() {
+ console.log('Disable confirm clicked, currentQuoteID:', currentQuoteID);
if (currentQuoteID) {
- const formData = new FormData();
+ const formData = new URLSearchParams();
formData.append('quote_id', currentQuoteID);
+ console.log('FormData quote_id:', formData.get('quote_id'));
try {
const response = await fetch('/go/quotes/disable-reminders', {
method: 'POST',
headers: {
- 'X-Requested-With': 'XMLHttpRequest'
+ 'X-Requested-With': 'XMLHttpRequest',
+ 'Content-Type': 'application/x-www-form-urlencoded'
},
body: formData
});
@@ -439,14 +443,25 @@ document.getElementById('disableModalConfirmBtn').addEventListener('click', asyn
rows.forEach(row => {
const form = row.querySelector('form');
if (form && form.querySelector(`input[name="quote_id"][value="${currentQuoteID}"]`)) {
- // Update reminder badge to show "Reminders Disabled"
- const reminderCell = row.querySelector('td:nth-child(6)');
- reminderCell.innerHTML = 'Reminders Disabled';
+ const enquiryRef = form.querySelector('input[name="enquiry_ref"]').value;
- // Disable the action buttons
- const buttonGroup = row.querySelector('.inline-flex');
- if (buttonGroup) {
- buttonGroup.innerHTML = 'Disabled';
+ // Update the dropdown "Disable Future Reminders" button to "Re-enable Reminders"
+ const dropdown = row.querySelector('div.absolute.right-0');
+ if (dropdown) {
+ const disableButton = dropdown.querySelector('button[onclick*="showDisableModal"]');
+ if (disableButton) {
+ disableButton.textContent = 'Re-enable Reminders';
+ disableButton.className = 'block w-full text-left px-4 py-2 hover:bg-gray-100 text-green-600';
+ disableButton.setAttribute('onclick', `showEnableModal('${currentQuoteID}', '${enquiryRef}')`);
+ }
+ }
+
+ // Add disabled icon to reminder badge
+ const reminderCell = row.querySelector('td:nth-child(6)');
+ const badge = reminderCell.querySelector('span');
+ if (badge && !badge.querySelector('.fa-ban')) {
+ const iconHTML = 'Automatic reminders disabled';
+ badge.insertAdjacentHTML('beforeend', iconHTML);
}
}
});
@@ -477,14 +492,15 @@ document.getElementById('enableModalCancelBtn').addEventListener('click', hideEn
document.getElementById('enableModalConfirmBtn').addEventListener('click', async function() {
if (currentQuoteID) {
- const formData = new FormData();
+ const formData = new URLSearchParams();
formData.append('quote_id', currentQuoteID);
try {
const response = await fetch('/go/quotes/enable-reminders', {
method: 'POST',
headers: {
- 'X-Requested-With': 'XMLHttpRequest'
+ 'X-Requested-With': 'XMLHttpRequest',
+ 'Content-Type': 'application/x-www-form-urlencoded'
},
body: formData
});
@@ -495,57 +511,25 @@ document.getElementById('enableModalConfirmBtn').addEventListener('click', async
rows.forEach(row => {
const form = row.querySelector('form');
if (form && form.querySelector(`input[name="quote_id"][value="${currentQuoteID}"]`)) {
- // Get the latest reminder type to show appropriate button
- const reminderCell = row.querySelector('td:nth-child(6)');
- const reminderText = reminderCell.textContent.trim();
-
- // Update reminder badge back to current state (remove "Disabled")
- // Keep the existing reminder type badge
-
- // Re-enable the action buttons
- const actionsCell = row.querySelector('td:nth-child(8)');
- const currentReminderLevel = reminderText.includes('Final') ? 3 :
- reminderText.includes('Second') ? 2 :
- reminderText.includes('First') ? 1 : 0;
-
const enquiryRef = form.querySelector('input[name="enquiry_ref"]').value;
- const customerName = form.querySelector('input[name="customer_name"]').value;
- let buttonHTML = '';
- if (currentReminderLevel === 0) {
- buttonHTML = ``;
- } else if (currentReminderLevel === 1) {
- buttonHTML = ``;
- } else {
- buttonHTML = ``;
+ // Update the dropdown "Re-enable Reminders" button back to "Disable Future Reminders"
+ const dropdown = row.querySelector('div.absolute.right-0');
+ if (dropdown) {
+ const enableButton = dropdown.querySelector('button[onclick*="showEnableModal"]');
+ if (enableButton) {
+ enableButton.textContent = 'Disable Future Reminders';
+ enableButton.className = 'block w-full text-left px-4 py-2 hover:bg-gray-100 text-red-600';
+ enableButton.setAttribute('onclick', `showDisableModal('${currentQuoteID}', '${enquiryRef}')`);
+ }
}
- const dropdownHTML = ``;
-
- actionsCell.querySelector('form').innerHTML = `
-
-
-
-
-
-
-
-
-
- ${buttonHTML}
- ${dropdownHTML}
-
-
-
-
-
-
-
-
-
-
-
- `;
+ // Remove disabled icon from reminder badge
+ const reminderCell = row.querySelector('td:nth-child(6)');
+ const disabledIcon = reminderCell.querySelector('.fa-ban');
+ if (disabledIcon) {
+ disabledIcon.closest('span.relative.group').remove();
+ }
}
});
} else {
|