From a0105e59bd893aa697cf0d0eaed87ab8224cadb4 Mon Sep 17 00:00:00 2001 From: Senthamilselvi Date: Mon, 3 Nov 2025 15:53:33 +0530 Subject: [PATCH] admin dashboard actions flow updated --- .../src/components/admin/SubmissionTable.jsx | 123 +++++++++++------- 1 file changed, 78 insertions(+), 45 deletions(-) diff --git a/ipi-survey-platform/src/components/admin/SubmissionTable.jsx b/ipi-survey-platform/src/components/admin/SubmissionTable.jsx index 8cf1d69..4e86630 100644 --- a/ipi-survey-platform/src/components/admin/SubmissionTable.jsx +++ b/ipi-survey-platform/src/components/admin/SubmissionTable.jsx @@ -1,10 +1,14 @@ import React, { useState, useEffect, useMemo } from 'react'; +import { useNavigate } from 'react-router-dom'; import Table from '@/components/common/Table'; import apiClient from '../../services/api/apiClient.js'; import { CheckCircle2, XCircle, Eye } from 'lucide-react'; + const SubmissionTable = ({ selectedQuarter, selectedYear }) => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); + const navigate = useNavigate(); + useEffect(() => { const fetchDashboardData = async () => { try { @@ -63,20 +67,6 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => { return formatted.replace(/\s?(am|pm)$/i, (match) => match.toUpperCase()); }; - const headers = [ - 'Establishment', - 'Emirates', - 'Year', - 'Quarter', - 'Product Count', - 'Submitted By', - 'Submission Date & Time', - 'Status', - 'Reviewer', - 'Reviewed On', - 'Actions', - ]; - const renderStatusBadge = (status) => { const normalized = status?.toLowerCase(); if (normalized === 'approved') { @@ -108,48 +98,33 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => { const userProfile = JSON.parse(sessionStorage.getItem("user_profile")); + const headers = [ + 'Establishment', + 'Emirates', + 'Year', + 'Quarter', + 'Product Count', + 'Submitted By', + 'Submission Date & Time', + 'Status', + 'Reviewer', + 'Reviewed On', + 'Actions', + ]; + const tableRows = filtered.map((item) => [ item?.establishment?.factory_name || '-', item?.establishment?.establishment_emirate?.name || '-', item?.year || '-', item?.quarter || '-', item?.product_count || '-', - // item?.created_by || '-', - userProfile?.name || '-', + userProfile?.name || '-', {formatDate(item?.created_at)}, renderStatusBadge(item?.status), - // item?.updated_by || '-', userProfile?.name || '-', - // {formatDate(item?.updated_at)}, {formatDate(item?.created_at)}, -
-
- - - Approve - -
-
- - - Reject - -
-
- navigate(`/admin/validations/${item.id}`)} - /> - - View - -
-
, + item, ]); - const columnWidths = [240, 120, 100, 100, 130, 150, 180, 150, 150, 180, 120]; @@ -177,6 +152,64 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => { separated rowGapClass="border-spacing-y-1" columnWidths={columnWidths} + renderCell={(value, _, columnIndex) => { + if (columnIndex === 10) { + const item = value; + return ( +
+
+ + navigate(`/admin/validations/${item.id}`, { + state: { actionType: 'approve' }, + }) + } + /> + + Approve + +
+ +
+ + navigate(`/admin/validations/${item.id}`, { + state: { actionType: 'reject' }, + }) + } + /> + + Reject + +
+ +
+ + navigate(`/admin/validations/${item.id}`, { + state: { actionType: 'view' }, + }) + } + /> + + View + +
+
+ ); + } + return value; + }} /> )}