# ================================================================
# services/auth/app/schemas/users.py
# ================================================================
"""
User schemas
"""

from pydantic import BaseModel, EmailStr, Field, validator
from typing import Optional
from datetime import datetime

from shared.utils.validation import validate_spanish_phone

class UserUpdate(BaseModel):
    """User update schema"""
    full_name: Optional[str] = Field(None, min_length=2, max_length=100)
    phone: Optional[str] = None
    language: Optional[str] = Field(None, pattern="^(es|en)$")
    timezone: Optional[str] = None
    
    @validator('phone')
    def validate_phone(cls, v):
        """Validate phone number"""
        if v and not validate_spanish_phone(v):
            raise ValueError('Invalid Spanish phone number')
        return v

class UserProfile(BaseModel):
    """User profile schema"""
    id: str
    email: str
    full_name: str
    phone: Optional[str]
    language: str
    timezone: str
    is_active: bool
    is_verified: bool
    created_at: datetime
    last_login: Optional[datetime]

    class Config:
        from_attributes = True
