from datetime import datetime
from enum import Enum
from typing import Optional

from fastapi import UploadFile, File, Form
from pydantic import BaseModel, Field


class CategoryStatusEnum(str, Enum):
    ENABLED = "ENABLED"
    DISABLED = "DISABLED"

class CategoryResponse(BaseModel):
    category_id: int
    name: str
    description: Optional[str]
    parent_category_id: Optional[int]
    parent_category_name: Optional[str] = None
    seo_keyword: Optional[str]
    meta_title: Optional[str]
    meta_description: Optional[str]
    meta_keyword: Optional[str]
    status: int
    sort_order: Optional[int] = None
    image: Optional[str]
    icon: Optional[str] = None  # Додаємо поле іконки
    date_added: Optional[str]
    date_modify: Optional[str]

    model_config = {
        "from_attributes": True
    }

class CategoryCreateForm:
    def __init__(
        self,
        name: str = Form(...),
        description: Optional[str] = Form(None),
        parent_category_id: Optional[int] = Form(0),
        seo_keyword: Optional[str] = Form(None),
        meta_title: Optional[str] = Form(None),
        meta_description: Optional[str] = Form(None),
        meta_keyword: Optional[str] = Form(None),
        status: int = Form(1, description="Статус категорії: 1 - enabled, 0 - disabled"),
        sort_order: Optional[int] = Form(None, description="Порядок сортування (1, 2, 3...)"),
        image: Optional[UploadFile] = File(None),
        icon: Optional[UploadFile] = File(None, description="Іконка категорії"),  # Додаємо поле іконки
    ):
        self.name = name
        self.description = description
        self.parent_category_id = parent_category_id
        self.seo_keyword = seo_keyword
        self.meta_title = meta_title
        self.meta_description = meta_description
        self.meta_keyword = meta_keyword
        self.status = status
        self.sort_order = sort_order
        self.image = image
        self.icon = icon  # Додаємо поле іконки

class CategoryUpdateForm:
    def __init__(
        self,
        name: Optional[str] = Form(None),
        description: Optional[str] = Form(None),
        parent_id: Optional[int] = Form(None),
        slug: Optional[str] = Form(None),
        meta_title: Optional[str] = Form(None),
        meta_description: Optional[str] = Form(None),
        meta_keywords: Optional[str] = Form(None),
        status: Optional[int] = Form(None, description="Статус категорії: 1 = enabled, 0 = disabled"),
        sort_order: Optional[int] = Form(None, description="Порядок сортування (1, 2, 3...)"),
        icon: Optional[UploadFile] = File(None, description="Іконка категорії"),  # Додаємо поле іконки
    ):
        self.name = name
        self.description = description
        self.parent_id = parent_id
        self.slug = slug
        self.meta_title = meta_title
        self.meta_description = meta_description
        self.meta_keywords = meta_keywords
        self.status = status
        self.sort_order = sort_order
        self.icon = icon