import React, { useState } from 'react'; import { Upload, CheckCircle, AlertCircle } from 'lucide-react'; export default function FormularioCongreso() { const [formData, setFormData] = useState({ nombreCompleto: '', correo: '', dni: '', institucion: '', cicloSemestre: '', certificado: '', metodoPago: '', comprobante: null }); const [errors, setErrors] = useState({}); const [submitted, setSubmitted] = useState(false); const [showPayment, setShowPayment] = useState(false); const metodoPagoInfo = { yape: { numero: '987 654 321', nombre: 'Yape' }, plin: { numero: '987 654 321', nombre: 'Plin' }, bcp: { cuenta: '191-2345678-0-99', cci: '00219100234567809912', nombre: 'BCP' }, nacion: { cuenta: '00-123-456789', nombre: 'Banco de la Nación' }, bbva: { cuenta: '0011-0123-4567890123', cci: '011-123-001234567890123-45', nombre: 'BBVA' } }; const handleChange = (e) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); if (name === 'certificado') { setShowPayment(value === 'si'); if (value === 'no') { setFormData(prev => ({ ...prev, metodoPago: '', comprobante: null })); } } if (errors[name]) { setErrors(prev => ({ ...prev, [name]: '' })); } }; const handleFileChange = (e) => { const file = e.target.files[0]; if (file) { if (file.size > 5000000) { setErrors(prev => ({ ...prev, comprobante: 'El archivo no debe superar 5MB' })); return; } setFormData(prev => ({ ...prev, comprobante: file })); setErrors(prev => ({ ...prev, comprobante: '' })); } }; const validate = () => { const newErrors = {}; if (!formData.nombreCompleto.trim()) newErrors.nombreCompleto = 'Campo requerido'; if (!formData.correo.trim()) { newErrors.correo = 'Campo requerido'; } else if (!/\S+@\S+\.\S+/.test(formData.correo)) { newErrors.correo = 'Correo inválido'; } if (!formData.dni.trim()) { newErrors.dni = 'Campo requerido'; } else if (!/^\d{8}$/.test(formData.dni)) { newErrors.dni = 'DNI debe tener 8 dígitos'; } if (!formData.institucion.trim()) newErrors.institucion = 'Campo requerido'; if (!formData.cicloSemestre.trim()) newErrors.cicloSemestre = 'Campo requerido'; if (!formData.certificado) newErrors.certificado = 'Seleccione una opción'; if (formData.certificado === 'si') { if (!formData.metodoPago) newErrors.metodoPago = 'Seleccione un método de pago'; if (!formData.comprobante) newErrors.comprobante = 'Debe subir el comprobante de pago'; } return newErrors; }; const handleSubmit = (e) => { e.preventDefault(); const newErrors = validate(); if (Object.keys(newErrors).length > 0) { setErrors(newErrors); return; } // Aquí se enviarían los datos a un servidor console.log('Datos del formulario:', formData); setSubmitted(true); }; if (submitted) { return (

¡Inscripción Exitosa!

Hemos recibido tu inscripción al congreso.

{formData.certificado === 'si' && (

Tu comprobante de pago será verificado y recibirás una confirmación por correo electrónico en las próximas 24-48 horas.

)}
); } return (

Inscripción al Congreso

Complete el formulario para registrar su participación

{/* Nombre Completo */}
{errors.nombreCompleto && (

{errors.nombreCompleto}

)}
{/* Correo */}
{errors.correo && (

{errors.correo}

)}
{/* DNI */}
{errors.dni && (

{errors.dni}

)}
{/* Instituto o Universidad */}
{errors.institucion && (

{errors.institucion}

)}
{/* Ciclo/Semestre */}
{errors.cicloSemestre && (

{errors.cicloSemestre}

)}
{/* Certificado */}
{errors.certificado && (

{errors.certificado}

)}
{/* Opciones de Pago */} {showPayment && (

Información de Pago

{errors.metodoPago && (

{errors.metodoPago}

)}
{formData.metodoPago && (

Datos para {metodoPagoInfo[formData.metodoPago].nombre}

{(formData.metodoPago === 'yape' || formData.metodoPago === 'plin') && (

Número: {metodoPagoInfo[formData.metodoPago].numero}

)} {(formData.metodoPago === 'bcp' || formData.metodoPago === 'nacion' || formData.metodoPago === 'bbva') && ( <>

N° Cuenta: {metodoPagoInfo[formData.metodoPago].cuenta}

{metodoPagoInfo[formData.metodoPago].cci && (

CCI: {metodoPagoInfo[formData.metodoPago].cci}

)} )}

Monto: S/ 20.00

Realice el pago y suba su comprobante a continuación

)} {/* Subir Comprobante */}

JPG, PNG o PDF (máx. 5MB)

{formData.comprobante && (

✓ {formData.comprobante.name}

)}
{errors.comprobante && (

{errors.comprobante}

)}
)} {/* Botón Submit */}
); }