import { Form, Head } from '@inertiajs/react';
import { ClipboardList } from 'lucide-react';
import { useState } from 'react';
import InputError from '@/components/input-error';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Spinner } from '@/components/ui/spinner';
import AppLayout from '@/layouts/app-layout';
import type { BreadcrumbItem } from '@/types';

type Course = { id: number; title: string };

type Props = { courses: Course[] };

const breadcrumbs: BreadcrumbItem[] = [
    { title: 'Instructor', href: '/instructor/courses' },
    { title: 'Assigned Tasks', href: '/instructor/assigned-tasks' },
    { title: 'Buat Task', href: '/instructor/assigned-tasks/create' },
];

export default function InstructorAssignedTasksCreate({ courses }: Props) {
    const [isRecurring, setIsRecurring] = useState(false);
    return (
        <>
            <Head title="Buat Assigned Task" />

            <div className="flex flex-col gap-6 p-4 md:p-6">
                <div className="flex items-center gap-3">
                    <div className="flex h-10 w-10 items-center justify-center rounded-xl bg-blue-100 dark:bg-blue-800/60">
                        <ClipboardList className="h-5 w-5 text-blue-600 dark:text-blue-300" />
                    </div>
                    <div>
                        <h1 className="text-xl font-bold">Buat Assigned Task</h1>
                        <p className="text-sm text-muted-foreground">Task akan masuk ke planner semua siswa yang enroll di kelas ini</p>
                    </div>
                </div>

                <Form action="/instructor/assigned-tasks" method="post" className="max-w-xl">
                    {({ processing, errors }) => (
                        <div className="flex flex-col gap-5 rounded-2xl border bg-card p-6">
                            <div className="grid gap-1.5">
                                <Label htmlFor="title" className="font-semibold">Judul Task</Label>
                                <Input id="title" name="title" placeholder="Contoh: Latihan soal bab 3" required />
                                <InputError message={errors.title} />
                            </div>

                            <div className="grid gap-1.5">
                                <Label htmlFor="description" className="font-semibold">
                                    Deskripsi <span className="font-normal text-muted-foreground">(opsional)</span>
                                </Label>
                                <textarea
                                    id="description"
                                    name="description"
                                    rows={3}
                                    placeholder="Instruksi atau keterangan tambahan untuk siswa..."
                                    className="border-input placeholder:text-muted-foreground focus-visible:border-ring flex w-full resize-none rounded-xl border bg-background px-3 py-2 text-sm shadow-xs outline-none focus-visible:ring-[3px]"
                                />
                                <InputError message={errors.description} />
                            </div>

                            <div className="grid gap-1.5">
                                <Label htmlFor="course_id" className="font-semibold">Kelas</Label>
                                <Select name="course_id" required>
                                    <SelectTrigger className="rounded-xl">
                                        <SelectValue placeholder="Pilih kelas..." />
                                    </SelectTrigger>
                                    <SelectContent>
                                        {courses.map((c) => (
                                            <SelectItem key={c.id} value={String(c.id)}>
                                                {c.title}
                                            </SelectItem>
                                        ))}
                                    </SelectContent>
                                </Select>
                                <InputError message={errors.course_id} />
                                {courses.length === 0 && (
                                    <p className="text-xs text-muted-foreground">Belum ada kelas yang sudah dipublikasikan.</p>
                                )}
                            </div>



                            {/* Recurring Task Option */}
                            <div className="flex items-start gap-3 rounded-xl border border-dashed border-zinc-200 p-4 dark:border-zinc-800">
                                <input
                                    id="is_recurring_chk"
                                    type="checkbox"
                                    checked={isRecurring}
                                    onChange={(e) => setIsRecurring(e.target.checked)}
                                    className="mt-1 h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 cursor-pointer"
                                />
                                <input type="hidden" name="is_recurring" value={isRecurring ? "1" : "0"} />
                                <div className="grid gap-0.5">
                                    <Label htmlFor="is_recurring_chk" className="font-semibold cursor-pointer">Jadwalkan Berulang (Repeat)</Label>
                                    <p className="text-xs text-muted-foreground">Aktifkan untuk membuat task ini muncul berkala di to-do list siswa</p>
                                </div>
                            </div>

                            {isRecurring && (
                                <div className="grid grid-cols-2 gap-4 rounded-xl bg-zinc-50 p-4 dark:bg-zinc-950/20">
                                    <div className="grid gap-1.5">
                                        <Label htmlFor="interval_days" className="font-semibold">Ulangi Setiap (Hari)</Label>
                                        <Input
                                            id="interval_days"
                                            name="interval_days"
                                            type="number"
                                            min="1"
                                            defaultValue="3"
                                            required
                                            className="rounded-xl bg-white dark:bg-zinc-900"
                                            placeholder="Contoh: 3 untuk setiap 3 hari"
                                        />
                                        <InputError message={errors.interval_days} />
                                    </div>
                                    <div className="grid gap-1.5">
                                        <Label htmlFor="recurring_count" className="font-semibold">Jumlah Pengulangan (Kali)</Label>
                                        <Input
                                            id="recurring_count"
                                            name="recurring_count"
                                            type="number"
                                            min="1"
                                            max="100"
                                            defaultValue="5"
                                            required
                                            className="rounded-xl bg-white dark:bg-zinc-900"
                                            placeholder="Contoh: 5 kali"
                                        />
                                        <InputError message={errors.recurring_count} />
                                    </div>
                                </div>
                            )}

                            <div className="flex gap-2 pt-1">
                                <Button type="submit" disabled={processing} className="gap-1.5 bg-blue-600 hover:bg-blue-700">
                                    {processing && <Spinner />}
                                    Buat & Kirim Task
                                </Button>
                                <Button type="button" variant="outline" onClick={() => history.back()}>
                                    Batal
                                </Button>
                            </div>
                        </div>
                    )}
                </Form>
            </div>
        </>
    );
}

InstructorAssignedTasksCreate.layout = (page: React.ReactNode) => <AppLayout breadcrumbs={breadcrumbs}>{page}</AppLayout>;
