import React, { useState } from 'react'; import { Head, Link, router } from '@inertiajs/react'; import axios from 'axios'; import { toast } from 'sonner'; import { Loader2, Users, DollarSign, MessageSquare } from 'lucide-react'; export default function Register() { const [data, setData] = useState({ name: '', email: '', phone: '', }); const [loading, setLoading] = useState(false); const [errors, setErrors] = useState({}); const handleInputChange = (field, value) => { setData(prev => ({ ...prev, [field]: value })); if (errors[field]) { setErrors(prev => ({ ...prev, [field]: null })); } }; const validateForm = () => { const newErrors = {}; if (!data.name.trim()) { newErrors.name = 'Sponsor name is required.'; } if (!data.email.trim()) { newErrors.email = 'Email address is required.'; } else if (!/\S+@\S+\.\S+/.test(data.email)) { newErrors.email = 'Please enter a valid email address.'; } if (!data.phone.trim()) { newErrors.phone = 'Mobile number is required.'; } else if (!/^[0-9]{7,15}$/.test(data.phone)) { newErrors.phone = 'Please enter a valid mobile number (7-15 digits without country code).'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e) => { e.preventDefault(); setErrors({}); if (!validateForm()) { toast.error('Validation failed. Please correct the fields in red.'); return; } setLoading(true); const formData = new FormData(); formData.append('name', data.name); formData.append('email', data.email); formData.append('phone', data.phone); try { await axios.post('/employer/register', formData, { headers: { 'Content-Type': 'multipart/form-data' } }); toast.success('Registration details saved! Verification code sent to your email.'); router.visit('/employer/verify-email'); } catch (err) { if (err.response) { if (err.response.status === 409) { const errMsg = err.response.data?.errors?.email || 'This email address is already registered.'; setErrors({ email: errMsg }); toast.error(errMsg); } else if (err.response.status === 422) { setErrors(err.response.data.errors || {}); toast.error('Validation failed. Please correct the fields in red.'); } else { toast.error('Something went wrong. Please try again.'); } } else { toast.error('Network error. Please check your internet connection.'); } } finally { setLoading(false); } }; const renderStepIndicator = () => (
Unlock direct access to top domestic candidates with a Migrant premium subscription. Find, interview, and hire directly without middlemen.
Register your employer portal to start searching
Already have an account?{' '} Sign in