'use client'; import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { Plus, Edit, Play, AlertTriangle, ShieldAlert, CheckCircle2 } from 'lucide-react'; import { numberingApi, NumberingTemplate } from '@/lib/api/numbering'; import { TemplateEditor } from '@/components/numbering/template-editor'; import { SequenceViewer } from '@/components/numbering/sequence-viewer'; import { TemplateTester } from '@/components/numbering/template-tester'; import { toast } from 'sonner'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { useProjects, useCorrespondenceTypes, useContracts, useDisciplines } from '@/hooks/use-master-data'; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; // --- Sub-components for Tools --- function ManualOverrideForm({ onSuccess, projectId }: { onSuccess: () => void, projectId: number }) { const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ typeId: '', disciplineId: '', year: new Date().getFullYear().toString(), newSequence: '', reason: '' }); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { await numberingApi.manualOverride({ projectId, typeId: parseInt(formData.typeId), disciplineId: formData.disciplineId ? parseInt(formData.disciplineId) : undefined, year: parseInt(formData.year), newSequence: parseInt(formData.newSequence), reason: formData.reason, userId: 1 // TODO: Get from auth context }); toast.success("Manual override applied successfully"); onSuccess(); } catch (error) { toast.error("Failed to apply override"); } finally { setLoading(false); } }; return ( Manual Override Force set a counter sequence. Use with caution. Warning Changing counters manually can cause duplication errors.
setFormData({...formData, typeId: e.target.value})} required />
setFormData({...formData, disciplineId: e.target.value})} />
setFormData({...formData, year: e.target.value})} required />
setFormData({...formData, newSequence: e.target.value})} required />