diff --git a/src/app/(modules)/ticket/[ticketId]/assign/components/AssignTicketForm.tsx b/src/app/(modules)/ticket/[ticketId]/assign/components/AssignTicketForm.tsx new file mode 100644 index 0000000..d762852 --- /dev/null +++ b/src/app/(modules)/ticket/[ticketId]/assign/components/AssignTicketForm.tsx @@ -0,0 +1,139 @@ +'use client'; + +import { useMemo, useState } from 'react'; +import { Mail, Phone, Send, ShieldCheck, Users } from 'lucide-react'; + +import { DatePickerSimple } from '@/components/form/DatePickerSimple'; +import { AssignableWorkerSelect } from '@/components/lookups/AssignableWorkerSelect'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Label } from '@/components/ui/label'; +import { Textarea } from '@/components/ui/textarea'; +import type { AssignableTicketUser } from '@/types'; + +import { useAssignTicketMutation } from '../../../hooks/useTicketQueries'; + +interface AssignTicketFormProps { + ticketId: string; + onAssigned: () => void; +} + +export function AssignTicketForm({ + ticketId, + onAssigned, +}: AssignTicketFormProps) { + const [selectedUserId, setSelectedUserId] = useState(''); + const [selectedContractor, setSelectedContractor] = + useState(null); + const [dueDate, setDueDate] = useState(); + const [assignNote, setAssignNote] = useState(''); + + const assignMutation = useAssignTicketMutation(ticketId); + const today = useMemo(() => { + const date = new Date(); + date.setHours(0, 0, 0, 0); + return date; + }, []); + const maxDueMonth = useMemo( + () => new Date(today.getFullYear() + 20, 11), + [today], + ); + + return ( + + + + + Contractor and schedule + + + +
+
+ + { + setSelectedUserId(userId); + setSelectedContractor(user); + }} + disabled={assignMutation.isPending} + /> +
+ + {selectedContractor ? ( +
+

Contractor details

+ {selectedContractor.phone_number ? ( +

+ + {selectedContractor.phone_number} +

+ ) : null} +

+ + {selectedContractor.email} +

+

+ + {selectedContractor.role.name} +

+
+ ) : null} + +
+ + +
+ +
+ +