import React, { useState, useEffect } from 'react'; import { base44 } from '@/api/base44Client'; import { useQuery, useMutation } from '@tanstack/react-query'; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Calendar } from "@/components/ui/calendar"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { format } from "date-fns"; import { es } from "date-fns/locale"; import { Calendar as CalendarIcon, UploadCloud, Loader2, CheckCircle } from "lucide-react"; import { cn } from "@/lib/utils"; import { toast } from "sonner"; import { useNavigate } from 'react-router-dom'; import { createPageUrl } from '@/utils'; export default function CreateEvent() { const navigate = useNavigate(); const [formData, setFormData] = useState({ title: "", description: "", specialty: "General", location: "", duration: "", price: "", date: undefined, organizer_email: "", image_url: "" }); const createMutation = useMutation({ mutationFn: (data) => base44.entities.Event.create(data), onSuccess: () => { toast.success("Evento publicado con éxito"); navigate(createPageUrl('Home')); }, onError: () => { toast.error("Error al publicar el evento"); } }); const handleSubmit = (e) => { e.preventDefault(); if (!formData.date || !formData.title || !formData.price) { toast.error("Por favor completa los campos requeridos"); return; } createMutation.mutate({ ...formData, price: Number(formData.price), date: format(formData.date, 'yyyy-MM-dd') }); }; const handleImageUpload = async (e) => { const file = e.target.files[0]; if (!file) return; try { toast.info("Subiendo imagen..."); const { file_url } = await base44.integrations.Core.UploadFile({ file }); setFormData({...formData, image_url: file_url}); toast.success("Imagen subida"); } catch (error) { toast.error("Error al subir imagen"); } }; return (

Publicar Nueva Jornada

Comparte conocimiento con la comunidad científica

{/* Basic Info */}

Información General

setFormData({...formData, title: e.target.value})} />
setFormData({...formData, date})} initialFocus />
{/* Details */}

Detalles y Logística

setFormData({...formData, location: e.target.value})} />
setFormData({...formData, duration: e.target.value})} />
setFormData({...formData, price: e.target.value})} />
setFormData({...formData, organizer_email: e.target.value})} />