import { useState } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Search, Plus, Trash2 } from "lucide-react"; import { useAssignments, useCreateAssignment } from "@/hooks/queries"; import { useToast } from "@/hooks/use-toast"; export default function AssignmentsPage() { const [search, setSearch] = useState(""); const [createOpen, setCreateOpen] = useState(false); const [form, setForm] = useState({ title: "", entity_id: "", start_date: "", end_date: "" }); const { toast } = useToast(); const assignmentsQ = useAssignments({ size: 200 }); const createMut = useCreateAssignment(); const items = assignmentsQ.data?.items ?? assignmentsQ.data?.data ?? []; const assignments = Array.isArray(items) ? items : []; const q = search.toLowerCase(); const filtered = assignments.filter(a => a.title?.toLowerCase().includes(q) || a.entity_name?.toLowerCase().includes(q), ); const loading = assignmentsQ.isLoading; function handleCreate() { createMut.mutate( { title: form.title, entity_id: Number(form.entity_id) || 0, start_date: form.start_date, end_date: form.end_date }, { onSuccess: () => { setCreateOpen(false); setForm({ title: "", entity_id: "", start_date: "", end_date: "" }); toast({ title: "Assignment created" }); }, onError: (err: Error) => toast({ title: "Error", description: err.message, variant: "destructive" }), }, ); } return (
Create and manage assignments.