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
