From 2f0acfc07f8e2ccdde8564a4ff4d778cb5652e80 Mon Sep 17 00:00:00 2001 From: smanylov Date: Wed, 22 Apr 2026 14:05:55 +0700 Subject: [PATCH] add relocate from violations-last-combined-cases to match-list --- src/app/[locale]/pages/file/[id]/page.tsx | 6 ++-- src/app/actions/violationActions.ts | 12 ++++--- .../hooks/react-query/useFileViolations.ts | 6 ++-- src/app/hooks/react-query/useLastCases.ts | 15 ++++----- .../hooks/react-query/useLastComplaints.ts | 17 +++++----- .../file-page-violation-info-tabs.tsx | 24 ++++++-------- .../file-page-violation-info.tsx | 3 +- .../file-page-violations-list.tsx | 31 +++++++++++++------ .../violations-last-combined-cases.tsx | 14 ++------- 9 files changed, 69 insertions(+), 59 deletions(-) diff --git a/src/app/[locale]/pages/file/[id]/page.tsx b/src/app/[locale]/pages/file/[id]/page.tsx index 6a8cb53..416adc5 100644 --- a/src/app/[locale]/pages/file/[id]/page.tsx +++ b/src/app/[locale]/pages/file/[id]/page.tsx @@ -48,7 +48,7 @@ export interface FileDetails { interface PageProps { params: Promise<{ id: string }>; - searchParams: Promise<{ page?: string, status?: string }>; + searchParams: Promise<{ page?: string, status?: string , violationId?: string, caseType?: 'complaint' | 'claim'}>; } export default async function Page({ @@ -56,7 +56,7 @@ export default async function Page({ searchParams }: PageProps) { const { id } = await params; - const { page, status } = await searchParams; + const { page, status, violationId, caseType } = await searchParams; const currentPage = Number(page) || 1; try { @@ -78,6 +78,8 @@ export default async function Page({ currentPage={currentPage} status={status} fileId={id} + violationId={violationId} + caseType={caseType} /> {/* */} {/* */} diff --git a/src/app/actions/violationActions.ts b/src/app/actions/violationActions.ts index d3d7a62..e75952b 100644 --- a/src/app/actions/violationActions.ts +++ b/src/app/actions/violationActions.ts @@ -146,7 +146,7 @@ export async function fetchViolationStats() { } } -export async function getFileViolations(fileId: string, page: number, status?: string) { +export async function getFileViolations(fileId: string, page: number, status?: string, violationId?: string) { const token = await getSessionData('token'); try { @@ -159,9 +159,11 @@ export async function getFileViolations(fileId: string, page: number, status?: s file_id: fileId, page: page, size: 5, - sort_direction: "desc", + sort_direction: 'desc', token: token, - status: status + status: status, + ...(violationId && { action: 'getByViolationId' }), + ...(violationId && { violation_id: violationId }) } }), headers: { @@ -362,6 +364,7 @@ export async function createComplaint( } export async function fetchComplainInfo(id: number) { + const token = await getSessionData('token'); try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { @@ -371,7 +374,8 @@ export async function fetchComplainInfo(id: number) { msg_id: 30013, message_body: { action: 'get_by_violation', - violation_id: id + violation_id: id, + token } }), headers: { diff --git a/src/app/hooks/react-query/useFileViolations.ts b/src/app/hooks/react-query/useFileViolations.ts index 7c8e07f..5503cdb 100644 --- a/src/app/hooks/react-query/useFileViolations.ts +++ b/src/app/hooks/react-query/useFileViolations.ts @@ -24,11 +24,11 @@ interface ViolationFile { has_previous: boolean; } -export const useFileViolations = (id: string, page: number, status?: string) => { +export const useFileViolations = (id: string, page: number, status?: string, violationId?: string) => { return useQuery({ - queryKey: ['fileViolations', id, page, status], + queryKey: ['fileViolations', id, page, status, violationId], queryFn: () => { - return getFileViolations(id, page, status) + return getFileViolations(id, page, status, violationId) }, select: (data: ViolationFile | null) => { if (!data) { diff --git a/src/app/hooks/react-query/useLastCases.ts b/src/app/hooks/react-query/useLastCases.ts index 9c6364c..2237161 100644 --- a/src/app/hooks/react-query/useLastCases.ts +++ b/src/app/hooks/react-query/useLastCases.ts @@ -4,19 +4,20 @@ import { fetchLastCase, ComplaintsCaseQueryParams } from '@/app/actions/violatio interface Case { amount: number; content: null | string; - createdAt: string; + created_at: string; description: string; id: number; lawyer: null | string; name: string; - pageNumber: number; - pageSize: number; + page_number: number; + page_size: number; priority: "HIGH" | "MEDIUM" | "LOW"; - totalElements: number; - totalPages: number; + total_elements: number; + total_pages: number; type: "ACTIVE" | "INACTIVE" | string; - updatedAt: string; - violationId: number; + updated_at: string; + violation_id: number; + file_id: string; } export interface useLastCase { content: Case[], diff --git a/src/app/hooks/react-query/useLastComplaints.ts b/src/app/hooks/react-query/useLastComplaints.ts index ab6c2cc..580862a 100644 --- a/src/app/hooks/react-query/useLastComplaints.ts +++ b/src/app/hooks/react-query/useLastComplaints.ts @@ -2,14 +2,15 @@ import { useQuery } from '@tanstack/react-query'; import { fetchLastComplaint, ComplaintsCaseQueryParams } from '@/app/actions/violationActions'; interface Complaint { - complaint_text: string, - created_at: string, - email: string, - id: number, - not_moderated: boolean, - status: "CREATED" | string, - updated_at: string, - violation_id: number, + complaint_text: string; + created_at: string; + email: string; + id: number; + not_moderated: boolean; + status: "CREATED" | string; + updated_at: string; + violation_id: number; + file_id: string; } export interface useLastComplaint { content: Complaint[], diff --git a/src/app/ui/file-page/violation-table/file-page-violation-info-tabs.tsx b/src/app/ui/file-page/violation-table/file-page-violation-info-tabs.tsx index 5c99674..ae6e343 100644 --- a/src/app/ui/file-page/violation-table/file-page-violation-info-tabs.tsx +++ b/src/app/ui/file-page/violation-table/file-page-violation-info-tabs.tsx @@ -12,9 +12,9 @@ type UpdateStatusHandler = (id: number, status: MatchStatus) => Promise const STATUSES_IN_WORK = ['COMPLAINT_IN_WORK', 'LEGAL_IN_WORK', 'COMPLAINT_AND_LEGAL_IN_WORK']; -type TabType = 'complaint' | 'legal' +type TabType = 'complaint' | 'claim' -export default function FilePageViolationInfoTabs({ selectedViolation, updateStatusHandler }: { selectedViolation: ViolationFileDetail, updateStatusHandler: UpdateStatusHandler }) { +export default function FilePageViolationInfoTabs({ selectedViolation, updateStatusHandler, caseType }: { selectedViolation: ViolationFileDetail, updateStatusHandler: UpdateStatusHandler, caseType?: 'claim' | 'complaint' }) { const t = useTranslations('Global'); const [activeTab, setActiveTab] = useState('complaint'); const [showTabs, setShowTabs] = useState(false); @@ -25,20 +25,16 @@ export default function FilePageViolationInfoTabs({ selectedViolation, updateSta useEffect(() => { setLocalViolation(selectedViolation); - }, [selectedViolation]); - useEffect(() => { - console.log(localViolation.status); - }, [localViolation]); + if (caseType) { + setActiveTab(caseType) + } + }, [selectedViolation]); useEffect(() => { setShowTabs(false); }, [localViolation.id]); - useEffect(() => { - console.log(userData); - }, [userData]) - if (userData?.verifiedStatus !== "VERIFIED") { return (
{ setShowTabs(true); - setActiveTab('legal'); + setActiveTab('claim'); }} > {t('file-a-claim')} @@ -105,8 +101,8 @@ export default function FilePageViolationInfoTabs({ selectedViolation, updateSta {localViolation.status === 'COMPLAINT_IN_WORK' || localViolation.status === 'COMPLAINT_AND_LEGAL_IN_WORK' ? t('complaint') : t('file-a-complaint')} @@ -119,7 +115,7 @@ export default function FilePageViolationInfoTabs({ selectedViolation, updateSta updateStatusHandler={updateStatusHandler} /> )} - {activeTab === 'legal' && ( + {activeTab === 'claim' && (
diff --git a/src/app/ui/file-page/violation-table/file-page-violations-list.tsx b/src/app/ui/file-page/violation-table/file-page-violations-list.tsx index 70e000a..ab896f4 100644 --- a/src/app/ui/file-page/violation-table/file-page-violations-list.tsx +++ b/src/app/ui/file-page/violation-table/file-page-violations-list.tsx @@ -15,11 +15,15 @@ import Image from 'next/image'; export default function FilePageViolationsList({ currentPage, fileId, - status + status, + violationId, + caseType }: { currentPage: number, fileId: string, - status: string | undefined + status: string | undefined, + violationId?: string | undefined + caseType?: 'claim' | 'complaint' }) { const t = useTranslations('Global'); const tStatus = useTranslations('Match-status'); @@ -34,10 +38,13 @@ export default function FilePageViolationsList({ current_page: number; } | null>(null); - const { data: fileViolations, error, isPending } = useFileViolations(fileId, currentPage, status); + const { data: fileViolations, error, isPending } = useFileViolations(fileId, currentPage, status, violationId); + + function selectHandler(violation: ViolationFileDetail) { + setSelectedViolation(violation); + } useEffect(() => { - console.log(fileViolations); if (fileViolations?.violations) { setCachedPagination({ total_pages: fileViolations.total_pages, @@ -45,6 +52,10 @@ export default function FilePageViolationsList({ current_page: fileViolations.current_page }); } + + if (violationId && fileViolations?.violations.length) { + setSelectedViolation(fileViolations?.violations[0]); + } }, [fileViolations]); const paginationData = fileViolations?.violations ? fileViolations : cachedPagination; @@ -59,9 +70,12 @@ export default function FilePageViolationsList({ cachedCurrentPage={paginationData?.current_page} />; } + const handlePageChange = (page: number) => { const params = new URLSearchParams(searchParams); params.set('page', page.toString()); + params.delete('violationId'); + params.delete('caseType'); router.push(`${pathname}?${params.toString()}`, { scroll: false }); }; @@ -74,6 +88,8 @@ export default function FilePageViolationsList({ } setSelectedViolation(null); params.set('page', '1'); + params.delete('violationId'); + params.delete('caseType'); router.push(`${pathname}?${params.toString()}`, { scroll: false }); }; @@ -97,10 +113,6 @@ export default function FilePageViolationsList({ return pages; }; - function selectHandler(violation: ViolationFileDetail) { - setSelectedViolation(violation); - } - return (
@@ -208,9 +220,10 @@ export default function FilePageViolationsList({ })}
{/* general info for match */} - +
+ {/* pagination */}
diff --git a/src/app/ui/violations/violations-last-combined-cases.tsx b/src/app/ui/violations/violations-last-combined-cases.tsx index f473530..d534ec0 100644 --- a/src/app/ui/violations/violations-last-combined-cases.tsx +++ b/src/app/ui/violations/violations-last-combined-cases.tsx @@ -37,11 +37,6 @@ export default function ViolationsLastCombinedCases() { sort_direction: 'desc' }); - useEffect(() => { - console.log(dataCases); - console.log(dataComplaint); - }, [dataComplaint, dataCases]) - const getCombinedItems = () => { const complaints = (dataComplaint?.content || []).map(item => ({ ...item, @@ -60,8 +55,8 @@ export default function ViolationsLastCombinedCases() { displayId: item.name, title: item.description, status: item.type, - createdAt: item.createdAt, - updatedAt: item.updatedAt, + createdAt: item.created_at, + updatedAt: item.updated_at, lawyer: item.lawyer, })); @@ -219,12 +214,9 @@ export default function ViolationsLastCombinedCases() { )}
{ - e.preventDefault(); - }} >