import RoleForm from '@admin/components/all-forms/RoleForm';
import HeaderWithBackIcon from '@admin/components/header-with-backicon';
import AppLayout from '@admin/layouts/app-layout';
import { PageProps } from '@admin/types/global';
import { Head, router, usePage } from '@inertiajs/react';
import { ChevronRight } from 'lucide-react';

export default function Edit() {
    // @ts-ignore
    const { roleModuleScopes, role, modulePermissions } = usePage<PageProps>().props;

    const normalizeSlug = (slug: string) => slug.replace(/_/g, '_');

    // Prepare initial data for the form
    const initialData = {
        name: (role as any)?.name || '',
        slug: (role as any)?.slug || '',
        permissions: (role as any)?.permissions?.map((p: any) => normalizeSlug(p.slug)) || [],
        moduleScopes: (roleModuleScopes as any) || {},
    };

    const handleSubmit = (formData: any) => {
        console.log('🚀 ~ handleSubmit ~ formData:', formData);
        // Show success toast and submit
        router.put(route('roles.update', (role as any).uid), formData, {
            onError: (errors) => {
                console.error('Validation errors:', errors);
            },
            onSuccess: () => {
                console.log('Role updated successfully');
            }
        });
    };

    return (
        <>
            <Head title={`Edit Role: ${(role as any)?.name}`} />
            <div className="mx-auto flex w-full flex-1 flex-col gap-4 p-3 sm:gap-6 sm:p-2">
                {/* Simple header */}
                <div className="flex items-center justify-between">
                    <HeaderWithBackIcon title="Edit Role" description={`Update role details and permissions for ${(role as any)?.name}`} />
                    <div className="hidden items-center space-x-2 text-sm text-gray-500 sm:flex">
                        <span>Roles</span>
                        <ChevronRight className="h-4 w-4" />
                        <span className="font-medium text-primary">Edit</span>
                    </div>
                </div>
                {/* Main content */}
                <RoleForm
                    modulePermissions={modulePermissions as any}
                    initialData={initialData}
                    onSubmit={handleSubmit}
                    submitButtonText="Update Role"
                    isEdit={true}
                    isView={false}
                />
            </div>
        </>
    );
}

Edit.layout = (page: React.ReactNode) => (
    <AppLayout
        breadcrumbs={[
            { title: 'Dashboard', href: route('dashboard') },
            { title: 'Roles', href: route('roles.index') },
            { title: 'Edit', href: '#' },
        ]}
        title="Edit Role"
    >
        {page}
    </AppLayout>
);
