'use client' import { ViolationFileDetail } from '@/app/hooks/react-query/useFileViolations'; import { useActionState, useEffect, useState } from 'react'; import { useTranslations } from 'next-intl'; import { createComplaint, fetchComplainInfo } from '@/app/actions/violationActions'; import { toast } from 'sonner'; import { useQuery, useQueryClient } from '@tanstack/react-query'; interface complaintInfo { id: number, status: string, complaint_text: string, violation_id: number, email: string, created_at: string, updated_at: string, not_moderated: boolean } export default function CaseComplaint({ selectedViolation }: { selectedViolation: ViolationFileDetail }) { const [showCreateCase, setShowCreateCase] = useState(false); const t = useTranslations('Global'); const [state, formAction, isPending] = useActionState(createComplaint, undefined); const queryClient = useQueryClient(); const { data: complainInfo, isLoading: isLoadingComplain } = useQuery({ queryKey: ['complainInfo', selectedViolation.id], queryFn: () => fetchComplainInfo(selectedViolation.id), select: (data) => { if (data) { return data } }, enabled: selectedViolation.status !== 'NEW' && selectedViolation.status !== 'CREATED' && selectedViolation.status !== 'SHOWED', }); useEffect(() => { if (state?.success) { toast.success('Жалоба зарегистрирована'); queryClient.invalidateQueries({ queryKey: ['fileViolations'] }); queryClient.invalidateQueries({ queryKey: ['complainInfo', selectedViolation.id] }); } else if (state && !state.success) { toast.warning('Жалоба не зарегистрирована'); } }, [state, queryClient, selectedViolation.id]); function toggleForm() { setShowCreateCase(!showCreateCase); } if (selectedViolation.status === 'NEW' || selectedViolation.status === 'CREATED' || selectedViolation.status === 'SHOWED') { return (
ID: {item.id}
Статус: {item.status}
Текст жалобы: {item.complaint_text}
ID нарушения: {item.violation_id}
Email: {item.email}
Дата создания: {item.created_at}
Дата обновления: {item.updated_at}