validate([ 'type' => ['required', Rule::in(['Modification', 'Ajout', 'Correction'])], 'titre' => ['required', 'string', 'min:5', 'max:120'], 'description' => ['required', 'string', 'min:10', 'max:5000'], ], [ 'type.required' => 'Veuillez choisir un type de demande.', 'type.in' => 'Type de demande invalide.', 'titre.required' => 'Le titre est requis.', 'titre.min' => 'Le titre doit contenir au moins 5 caractères.', 'titre.max' => 'Le titre ne peut pas dépasser 120 caractères.', 'description.required' => 'La description est requise.', 'description.min' => 'Merci de détailler un peu plus votre suggestion (10 caractères minimum).', ]); /** @var Utilisateur $user */ $user = Auth::user(); $auteur = $user->Pseudo ?? 'Utilisateur'; // Compte Gitea de l'utilisateur (créé au premier envoi) pour que le // ticket soit ouvert en son nom et qu'il puisse le suivre. $compte = $giteaUsers->assurerCompte($user); $title = "[{$data['type']}] {$data['titre']}"; $body = "**Type de demande :** {$data['type']}\n" ."**Proposé par :** {$auteur} (via le site (RE)Sources Relationnelles)\n\n" ."### Description\n" .$data['description']."\n\n" ."---\n" .'_Ticket créé automatiquement depuis le formulaire de suggestions du site._'; if ($gitea->createIssue($title, $body, $compte['username'] ?? null)) { $redirect = redirect()->route('suggestions.create') ->with('success', 'Merci ! Votre suggestion a bien été transmise à l\'équipe.'); // Identifiants affichés UNE seule fois, uniquement si le compte vient d'être créé. if ($compte !== null && $compte['motDePasseInitial'] !== null) { $redirect->with('gitea_compte', [ 'url' => rtrim((string) config('services.gitea.url'), '/'), 'username' => $compte['username'], 'mot_de_passe' => $compte['motDePasseInitial'], ]); } return $redirect; } return back()->withInput()->withErrors([ 'gitea' => "L'envoi de votre suggestion a échoué. Merci de réessayer plus tard.", ]); } }