from datetime import datetime

from pydantic import BaseModel, EmailStr, Field

from app.domain.entities.users_roles import RolePermission


class UserRegistration(BaseModel):
    id: str | None = None
    username: str
    email: EmailStr
    full_name: str
    password_hash: str
    is_active: bool = True
    created_at: datetime = Field(default_factory=datetime.utcnow)
    updated_at: datetime = Field(default_factory=datetime.utcnow)
    user_type: str = "registration"
    company_id: str | None = None
    role: str | None = None
    role_id: str | None = None
    role_slug: str | None = None
    permissions: list[RolePermission] = Field(default_factory=list)

    model_config = {"from_attributes": True}
