from pydantic import BaseModel
from uuid import UUID
from typing import Optional, List
from schema.common_schema import PaginationSchema


class UserSchema(BaseModel):
    id: UUID
    name: str
    email: str
    org_id: Optional[UUID] = None
    platform_role: str
    org_role: Optional[str] = None
    is_active: bool
    is_verified: bool

    class Config:
        from_attributes = True
        from_orm=True

class CreateUserResponseSchema(BaseModel):
    message: str
    token: str
    user: UserSchema

class CreateUserSchema(BaseModel):
    name: str
    email: str
    password: str
    org_id: Optional[UUID] = None
    platform_role: Optional[str]=None
    org_role: Optional[str] = None

class UserLoginSchema(BaseModel):
    email: str
    password: str

class ForgotPasswordRequestSchema(BaseModel):
    email: str

class ForgotPasswordResponseSchema(BaseModel):
    message: str

class ResetPasswordRequestSchema(BaseModel):
    token: str
    new_password: str

class ResetPasswordResponseSchema(BaseModel):
    message: str

class UpdateUserProfileResponse(BaseModel):
    message: str
    user: UserSchema


class ChangePasswordSchema(BaseModel):
    old_password: str
    new_password: str

class UpdateProfileSchema(BaseModel):
    name: Optional[str] = None
    email:Optional[str]=None
    is_active: Optional[bool] = None

class UpdateProfileByOrgSchema(BaseModel):
    email:str
    is_active: bool

class ListOfAllUsers(BaseModel):
    data: List[UserSchema]
    pagination: PaginationSchema

    class Config:
        from_attributes = True
        from_orm = True