import ImageUploader from '@/components/banner-uploader'; import Button from '@/components/button'; import SimpleInput from '@/components/input'; import { GetCuestionario } from '@/types/cuestionario'; 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; handleChange: (field: keyof GetCuestionario, value: string | Date) => void; handleOnChange: (eventoActualizado: GetCuestionario) => void; } export default function EditFormulario({ cuestionario, handleChange, }: EditFormularioProps) { 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, } ); 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 (

Editar Información del Formulario

Modifica los datos del formulario que desees actualizar y confrimalos.

{/* Columna Izquierda - 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.

{/* Columna Derecha - Detalles del formulario */}

Detalles del Formulario

handleChange('nombre_form', 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 en la parte inferior */}
); }