'use client' import { useState } from 'react' import Link from "next/link" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Badge } from "@/components/ui/badge" import { Textarea } from "@/components/ui/textarea" import { Checkbox } from "@/components/ui/checkbox" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Shield, ArrowLeft, Users, Calendar, MapPin, Mail, Phone, Building, User, FileText, CheckCircle, Loader2 } from 'lucide-react' import { submitFormationForm } from '@/app/actions/formation' export default function DevisFormationPage() { const [formData, setFormData] = useState({ // Informations entreprise entreprise: '', secteur: '', taille: '', siret: '', // Contact nom: '', prenom: '', fonction: '', email: '', telephone: '', // Formations souhaitées formations: [] as string[], // Modalités modalite: '', participants: '', dates: '', lieu: '', // Besoins spécifiques objectifs: '', niveau: '', contraintes: '', // Options supplémentaires (initialisées à false) certification: false, support: false, accompagnement: false, }); const [isSubmitting, setIsSubmitting] = useState(false) const [submitResult, setSubmitResult] = useState<{ success: boolean; message: string } | null>(null) const handleFormationChange = (formation: string, checked: boolean) => { if (checked) { setFormData(prev => ({ ...prev, formations: [...prev.formations, formation] })) } else { setFormData(prev => ({ ...prev, formations: prev.formations.filter(f => f !== formation) })) } } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) setSubmitResult(null) try { const formDataToSend = new FormData() // Ajout de tous les champs au FormData Object.entries(formData).forEach(([key, value]) => { if (key === 'formations') { value.forEach((formation: string) => formDataToSend.append('formations', formation)) } else if (typeof value === 'boolean') { formDataToSend.append(key, value.toString()) } else { formDataToSend.append(key, value) } }) const result = await submitFormationForm(formDataToSend) setSubmitResult(result) if (result.success) { // Reset du formulaire en cas de succès setFormData({ entreprise: '', secteur: '', taille: '', siret: '', nom: '', prenom: '', fonction: '', email: '', telephone: '', formations: [], modalite: '', participants: '', dates: '', lieu: '', objectifs: '', niveau: '', contraintes: '', certification: false, support: false, accompagnement: false }) } } catch (error) { setSubmitResult({ success: false, message: 'Une erreur inattendue est survenue. Veuillez réessayer.' }) } finally { setIsSubmitting(false) } } if (submitResult?.success) { return (
Demande envoyée ! {submitResult.message}

Prochaines étapes :

  • • Un expert 4NK vous contactera sous 24h
  • • Analyse personnalisée de vos besoins
  • • Proposition de devis détaillé
  • • Planification des sessions de formation

Contact direct : contact@docv.fr

) } return (
{/* Header */}
DocV By 4NK Retour aux formations
{/* Hero Section */}

Demande de Devis Formation

Obtenez un devis personnalisé pour vos formations en souveraineté numérique. Nos experts vous accompagnent dans la définition de vos besoins.

{/* Error Message */} {submitResult && !submitResult.success && (
{submitResult.message}
)}
{/* Informations Entreprise */} Informations Entreprise Renseignez les informations de votre organisation
setFormData(prev => ({ ...prev, entreprise: e.target.value }))} placeholder="Votre entreprise" required className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
setFormData(prev => ({ ...prev, siret: e.target.value }))} placeholder="Numéro SIRET" className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
{/* Contact Section */} Contact Vos coordonnées pour le suivi de la demande
setFormData(prev => ({ ...prev, nom: e.target.value }))} placeholder="Votre nom" required className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
setFormData(prev => ({ ...prev, prenom: e.target.value }))} placeholder="Votre prénom" required className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
setFormData(prev => ({ ...prev, fonction: e.target.value }))} placeholder="Votre fonction" className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
setFormData(prev => ({ ...prev, email: e.target.value }))} placeholder="votre.email@entreprise.com" required className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
setFormData(prev => ({ ...prev, telephone: e.target.value }))} placeholder="01 23 45 67 89" className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
{/* Formations souhaitées */} Formations souhaitées Sélectionnez les formations qui vous intéressent {[ { id: 'cybersecurite', label: 'Cybersécurité (5 jours)', desc: 'Fondamentaux de la sécurité informatique et spécialisation DocV' }, { id: 'hygiene', label: 'Hygiène Numérique (3 jours)', desc: 'Bonnes pratiques pour un environnement numérique sain' }, { id: 'developpement', label: 'Développement Souverain (7 jours)', desc: 'Applications indépendantes et sécurisées' }, { id: 'parcours-complet', label: 'Parcours Complet (15 jours)', desc: 'Formation intégrée avec certification 4NK' } ].map(f => (
handleFormationChange(f.id, checked as boolean)} />
))}
{/* Modalités */} Modalités de formation
Mode de formation préféré setFormData(prev => ({ ...prev, modalite: value }))}> {['presentiel', 'distanciel', 'hybride'].map(option => (
))}
setFormData(prev => ({ ...prev, dates: e.target.value }))} placeholder="Ex: Mars 2024, Trimestre 2..." className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
setFormData(prev => ({ ...prev, lieu: e.target.value }))} placeholder="Ville ou adresse" className="bg-gray-700 text-gray-100 border-gray-600 placeholder-gray-400" />
{/* Besoins spécifiques */} Besoins spécifiques