diff --git a/attached_assets/{151BF143-B82D-4334-B94E-1A88BB10DE51}_1755164912655.png b/attached_assets/{151BF143-B82D-4334-B94E-1A88BB10DE51}_1755164912655.png new file mode 100644 index 0000000..4073391 Binary files /dev/null and b/attached_assets/{151BF143-B82D-4334-B94E-1A88BB10DE51}_1755164912655.png differ diff --git a/client/src/pages/SavTickets.tsx b/client/src/pages/SavTickets.tsx index 250d09f..88c634d 100644 --- a/client/src/pages/SavTickets.tsx +++ b/client/src/pages/SavTickets.tsx @@ -107,11 +107,20 @@ export default function SavTickets() { // Create ticket mutation const createTicketMutation = useMutation({ mutationFn: async (data: InsertSavTicket) => { - const response = await apiRequest('/api/sav/tickets', { + const response = await fetch('/api/sav/tickets', { method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, body: JSON.stringify(data), }); - return response; + + if (!response.ok) { + const errorData = await response.json(); + throw new Error(errorData.message || 'Erreur lors de la création du ticket'); + } + + return response.json(); }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['/api/sav/tickets'] }); @@ -149,6 +158,21 @@ export default function SavTickets() { const canModify = ['admin', 'directeur', 'manager'].includes(user?.role || ''); const canDelete = ['admin', 'directeur'].includes(user?.role || ''); + // Get user's available groups for auto-assignment + const getUserGroups = () => { + if (!user || user.role === 'admin') { + return groupsData; // Admin can access all groups + } + + // For other users, get their assigned groups + const userGroups = (user as any).userGroups || []; + return groupsData.filter(group => + userGroups.some((ug: any) => ug.groupId === group.id) + ); + }; + + const availableGroups = getUserGroups(); + // Handle form submission const handleCreateTicket = () => { if (!formData.supplierId || !formData.productGencode || !formData.productDesignation || !formData.problemDescription) { @@ -160,9 +184,17 @@ export default function SavTickets() { return; } + // Auto-assign group if user has only one group or if admin didn't select one + let selectedGroupId = formData.groupId ? parseInt(formData.groupId) : null; + + if (!selectedGroupId && availableGroups.length > 0) { + // Auto-assign first available group + selectedGroupId = availableGroups[0].id; + } + const ticketData: InsertSavTicket = { supplierId: parseInt(formData.supplierId), - groupId: formData.groupId ? parseInt(formData.groupId) : undefined, + groupId: selectedGroupId || undefined, productGencode: formData.productGencode, productReference: formData.productReference || undefined, productDesignation: formData.productDesignation, @@ -173,6 +205,7 @@ export default function SavTickets() { clientPhone: formData.clientPhone || undefined, }; + console.log('Creating ticket with data:', ticketData); createTicketMutation.mutate(ticketData); }; @@ -285,21 +318,42 @@ export default function SavTickets() { -