from datetime import datetime, date
from pydantic import BaseModel, ConfigDict, field_validator
from typing import Optional
from enum import Enum

class GiftCardCreate(BaseModel):
    amount: float
    validate_date: date
    is_active: bool = True

class GiftCardUpdate(BaseModel):
    amount: Optional[float] = None
    validate_date: Optional[date] = None
    is_active: Optional[bool] = None
    
class GiftCard(BaseModel):
    id: int
    user_type: str
    is_used: bool = False
    is_used_by: Optional[int] = None
    created_at: datetime
    updated_at: datetime
    model_config = ConfigDict(from_attributes=True)
    
class GiftCardResponse(GiftCard):
    data: Optional[GiftCard] = None

class GiftCardAddToWalletRequest(BaseModel):
    gift_card_code: str
    
