import React, { useState } from 'react'; import { pb } from '@services/pocketbase'; interface NewTicketProps { onCancel: () => void; onTicketCreated: () => void; // Rappel pour recharger la liste et revenir en arrière } export default function NewTicket({ onCancel, onTicketCreated }: NewTicketProps) { const [category, setCategory] = useState<'Incident Critique' | 'Évolution' | 'Administratif'>('Incident Critique'); const [ci, Ci] = useState('general'); const [subject, setSubject] = useState(''); const [affectedAsset, setAffectedAsset] = useState(''); const [incidentTime, setIncidentTime] = useState(''); const [description, setDescription] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setIsSubmitting(true); try { const currentUser = pb.authStore.record; if (!currentUser) throw new Error("Utilisateur non authentifié"); // Construction de la description enrichie avec les métadonnées techniques let fullDescription = description; if (affectedAsset.trim()) { fullDescription = `[Équipement concerné: ${affectedAsset}]\n` + fullDescription; } if (category === 'Incident Critique' && incidentTime) { fullDescription = `[Heure de l'incident: ${new Date(incidentTime).toLocaleString('fr-FR')}]\n` + fullDescription; } // Enregistrement dans PocketBase await pb.collection('aegis_tickets').create({ author: currentUser.id, company: currentUser.company, category, subject, description: fullDescription, status: 'Ouvert', }); onTicketCreated(); // Retourne à la liste et rafraîchit } catch (err) { console.error("Erreur lors de la création du ticket :", err); setError("Impossible d'enregistrer le ticket sur le serveur sécurisé."); } finally { setIsSubmitting(false); } }; return (
Qualification de votre requête ITSM