diff --git a/ipi-survey-platform/src/pages/ManufacturingIndex/ManufacturingIndex.jsx b/ipi-survey-platform/src/pages/ManufacturingIndex/ManufacturingIndex.jsx index a62516c..2cee996 100644 --- a/ipi-survey-platform/src/pages/ManufacturingIndex/ManufacturingIndex.jsx +++ b/ipi-survey-platform/src/pages/ManufacturingIndex/ManufacturingIndex.jsx @@ -1,4 +1,4 @@ -import React, { useState, useMemo, useEffect } from 'react'; +import React, { useState, useEffect } from 'react'; import AdminHeader from '@/components/admin/AdminHeader'; import { IconButton, @@ -18,7 +18,7 @@ import { import { Breadcrumbs } from '@mui/material'; import { Link } from 'react-router-dom'; import Card from '@/components/common/Card'; -import { getManufacturingIndex, getManufacturingMonthlyOverview } from '@/services/manufacturingIndex/ManufacturingIndex'; +import { getManufacturingIndex, getManufacturingMonthlyOverview, autoSubmitSurvey } from '@/services/manufacturingIndex/ManufacturingIndex'; // Import popup components import ManufacturingTotal from './ManufacturingIndexPopup/ManufacturingTotal'; @@ -57,7 +57,12 @@ const ManufacturingIndex = () => { const [monthlyOverviewData, setMonthlyOverviewData] = useState(null); const [isPopupOpen, setIsPopupOpen] = useState(false); const [apiLoading, setApiLoading] = useState(false); + const [quarter, setQuarter] = useState('Q2'); + const [surveySubmitLoading, setSurveySubmitLoading] = useState(false); + const [surveySubmitStatus, setSurveySubmitStatus] = useState(''); + const [surveySubmitError, setSurveySubmitError] = useState(null); const [nextScheduledRun, setNextScheduledRun] = useState(''); // Default value + const [refreshKey, setRefreshKey] = useState(0); const [pagination, setPagination] = useState({ currentPage: 1, @@ -235,7 +240,7 @@ const ManufacturingIndex = () => { }; fetchData(); - }, []); + }, [refreshKey]); // ARROW CLICK const handleMonthSelect = async (row) => { @@ -315,6 +320,46 @@ const ManufacturingIndex = () => { applyFilters(year, searchTerm); }; + const handleQuarterChange = (e) => { + const selectedQuarter = e.target.value; + setQuarter(selectedQuarter); + }; + + const handleTriggerData = () => { + setError(null); + setRefreshKey(prev => prev + 1); + }; + + useEffect(() => { + const submitSurvey = async () => { + if (year === 'All' || !quarter) { + setSurveySubmitStatus(''); + setSurveySubmitError(null); + return; + } + + try { + setSurveySubmitLoading(true); + setSurveySubmitStatus(''); + setSurveySubmitError(null); + + const response = await autoSubmitSurvey(parseInt(year, 10), quarter); + + setSurveySubmitStatus( + response?.data?.message || 'Survey auto-submit request sent successfully.' + ); + } catch (error) { + setSurveySubmitError( + error?.response?.data?.message || error.message || 'Survey auto-submit failed.' + ); + } finally { + setSurveySubmitLoading(false); + } + }; + + submitSurvey(); + }, [year, quarter]); + const handleExportCSV = () => { const headers = ['Month', 'Quarter', 'Index', 'Total Weight', 'MoM Change', 'YoY Change', 'Generated On', 'Status']; const csvContent = [ @@ -572,15 +617,31 @@ const ManufacturingIndex = () => { /> -
+
({ value: y, label: y }))} />
+
+ ({ value: q, label: q }))} + /> +
+
+ {surveySubmitLoading || surveySubmitStatus || surveySubmitError ? ( +
+ {surveySubmitLoading ? ( + Submitting survey request... + ) : surveySubmitError ? ( + {surveySubmitError} + ) : ( + {surveySubmitStatus} + )} +
+ ) : null} {/* Table */} @@ -689,4 +761,4 @@ const ManufacturingIndex = () => { ); }; -export default ManufacturingIndex; \ No newline at end of file +export default ManufacturingIndex; diff --git a/ipi-survey-platform/src/services/manufacturingIndex/ManufacturingIndex.js b/ipi-survey-platform/src/services/manufacturingIndex/ManufacturingIndex.js index 1dac9bb..4d46c51 100644 --- a/ipi-survey-platform/src/services/manufacturingIndex/ManufacturingIndex.js +++ b/ipi-survey-platform/src/services/manufacturingIndex/ManufacturingIndex.js @@ -1,4 +1,4 @@ -import { getRequest } from '@/services/api/CommonService'; +import { getRequest, postRequest } from '@/services/api/CommonService'; const MANUFACTURING_ENDPOINT = '/manufacturing'; @@ -33,4 +33,17 @@ export const getManufacturingMonthlyOverview = async (year, quarter) => { throw error; } }; + +export const autoSubmitSurvey = async (year, quarter) => { + try { + const response = await postRequest('/api/survey_auto_submit', { + year, + quarter, + }); + return response; + } catch (error) { + console.error('Error auto-submitting survey:', error); + throw error; + } +}; \ No newline at end of file