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}}{{end}} {{else if or (eq .LatestReminderType "Second Reminder") (eq .LatestReminderType "Second Reminder Sent")}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{else if or (eq .LatestReminderType "Final Reminder") (eq .LatestReminderType "Final Reminder Sent")}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{else}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{end}} {{else}} - No Reminder Sent + No Reminder Sent{{if .RemindersDisabled}}{{end}} {{end}} @@ -137,16 +137,16 @@ {{if .LatestReminderType}} {{if or (eq .LatestReminderType "First Reminder Sent") (eq .LatestReminderType "First Reminder")}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{else if or (eq .LatestReminderType "Second Reminder Sent") (eq .LatestReminderType "Second Reminder")}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{else if or (eq .LatestReminderType "Final Reminder Sent") (eq .LatestReminderType "Final Reminder")}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{else}} - {{.LatestReminderType}} + {{.LatestReminderType}}{{if .RemindersDisabled}}{{end}} {{end}} {{else}} - No Reminder Sent + No Reminder Sent{{if .RemindersDisabled}}{{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 = ''; + 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 {