diff --git a/ipi-survey-platform/src/components/dashboard/SubmissionHistory.jsx b/ipi-survey-platform/src/components/dashboard/SubmissionHistory.jsx
index 45a41ab..de77e21 100644
--- a/ipi-survey-platform/src/components/dashboard/SubmissionHistory.jsx
+++ b/ipi-survey-platform/src/components/dashboard/SubmissionHistory.jsx
@@ -70,6 +70,25 @@ const getStatusBadge = (status) => {
}
};
+const isResubmitDisabled = (submission) => {
+ // Only apply this logic for rejected records
+ if (submission.originalData?.approve_reject_status !== 0) {
+ return false;
+ }
+
+ const rejectedAt = submission.originalData?.rejected_at;
+ if (!rejectedAt) {
+ return false; // If no rejection date, keep enabled
+ }
+
+ const currentDate = new Date();
+ const rejectionDate = new Date(rejectedAt);
+ const blockOnDate = new Date(rejectionDate);
+ blockOnDate.setDate(blockOnDate.getDate() + 14);
+
+ return currentDate >= blockOnDate;
+};
+
const downloadCsv = (data) => {
if (!data.length) return;
@@ -362,11 +381,22 @@ const handleDeleteDraft = async (e, submission) => {
{item.status.toLowerCase() === 'rejected' && (
)}
diff --git a/ipi-survey-platform/src/pages/Overview/Overview.jsx b/ipi-survey-platform/src/pages/Overview/Overview.jsx
index 2754a18..fd9c6ea 100644
--- a/ipi-survey-platform/src/pages/Overview/Overview.jsx
+++ b/ipi-survey-platform/src/pages/Overview/Overview.jsx
@@ -29,6 +29,25 @@ const formatDate = (dateString) => {
return date.toLocaleDateString('en-GB');
};
+const isResubmitDisabled = (record) => {
+ // Only apply this logic for rejected records
+ if (record.approve_reject_status !== 0) {
+ return false;
+ }
+
+ const rejectedAt = record.rejected_at;
+ if (!rejectedAt) {
+ return false; // If no rejection date, keep enabled
+ }
+
+ const currentDate = new Date();
+ const rejectionDate = new Date(rejectedAt);
+ const blockOnDate = new Date(rejectionDate);
+ blockOnDate.setDate(blockOnDate.getDate() + 14);
+
+ return currentDate >= blockOnDate;
+};
+
const Overview = () => {
const location = useLocation();
const navigate = useNavigate();
@@ -221,63 +240,67 @@ const showToast = (message, type = 'success') => {
{record.status === 'Rejected' && (
{
e.stopPropagation();
- try {
- const response = await fetchSubmissionDetail(record.id);
- const submissionData = response.data;
-
- // Structure the data in the format expected by the component
- const formattedData = {
- ...submissionData,
- establishment: {
- ...submissionData.establishment,
- establishment_contact_email: submissionData.establishment.establishment_contact_email,
- emirate: submissionData.establishment.establishment_emirate_id,
- establishment_emirate_id: submissionData.establishment.establishment_emirate_id
- },
- employeeInfo: {
- emiratiMale: submissionData.establishment.emirati_male,
- emiratiFemale: submissionData.establishment.emirati_female,
- nonEmiratiMale: submissionData.establishment.non_emirati_male,
- nonEmiratiFemale: submissionData.establishment.non_emirati_female,
- totalEmirati: submissionData.establishment.total_emirati,
- totalEmployees: submissionData.establishment.total_employees
- },
- products: submissionData.products || [],
- quarterWindow: submissionData.quarter_window || {}
- };
+ if (!isResubmitDisabled(record)) {
+ try {
+ const response = await fetchSubmissionDetail(record.id);
+ const submissionData = response.data;
+
+ // Structure the data in the format expected by the component
+ const formattedData = {
+ ...submissionData,
+ establishment: {
+ ...submissionData.establishment,
+ establishment_contact_email: submissionData.establishment.establishment_contact_email,
+ emirate: submissionData.establishment.establishment_emirate_id,
+ establishment_emirate_id: submissionData.establishment.establishment_emirate_id
+ },
+ employeeInfo: {
+ emiratiMale: submissionData.establishment.emirati_male,
+ emiratiFemale: submissionData.establishment.emirati_female,
+ nonEmiratiMale: submissionData.establishment.non_emirati_male,
+ nonEmiratiFemale: submissionData.establishment.non_emirati_female,
+ totalEmirati: submissionData.establishment.total_emirati,
+ totalEmployees: submissionData.establishment.total_employees
+ },
+ products: submissionData.products || [],
+ quarterWindow: submissionData.quarter_window || {}
+ };
- // Save the complete data to localStorage
- localStorage.setItem('resubmissionData', JSON.stringify(formattedData));
-
- // Save products separately
- if (submissionData.products && submissionData.products.length > 0) {
- localStorage.setItem('submissionProducts', JSON.stringify(submissionData.products));
+ // Save the complete data to localStorage
+ localStorage.setItem('resubmissionData', JSON.stringify(formattedData));
+
+ // Save products separately
+ if (submissionData.products && submissionData.products.length > 0) {
+ localStorage.setItem('submissionProducts', JSON.stringify(submissionData.products));
+ }
+
+ // Set resubmission flags
+ localStorage.setItem('isResubmission', 'true');
+
+ // Navigate to survey with resubmission state
+ navigate('/survey', {
+ state: {
+ submission: formattedData,
+ isResubmit: true,
+ fromResubmit: true
+ }
+ });
+ } catch (error) {
+ console.error('Error preparing resubmission:', error);
+ // Optionally show error to user
}
-
- // Set resubmission flags
- localStorage.setItem('isResubmission', 'true');
-
- // Navigate to survey with resubmission state
- navigate('/survey', {
- state: {
- submission: formattedData,
- isResubmit: true,
- fromResubmit: true
- }
- });
- } catch (error) {
- console.error('Error preparing resubmission:', error);
- // Optionally show error to user
}
}}
/>