import { Head, Link, router } from '@inertiajs/react';
import { Eye, Pencil, Plus, Search, Trash2, Users } from 'lucide-react';
import { useState } from 'react';
import AppLayout from '@/layouts/app-layout';
import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Input } from '@/components/ui/input';

import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
type Customer = { id: number; code: string | null; name: string; phone: string | null; contact_person: string | null; type: string; status: string; category?: { name: string } | null; sales?: { name: string } | null; team?: { name: string } | null };
type Props = { customers: { data: Customer[]; links: Array<{ url: string | null; label: string; active: boolean }>; current_page: number; last_page: number; total: number }; filters: { search: string } };

export default function CustomersIndex({ customers, filters }: Props) {
    const [search, setSearch] = useState(filters.search ?? '');
    const submit = (e: React.FormEvent) => { e.preventDefault(); router.get('/customers', { search }, { preserveState: true, replace: true }); };
    const destroy = (id: number) => { if (window.confirm('Hapus customer ini?')) router.delete(`/customers/${id}`); };
    return <><Head title="Customers" /><div className="flex flex-1 flex-col gap-6 p-4 md:p-6">
        <div className="flex flex-col justify-between gap-3 md:flex-row md:items-center"><div><p className="text-muted-foreground text-sm">CRM</p><h1 className="text-2xl font-semibold">Customers</h1></div><Button asChild><Link href="/customers/create"><Plus className="mr-2 size-4" /> Customer Baru</Link></Button></div>
        <Card className="shadow-none"><CardHeader><CardTitle className="flex items-center gap-2"><Users className="size-5" /> Database Customer <span className="text-muted-foreground text-sm font-normal">({customers.total})</span></CardTitle></CardHeader><CardContent>
            <form onSubmit={submit} className="mb-5 flex max-w-lg gap-2"><div className="relative flex-1"><Search className="text-muted-foreground absolute top-2.5 left-3 size-4" /><Input className="pl-9" value={search} onChange={e => setSearch(e.target.value)} placeholder="Cari nama, kode, telepon..." /></div><Button type="submit" variant="outline">Cari</Button></form>
            <div className="overflow-x-auto"><Table className="w-full text-sm"><TableHeader><TableRow className="text-muted-foreground border-b text-left"><TableHead className="pb-3 font-medium">Customer</TableHead><TableHead className="pb-3 font-medium">Kategori</TableHead><TableHead className="pb-3 font-medium">Sales</TableHead><TableHead className="pb-3 font-medium">Telepon</TableHead><TableHead className="pb-3 font-medium">Status</TableHead><TableHead className="pb-3 text-right font-medium">Aksi</TableHead></TableRow></TableHeader><TableBody>
                {customers.data.map(c => <TableRow key={c.id} className="border-b last:border-0"><TableCell className="py-3"><Link className="font-medium hover:underline" href={`/customers/${c.id}`}>{c.name}</Link><div className="text-muted-foreground text-xs">{c.code || 'Tanpa kode'} · {c.type === 'company' ? 'Perusahaan' : 'Individu'}</div></TableCell><TableCell className="py-3">{c.category?.name ?? '-'}</TableCell><TableCell className="py-3">{c.sales?.name ?? '-'}</TableCell><TableCell className="py-3">{c.phone ?? '-'}</TableCell><TableCell className="py-3"><Badge variant={c.status === 'active' ? 'default' : 'outline'}>{c.status}</Badge></TableCell><TableCell className="py-3"><div className="flex justify-end gap-1"><Button variant="ghost" size="icon" asChild><Link href={`/customers/${c.id}`}><Eye /></Link></Button><Button variant="ghost" size="icon" asChild><Link href={`/customers/${c.id}/edit`}><Pencil /></Link></Button><Button variant="ghost" size="icon" onClick={() => destroy(c.id)}><Trash2 /></Button></div></TableCell></TableRow>)}
                {customers.data.length === 0 && <TableRow><TableCell colSpan={6} className="text-muted-foreground py-10 text-center">Customer tidak ditemukan.</TableCell></TableRow>}
            </TableBody></Table></div>
            {customers.last_page > 1 && <div className="mt-5 flex flex-wrap gap-2">{customers.links.map((link, i) => <Button key={i} variant={link.active ? 'default' : 'outline'} size="sm" disabled={!link.url} onClick={() => link.url && router.visit(link.url)} dangerouslySetInnerHTML={{ __html: link.label }} />)}</div>}
        </CardContent></Card></div></>;
}
CustomersIndex.layout = (page: React.ReactNode) => <AppLayout breadcrumbs={[{ title: 'Customers', href: '/customers' }]}>{page}</AppLayout>;
