from pydantic import BaseModel, EmailStr, Field from uuid import UUID from datetime import datetime from typing import Any class DashboardStats(BaseModel): revenue_today: float revenue_week: float revenue_month: float orders_pending: int bookings_upcoming: int low_stock_count: int new_customers_month: int class RevenueStats(BaseModel): period: str revenue: float orders_count: int bookings_count: int class ActivityItem(BaseModel): id: UUID actor_name: str | None = None action: str entity_type: str entity_id: UUID | None = None metadata: dict | None = None created_at: datetime class CustomerOut(BaseModel): id: UUID email: str full_name: str | None = None phone: str | None = None is_blocked: bool orders_count: int = 0 bookings_count: int = 0 total_spent: float = 0.0 created_at: datetime class UpdateCustomer(BaseModel): is_blocked: bool | None = None full_name: str | None = Field(None, max_length=100) class StoreSettingOut(BaseModel): key: str value: Any updated_at: datetime class StoreSettingUpdate(BaseModel): value: Any class AdminUserCreate(BaseModel): email: EmailStr password: str = Field(min_length=8) full_name: str class EmailTemplateOut(BaseModel): name: str subject: str body_html: str body_text: str | None = None class EmailTemplateUpdate(BaseModel): subject: str body_html: str body_text: str | None = None