import React, { useEffect, useState, ReactElement } from 'react'; import Head from 'next/head' import { useRouter } from "next/router"; import { useAppDispatch, useAppSelector } from "../../stores/hooks"; import { fetch as fetchCase, update as updateCase } from '../../stores/cases/casesSlice'; import LayoutAuthenticated from "../../layouts/Authenticated"; import { getPageTitle } from "../../config"; import SectionTitleLineWithButton from "../../components/SectionTitleLineWithButton"; import SectionMain from "../../components/SectionMain"; import CardBox from "../../components/CardBox"; import BaseButton from "../../components/BaseButton"; import CardBoxModal from "../../components/CardBoxModal"; import FormField from "../../components/FormField"; import { Field, Form, Formik } from "formik"; import axios from "axios"; import { mdiChartTimelineVariant, mdiFormatListChecks, mdiFileDocument, mdiFileDocumentEdit, mdiNoteText, mdiHistory } from "@mdi/js"; import TableTasks from '../../components/Tasks/TableTasks'; import TableDocuments from '../../components/Documents/TableDocuments'; import TableAppealDrafts from '../../components/Appeal_drafts/TableAppeal_drafts'; import TableNotes from '../../components/Notes/TableNotes'; import TableActivityLogs from '../../components/Activity_logs/TableActivity_logs'; const CasesView = () => { const router = useRouter() const dispatch = useAppDispatch() const { cases, loading } = useAppSelector((state) => state.cases) const { currentUser } = useAppSelector((state) => state.auth); const [activeTab, setActiveTab] = useState('overview'); const [modalAction, setModalAction] = useState(null); const [actionLoading, setActionLoading] = useState(false); const handleActionSubmit = async (values) => { setActionLoading(true); try { if (modalAction === 'markWon') { await axios.put("/cases/${id}/mark-won", { data: { resolutionReason: values.reason } }); } else if (modalAction === 'markLost') { await axios.put("/cases/${id}/mark-lost", { data: { resolutionReason: values.reason } }); } else if (modalAction === 'reopen') { await axios.put("/cases/${id}/reopen", { data: { reopenReason: values.reason } }); } else if (modalAction === 'changeStatus') { await axios.put("/cases/${id}/change-status", { data: { status: values.status } }); } dispatch(fetchCase({ id })); setModalAction(null); } catch (e) { console.error(e); alert('Action failed: ' + (e.response?.data?.message || e.message)); } finally { setActionLoading(false); } }; const { id } = router.query; useEffect(() => { if (id) { dispatch(fetchCase({ id })); } }, [dispatch, id]); if (!cases || loading) return