"use client" import { useEffect, useState } from "react" import { Navbar } from "@/components/navbar" import { Footer } from "@/components/footer" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Check, Briefcase, Loader2, MapPin, DollarSign, Clock, Building2 } from "lucide-react" import Image from "next/image" import Link from "next/link" import { jobsApi, adminCompaniesApi, type CreateJobPayload, type AdminCompany } from "@/lib/api" import { toast } from "sonner" export default function PublicarVagaPage() { const [loading, setLoading] = useState(false) const [loadingCompanies, setLoadingCompanies] = useState(true) const [companies, setCompanies] = useState([]) const [formData, setFormData] = useState({ title: "", description: "", location: "", salaryMin: "", salaryMax: "", salaryType: "monthly", currency: "BRL", employmentType: "", workingHours: "", companyId: "", }) useEffect(() => { const loadCompanies = async () => { try { setLoadingCompanies(true) const data = await adminCompaniesApi.list(undefined, 1, 100) setCompanies(data.data ?? []) } catch (error) { console.error("Falha ao carregar empresas:", error) toast.error("Falha ao carregar empresas") } finally { setLoadingCompanies(false) } } loadCompanies() }, []) const canSubmit = () => { return ( formData.title.length >= 5 && formData.description.length >= 20 && formData.companyId !== "" ) } const handleInputChange = (field: string, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!canSubmit()) { toast.error("Preencha os campos obrigatórios") return } setLoading(true) try { const payload: CreateJobPayload = { companyId: formData.companyId, title: formData.title, description: formData.description, location: formData.location || undefined, employmentType: formData.employmentType as CreateJobPayload["employmentType"] || undefined, salaryMin: formData.salaryMin ? parseFloat(formData.salaryMin) : undefined, salaryMax: formData.salaryMax ? parseFloat(formData.salaryMax) : undefined, salaryType: formData.salaryType as CreateJobPayload["salaryType"] || undefined, currency: formData.currency as CreateJobPayload["currency"] || undefined, workingHours: formData.workingHours || undefined, status: "draft", } await jobsApi.create(payload) toast.success("Vaga publicada com sucesso! Ela será revisada em breve.") setFormData({ title: "", description: "", location: "", salaryMin: "", salaryMax: "", salaryType: "monthly", currency: "BRL", employmentType: "", workingHours: "", companyId: "", }) } catch (error: any) { console.error("Falha ao publicar vaga:", error) toast.error(error.message || "Falha ao publicar vaga") } finally { setLoading(false) } } return (
Background

Anuncie vagas de emprego
de forma rápida e eficiente

Uma das maiores comunidades de profissionais do mercado

Plataforma com alta visibilidade e acesso diário

Grande movimentação de candidaturas todos os dias

Novos talentos se cadastrando constantemente

Anuncie a sua vaga de emprego GRÁTIS!

Mais de 50 mil currículos cadastrados

handleInputChange("title", e.target.value)} className="h-11 bg-white border-gray-300" />