'use client'; import ImageUploader from '@/components/banner-uploader'; import Button from '@/components/button'; import Input from '@/components/input'; import Select from '@/components/select'; import { CreateEventoType } from '@/types/create-evento'; import { GetEventoWithCuestionarios } from '@/types/evento'; import axiosInstance from '@/utils/api-config'; import { getAxiosError } from '@/utils/errors-utils'; import { commands } from '@uiw/react-md-editor'; import dynamic from 'next/dynamic'; import React, { useState } from 'react'; import toast from 'react-hot-toast'; const MDEditor = dynamic(() => import('@uiw/react-md-editor'), { ssr: false }); interface EditEventoProps { evento: GetEventoWithCuestionarios; handleChange: (field: keyof CreateEventoType, value: string | Date) => void; handleOnChange: (eventoActualizado: GetEventoWithCuestionarios) => void; } export default function EditEvento({ evento, handleChange, handleOnChange, }: EditEventoProps) { const toDateInputValue = (isoString: string) => isoString.slice(0, 10); 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( `/evento/${evento.id_evento}/banner`, formData, { headers: { 'Content-Type': 'multipart/form-data', }, } ); } // 2. Actualizar el evento (sin incluir 'banner') const res = await axiosInstance.patch(`/evento/${evento.id_evento}`, { nombre_evento: evento.nombre_evento, descripcion_evento: evento.descripcion_evento, tipo_evento: evento.tipo_evento, fecha_inicio: evento.fecha_inicio, fecha_fin: evento.fecha_fin, }); toast.success('Evento actualizado correctamente'); handleOnChange(res.data); // Actualiza en el padre } catch (error) { const msg = getAxiosError(error); toast.error(`Error al actualizar el evento: ${msg.message}`); } finally { setLoading(false); } }; return (

Editar Información del Evento

Modifica los datos del evento que desees actualizar.

{ setNuevoBanner(file); }} /> handleChange('nombre_evento', e.target.value)} />
{ const texto = value || ''; if (texto.length <= 500) { handleChange('descripcion_evento', texto); } }} height={250} commands={[commands.bold, commands.italic, commands.hr]} />
handleChange('fecha_inicio', e.target.value)} />
handleChange('fecha_fin', e.target.value)} />
); }