192 lines
4.3 KiB
Python
192 lines
4.3 KiB
Python
from pydantic import BaseModel, Field, EmailStr, ConfigDict
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
import uuid
|
|
from enum import Enum
|
|
|
|
|
|
# BFF Models
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str
|
|
|
|
class AccountProfileUpdateRequest(BaseModel):
|
|
firstName: str
|
|
surname: str
|
|
email: EmailStr
|
|
phone: str
|
|
|
|
class AccountPasswordChangeRequest(BaseModel):
|
|
currentPassword: str
|
|
newPassword: str
|
|
|
|
class TransactionStatus(str, Enum):
|
|
WAITING = 'waiting'
|
|
PROCESS = 'process'
|
|
DONE = 'done'
|
|
REJECT = 'reject'
|
|
ERROR = 'error'
|
|
NEW = 'new'
|
|
|
|
class AgentTransactionResponse(BaseModel):
|
|
amount: float
|
|
status: TransactionStatus
|
|
transaction_group: uuid.UUID
|
|
create_dttm: datetime
|
|
update_dttm: datetime
|
|
agent_name: Optional[str] = None
|
|
|
|
class AutoApproveSettingsRequest(BaseModel):
|
|
auto_approve: bool
|
|
apply_to_current: Optional[bool] = False
|
|
|
|
class ApproveTransactionsRequest(BaseModel):
|
|
transaction_ids: List[uuid.UUID]
|
|
|
|
# New Response Models for BFF APIs
|
|
|
|
class RegisterResponse(BaseModel):
|
|
msg: str
|
|
|
|
class TgAuthResponse(BaseModel):
|
|
msg: str
|
|
tg_id: int
|
|
|
|
class DashboardCardsResponse(BaseModel):
|
|
totalRevenue: float
|
|
totalPayouts: float
|
|
activeReferrals: int
|
|
pendingPayouts: float
|
|
totalSales: int
|
|
|
|
class DashboardChartTotalItem(BaseModel):
|
|
date: str
|
|
revenue: float
|
|
sales: int
|
|
|
|
class DashboardChartTotalResponse(BaseModel):
|
|
items: List[DashboardChartTotalItem]
|
|
|
|
class DashboardChartAgentItem(BaseModel):
|
|
name: str
|
|
count: int
|
|
sum: float
|
|
|
|
class DashboardChartAgentResponse(BaseModel):
|
|
items: List[DashboardChartAgentItem]
|
|
|
|
class StatAgentsItem(BaseModel):
|
|
name: str
|
|
refCount: int
|
|
salesCount: int
|
|
salesSum: float
|
|
crediting: float
|
|
|
|
class StatAgentsResponse(BaseModel):
|
|
items: List[StatAgentsItem]
|
|
|
|
class StatReferralsItem(BaseModel):
|
|
ref: str
|
|
agent: Optional[str] = None
|
|
description: str
|
|
promocode: str
|
|
salesSum: float
|
|
salesCount: int
|
|
|
|
class StatReferralsResponse(BaseModel):
|
|
items: List[StatReferralsItem]
|
|
|
|
class StatSalesItem(BaseModel):
|
|
saleId: str
|
|
cost: float
|
|
crediting: float
|
|
ref: Optional[str] = None
|
|
name: Optional[str] = None
|
|
|
|
class StatSalesResponse(BaseModel):
|
|
items: List[StatSalesItem]
|
|
|
|
class BillingCardsResponse(BaseModel):
|
|
cost: float
|
|
crediting: float
|
|
pendingPayouts: float
|
|
|
|
class BillingChartStatItem(BaseModel):
|
|
date: str
|
|
status: str
|
|
count: int
|
|
|
|
class BillingChartStatResponse(BaseModel):
|
|
items: List[BillingChartStatItem]
|
|
|
|
class BillingChartPieItem(BaseModel):
|
|
status: str
|
|
count: int
|
|
|
|
class BillingChartPieResponse(BaseModel):
|
|
items: List[BillingChartPieItem]
|
|
|
|
class BillingPayoutsTransactionsItem(BaseModel):
|
|
id: uuid.UUID
|
|
amount: float
|
|
agent: Optional[str] = None
|
|
status: TransactionStatus
|
|
create_dttm: datetime
|
|
update_dttm: datetime
|
|
|
|
class BillingPayoutsTransactionsResponse(BaseModel):
|
|
items: List[BillingPayoutsTransactionsItem]
|
|
|
|
class AccountResponse(BaseModel):
|
|
firstName: Optional[str] = None
|
|
surname: Optional[str] = None
|
|
|
|
class CompanyProfileResponse(BaseModel):
|
|
name: str
|
|
key: str
|
|
commission: float
|
|
agent_commission: float
|
|
|
|
class AccountProfileResponse(BaseModel):
|
|
firstName: Optional[str] = None
|
|
surname: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
email: Optional[EmailStr] = None
|
|
create_dttm: datetime
|
|
company: CompanyProfileResponse
|
|
|
|
class AccountProfileUpdateResponse(BaseModel):
|
|
msg: str
|
|
|
|
class AccountPasswordChangeResponse(BaseModel):
|
|
msg: str
|
|
|
|
class AutoApproveSettingsGetResponse(BaseModel):
|
|
auto_approve_transactions: bool
|
|
|
|
class AutoApproveSettingsUpdateResponse(BaseModel):
|
|
msg: str
|
|
auto_approve_transactions: bool
|
|
|
|
class ApproveTransactionsResult(BaseModel):
|
|
msg: str
|
|
approved_count: int
|
|
|
|
# New models for integration tokens
|
|
class IntegrationTokenResponse(BaseModel):
|
|
id: int
|
|
description: str
|
|
masked_token: str
|
|
rawToken: Optional[str] = None
|
|
create_dttm: datetime
|
|
use_dttm: Optional[datetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
class IntegrationTokenCreateRequest(BaseModel):
|
|
description: str
|
|
|
|
class IntegrationTokenUpdateRequest(BaseModel):
|
|
id: int
|
|
description: str
|