import ImageUploader from '@/components/banner-uploader'; import Button from '@/components/button'; import SimpleInput from '@/components/input'; import FormularioCardPreview from '@/components/formulario/formulario-card-preview'; import { GetCuestionario } from '@/types/cuestionario'; import { GetEvento } from '@/types/evento'; import axiosInstance from '@/utils/api-config'; import { formatDateLocal } from '@/utils/date-utils'; import { getAxiosError } from '@/utils/errors-utils'; import MDEditor, { commands } from '@uiw/react-md-editor'; import React, { useState } from 'react'; import toast from 'react-hot-toast'; interface EditFormularioProps { cuestionario: GetCuestionario; evento: GetEvento | null; handleChange: (field: keyof GetCuestionario, value: string | Date) => void; handleOnChange: (eventoActualizado: GetCuestionario) => void; } export default function EditFormulario({ cuestionario, evento, handleChange, }: EditFormularioProps) { const tipo_usuario = sessionStorage.getItem('axxxd')?.replace(/"/g, '') || ''; const [loading, setLoading] = useState(false); const [nuevoBanner, setNuevoBanner] = useState(null); const handleOnSave = async () => { setLoading(true); try { // 1. Subir nuevo banner si fue cambiado if (nuevoBanner) { const formData = new FormData(); formData.append('banner', nuevoBanner); await axiosInstance.post( `/cuestionario/${cuestionario.id_cuestionario}/banner`, formData, { headers: { 'Content-Type': 'multipart/form-data', }, } ); } // 2. Actualizar el evento (sin incluir 'banner') const res = await axiosInstance.patch( `/cuestionario/${cuestionario.id_cuestionario}`, { nombre_form: cuestionario.nombre_form, descripcion: cuestionario.descripcion, fecha_inicio: cuestionario.fecha_inicio, fecha_fin: cuestionario.fecha_fin, cupo_maximo: Number(cuestionario.cupo_maximo) || null, mensaje_correo: cuestionario.mensaje_correo || null, } ); console.log('Evento actualizado:', res.data); toast.success('Evento actualizado correctamente'); } catch (error) { const msg = getAxiosError(error); toast.error(`Error al actualizar el evento: ${msg.message}`); } finally { setLoading(false); } }; return (
{/* Header */}

Editar Información del Formulario

Modifica los datos del formulario que desees actualizar y confirmalos.

{/* Columna Izquierda - Formulario */}
{/* Banner */}
{ setNuevoBanner(file); }} />

Esta es la imagen que se usara para la carta de presentación del formulario.
Dimensiones recomendadas: 1200x600 píxeles.
Formatos soportados: PNG, JPG, JPEG.

{/* Alert sobre imagen por defecto */} {!cuestionario.banner && !nuevoBanner && evento?.banner && (
Imagen por defecto: Si no seleccionas una imagen específica para este formulario, se utilizará automáticamente la imagen del evento.
)}
{/* Detalles del formulario */}

Detalles del Formulario

handleChange('nombre_form', e.target.value) } /> handleChange('mensaje_correo', e.target.value) } /> handleChange( 'cupo_maximo', e.target.value ? e.target.value : '' ) } />
{ const texto = value || ''; if (texto.length <= 500) { handleChange( 'descripcion' as keyof GetCuestionario, texto ); } }} height={200} commands={[commands.bold, commands.italic, commands.hr]} />
handleChange('fecha_inicio', new Date(e.target.value)) } />
handleChange('fecha_fin', new Date(e.target.value)) } />
{/* Botón de guardar */} {tipo_usuario === "administrador" && (
)}
{/* Columna Derecha - Preview */}

Preview del Formulario

Preview del Formulario

Vista previa: Así se verá tu formulario en las listas de formularios.
); }