diff --git a/ipi-survey-platform/src/pages/Admin/configuration/QuarterlyWindows.jsx b/ipi-survey-platform/src/pages/Admin/configuration/QuarterlyWindows.jsx index 746e776..ed51dd7 100644 --- a/ipi-survey-platform/src/pages/Admin/configuration/QuarterlyWindows.jsx +++ b/ipi-survey-platform/src/pages/Admin/configuration/QuarterlyWindows.jsx @@ -2,7 +2,7 @@ import React from 'react'; import Table from '@/components/common/Table'; import { TextField, SelectField, DateField } from '@/components/common/FormControls'; import StatusBadge from '@/components/common/StatusBadge'; -import { createQuarterlyWindow, updateQuarterlyWindow, getQuarterlyWindows } from '@/services/configuration/quarterlyWindows'; +import { createQuarterlyWindow, updateQuarterlyWindow, getQuarterlyWindows, getQuarterlyWindowById } from '@/services/configuration/quarterlyWindows'; const downloadIconSrc = '/assets/images/DownloadSimple.svg'; const addIconSrc = '/assets/images/ic_baseline-plus.svg'; @@ -275,19 +275,56 @@ const QuarterlyWindows = () => { setCurrentPage((prev) => Math.min(prev, maxPage)); }, [filteredRows.length, pageSize]); - const openEditModal = (index) => { - const selected = quarterData[index]; - // Ensure dates are in the correct format for the form inputs - const formData = { - ...selected, - startDate: selected.startDate ? formatDateForInput(selected.startDate) : '', - endDate: selected.endDate ? formatDateForInput(selected.endDate) : '' - }; - setEditingRow(index); - setForm(formData); - setOriginalForm(formData); - setModalMode('edit'); - setValidationErrors({}); + const openEditModal = async (index) => { + try { + setIsLoading(true); + + // Calculate the actual index in the filtered data based on pagination + const actualIndex = (currentPage - 1) * pageSize + index; + const selected = filteredRows[actualIndex]; + + if (!selected || !selected.id) { + throw new Error('Invalid quarterly window selected'); + } + + // Fetch the latest data for this quarter + const response = await getQuarterlyWindowById(selected.id); + + if (response && response.data) { + const quarterData = response.data; + const formData = { + id: quarterData.id, + survey_name: quarterData.survey_name || '', + establishment: quarterData.establishment || '-', + year: quarterData.year?.toString() || '', + quarter: quarterData.quarter || '', + startDate: quarterData.start_date ? formatDateForInput(quarterData.start_date) : '', + endDate: quarterData.end_date ? formatDateForInput(quarterData.end_date) : '', + gracePeriod: quarterData.grace_periods_days ? `${quarterData.grace_periods_days} days` : '0 days', + submissionCount: quarterData.submission_count?.toString() || '-', + assigned: quarterData.assigned?.toString() || '0', + responded: quarterData.responded?.toString() || '0', + not_responded: quarterData.not_responded?.toString() || '0', + status: quarterData.is_active ? 'Active' : 'Inactive' + }; + + setEditingRow(actualIndex); + setForm(formData); + setOriginalForm(formData); + setModalMode('edit'); + setValidationErrors({}); + } else { + throw new Error('No data returned from server'); + } + } catch (error) { + console.error('Error in openEditModal:', error); + setToastData({ + message: 'Failed to load quarterly window details. Please try again.', + type: 'error' + }); + } finally { + setIsLoading(false); + } }; const handleCloseModal = () => { diff --git a/ipi-survey-platform/src/pages/LandingPage/component/Banner.jsx b/ipi-survey-platform/src/pages/LandingPage/component/Banner.jsx index ec63d87..25dcbcb 100644 --- a/ipi-survey-platform/src/pages/LandingPage/component/Banner.jsx +++ b/ipi-survey-platform/src/pages/LandingPage/component/Banner.jsx @@ -33,10 +33,17 @@ const Banner = () => {