
import { classNames } from '@/Utils/Index';
import { Head, router, useForm } from '@inertiajs/react';
import { Form, Input, Button, Select, Upload, Typography, message, Space, Divider } from 'antd';
import { UploadOutlined } from '@ant-design/icons';

const { Text } = Typography;

export default function TripForm({
    className = '',
    action = 'products.store',
    productCategories,
    initialData
}) {

    const [form] = Form.useForm();

    const { data, setData, post, errors, processing, recentlySuccessful } =
        useForm({
            name_mn: initialData?.mn.name,
            name_en: initialData?.en.name,
            description_mn: initialData?.mn.description,
            description_en: initialData?.en.description,
            short_description_mn: initialData?.mn.short_description,
            short_description_en: initialData?.en.short_description,
            product_category_id: initialData?.product_category_id,
            image: null,
            slug: initialData?.slug
        });

    const submit = (e) => {
        if (action === 'products.store') {
            post(route(action));
        } else {
            router.post(route('products.update', { product: initialData.slug }), {
                _method: 'put',
                ...data,
            })
        }
    };

    return (
        <section className={classNames(
            "container max-w-7xl  px-4 mx-auto my-6", className
        )}>
            <Head title={action === 'product.store' ? 'Бүтээгдэхүүн нэмэх' : 'Бүтээгдэхүүн засах'} />
            <div className="bg-white overflow-hidden shadow-sm sm:rounded-lg p-4">
                <header>
                    <h2 className="text-lg font-medium text-gray-900">
                        {action === 'product.store' ? 'Бүтээгдэхүүн нэмэх' : 'Бүтээгдэхүүн засах'}
                    </h2>

                    <p className="mt-1 text-sm text-gray-600">
                        {/* Update your account's profile information and email address. */}
                    </p>
                </header>
                <Form
                    form={form}
                    onFinish={submit}
                    layout="vertical"
                    initialValues={data}
                    className=""
                >
                    <Divider />
                    <Form.Item
                        label="Нэр (Монгол)"
                        name="name_mn"
                        validateStatus={errors.name_mn ? 'error' : ''}
                        help={errors.name_mn}

                    >
                        <Input
                        onChange={(e) => setData('name_mn', e.target.value)}
                        autoComplete="name_mn"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Нэр (Англи)"
                        name="name_en"
                        validateStatus={errors.name_en ? 'error' : ''}
                        help={errors.name_en}

                    >
                        <Input
                            onChange={(e) => setData('name_en', e.target.value)}
                            autoComplete="name_en"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Тайлбар (Монгол)"
                        name="description_mn"
                        validateStatus={errors.description_mn ? 'error' : ''}
                        help={errors.description_mn}

                    >
                        <Input.TextArea
                            onChange={(e) => setData('description_mn', e.target.value)}
                            autoComplete="description_mn"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Тайлбар (Англи)"
                        name="description_en"
                        validateStatus={errors.description_en ? 'error' : ''}
                        help={errors.description_en}

                    >
                        <Input.TextArea
                            onChange={(e) => setData('description_en', e.target.value)}
                            autoComplete="description_en"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Богино тайлбар (Монгол)"
                        name="short_description_mn"
                        validateStatus={errors.short_description_mn ? 'error' : ''}
                        help={errors.short_description_mn}

                    >
                        <Input.TextArea
                            onChange={(e) => setData('short_description_mn', e.target.value)}
                            autoComplete="short_description_mn"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Богино тайлбар (Англи)"
                        name="short_description_en"
                        validateStatus={errors.short_description_en ? 'error' : ''}
                        help={errors.short_description_en}

                    >
                        <Input.TextArea
                            onChange={(e) => setData('short_description_en', e.target.value)}
                            autoComplete="short_description_en"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Ангилал"
                        name="product_category_id"
                        validateStatus={errors.product_category_id ? 'error' : ''}
                        help={errors.product_category_id}
                        className="sm:col-span-2"
                    >
                        <Select
                            options={productCategories.map((category) => ({
                                value: category.id,
                                label: category.name,
                            }))}
                            onChange={(value) => setData('product_category_id', value)}
                        />
                    </Form.Item>

                    <Form.Item
                        label="Барааны код"
                        name="slug"
                        validateStatus={errors.slug ? 'error' : ''}
                        help={errors.slug}
                        className="sm:col-span-2"
                    >
                        <Input
                            onChange={(e) => setData('slug', e.target.value)}
                            autoComplete="slug"
                        />
                    </Form.Item>

                    <Form.Item
                        label="Зураг"
                        name="image"
                        validateStatus={errors.image ? 'error' : ''}
                        help={errors.image}
                        className="sm:col-span-2"
                    >
                        <Upload
                            beforeUpload={(file) => {
                                setData('image', file);
                                return false; // Prevent automatic upload
                            }}
                            maxCount={1}
                        >
                            <Button icon={<UploadOutlined />}>Upload Image</Button>
                        </Upload>
                    </Form.Item>

                    <Space className="flex items-center gap-4 mt-6">
                        <Button type="primary" htmlType="submit" loading={processing}>Хадгалах</Button>

                        {recentlySuccessful && (
                            <Text type="success">Saved.</Text>
                        )}
                    </Space>
                </Form>

            </div>
        </section>
    );
}
