import { Button } from '@/components/ui/button';
import { Calendar } from '@/components/ui/calendar';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { useForm } from '@inertiajs/react';
import AppLayout from '@/layouts/app-layout';
import { Head } from '@inertiajs/react';
import { type BreadcrumbItem } from '@/types';
import InputError from '@/components/input-error';
import { format } from 'date-fns';
import { CalendarIcon } from 'lucide-react';
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
import { cn } from '@/lib/utils';
import { Textarea } from '@/components/ui/textarea';
interface EmployeeFormProps {
mode: 'create' | 'edit';
employee?: {
id?: string;
employee_id: string;
name: string;
email: string;
gender: string;
nik?: string;
birth_date: string;
birth_place?: string;
address?: string;
phone_number?: string;
specialization?: string;
license_number?: string;
join_date: string;
resign_date?: string;
is_active: boolean;
};
}
const toLocalISOString = (date: Date) => {
const offset = date.getTimezoneOffset();
const localDate = new Date(date.getTime() - (offset * 60 * 1000));
return localDate.toISOString().split('T')[0];
};
const breadcrumbs: BreadcrumbItem[] = [
{ title: 'Dashboard', href: '/dashboard' },
{ title: 'Employees', href: '/employees' },
{ title: 'Form', href: '#' },
];
export default function EmployeeForm({ mode, employee }: EmployeeFormProps) {
const { data, setData, post, put, processing, errors, reset } = useForm({
// User fields
name: employee?.name || '',
email: employee?.email || '',
password: '',
// Employee fields
employee_id: employee?.employee_id || '',
gender: employee?.gender || 'laki-laki',
nik: employee?.nik || '',
birth_date: employee?.birth_date || '',
birth_place: employee?.birth_place || '',
address: employee?.address || '',
phone_number: employee?.phone_number || '',
specialization: employee?.specialization || '',
license_number: employee?.license_number || '',
join_date: employee?.join_date || '',
resign_date: employee?.resign_date || '',
is_active: employee?.is_active ?? true,
});
const onSubmit = (e: React.FormEvent) => {
e.preventDefault();
if (mode === 'create') {
post(route('employees.store'), {
onSuccess: () => reset(),
});
} else {
put(route('employees.update', employee?.id), {
preserveScroll: true,
});
}
};
return (