import { useForm } from '@inertiajs/react';

import { destroy as projectDestroy } from '@/actions/App/Domains/Project/Http/Controllers/ProjectController';
import { ConfirmDeleteDialog } from '@/components/ConfirmDeleteDialog';
import type { ProjectDeleteTarget } from '@/types/project';

interface DeleteProjectDialogProps {
    project: ProjectDeleteTarget | null;
    open: boolean;
    onOpenChange: (open: boolean) => void;
}

export function DeleteProjectDialog({
    project,
    open,
    onOpenChange,
}: DeleteProjectDialogProps) {
    const { delete: destroy, processing } = useForm();

    const handleDelete = () => {
        if (!project) {
            return;
        }

        destroy(projectDestroy({ project: project.id }).url, {
            onSuccess: () => {
                onOpenChange(false);
            },
        });
    };

    return (
        <ConfirmDeleteDialog
            open={open}
            onOpenChange={onOpenChange}
            onConfirm={handleDelete}
            processing={processing}
            title="Delete Project"
            description={
                <>
                    Are you sure you want to delete{' '}
                    <span className="font-semibold text-foreground">
                        "{project?.projectName}"
                    </span>
                    ? This action cannot be undone and all associated data will
                    be removed.
                </>
            }
            confirmLabel="Yes, Delete Project"
            cancelLabel="Keep Project"
        />
    );
}
