"use client" import { useState } from "react" import { useRouter } from "next/navigation" 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 { Loader2, Eye, EyeOff, ArrowLeft, Building2 } from "lucide-react" import { adminCompaniesApi } from "@/lib/api" import { toast } from "sonner" import { useTranslation } from "@/lib/i18n" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import Link from "next/link" import { LocationAutocomplete } from "@/components/location-autocomplete" const formatCNPJ = (value: string) => { return value .replace(/\D/g, "") .replace(/^(\d{2})(\d)/, "$1.$2") .replace(/^(\d{2})\.(\d{3})(\d)/, "$1.$2.$3") .replace(/\.(\d{3})(\d)/, ".$1/$2") .replace(/(\d{4})(\d)/, "$1-$2") .substring(0, 18) } const formatPhone = (value: string) => { return value .replace(/\D/g, "") .replace(/^(\d{2})(\d)/, "($1) $2") .replace(/(\d{5})(\d)/, "$1-$2") .substring(0, 15) } export default function NewCompanyPage() { const { t } = useTranslation() const router = useRouter() const [creating, setCreating] = useState(false) const [showPassword, setShowPassword] = useState(false) const [showConfirmPassword, setShowConfirmPassword] = useState(false) const [formData, setFormData] = useState({ name: "", slug: "", email: "", password: "", confirmPassword: "", document: "", phone: "", website: "", address: "", description: "", logoUrl: "", yearsInMarket: "", }) const generateSlug = (name: string) => { return name .toLowerCase() .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .replace(/[^a-z0-9]+/g, "-") .replace(/(^-|-$)/g, "") } const handleCreate = async () => { try { setCreating(true) const payload = { ...formData, document: formData.document.replace(/\D/g, ''), phone: formData.phone.replace(/\D/g, ''), } await adminCompaniesApi.create(payload) toast.success(t('admin.companies.success.created')) router.push("/dashboard/companies") } catch (error: any) { console.error("Error creating company:", error) if (error.message?.includes("already exists")) { toast.error(t('admin.companies.error.emailExists', { defaultValue: "User with this email already exists" })) } else { toast.error("Failed to create company") } } finally { setCreating(false) } } return (
{t('admin.companies.create.title')} {t('admin.companies.create.subtitle')}
{/* Seção: Informações Básicas */}

{t('admin.companies.sections.basicInfo', { defaultValue: 'Informações Básicas' })}

setFormData({ ...formData, name: e.target.value, slug: generateSlug(e.target.value), }) } placeholder={t('admin.companies.create.namePlaceholder')} />
setFormData({ ...formData, slug: e.target.value })} placeholder={t('admin.companies.create.slugPlaceholder')} />
setFormData({ ...formData, document: formatCNPJ(e.target.value) })} placeholder="CNPJ / Document" />
setFormData({ ...formData, email: e.target.value })} placeholder={t('admin.companies.create.emailPlaceholder')} />
{/* Seção: Segurança */}

{t('admin.companies.sections.security', { defaultValue: 'Segurança' })}

setFormData({ ...formData, password: e.target.value })} placeholder="******" />
setFormData({ ...formData, confirmPassword: e.target.value })} placeholder="******" />
{formData.password !== formData.confirmPassword && formData.confirmPassword && (

{t('admin.companies.fields.passwordsDoNotMatch')}

)}
{/* Seção: Contato e Localização */}

{t('admin.companies.sections.contact', { defaultValue: 'Contato e Localização' })}

setFormData({ ...formData, phone: formatPhone(e.target.value) })} placeholder="(99) 99999-9999" />
setFormData({ ...formData, website: e.target.value })} placeholder="https://example.com" />
setFormData({ ...formData, address: label })} placeholder="Buscar cidade ou estado..." />
{/* Seção: Detalhes da Empresa */}

{t('admin.companies.sections.details', { defaultValue: 'Detalhes Adicionais' })}