feat: update for b2b

This commit is contained in:
2026-06-02 23:46:29 +03:00
parent 565816e710
commit d4c2e7d5be
4 changed files with 12 additions and 1 deletions

View File

@@ -7,7 +7,7 @@ from src.application.contracts import ILogger
from src.application.contracts import IItPayService from src.application.contracts import IItPayService
from src.application.domain.entities.order import OrderEntity from src.application.domain.entities.order import OrderEntity
from src.application.domain.enums import OrderStatus from src.application.domain.enums import OrderStatus
from src.application.domain.exceptions import PriceChangedException from src.application.domain.exceptions import ApplicationException, ForbiddenException, PriceChangedException
from src.application.services import PaymentQuoteService from src.application.services import PaymentQuoteService
from src.infrastructure.database.decorators import transactional from src.infrastructure.database.decorators import transactional
from src.presentation.schemas.order import CreateOrder from src.presentation.schemas.order import CreateOrder
@@ -31,6 +31,12 @@ class CreateOrderCommand:
@transactional @transactional
async def __call__(self, payment_data: CreateOrder, user_id: str) -> OrderEntity: async def __call__(self, payment_data: CreateOrder, user_id: str) -> OrderEntity:
user = await self._unit_of_work.user_repository.get(user_id)
if user is None:
raise ApplicationException(status_code=404, message='User not found')
if user.account_type == 'legal_entity':
raise ForbiddenException(message='USDT purchase orders are not available for legal entity accounts')
client_payment_id = str(ULID()) client_payment_id = str(ULID())
quote = await self._payment_quote_service.get_quote(payment_data.usdt_amount) quote = await self._payment_quote_service.get_quote(payment_data.usdt_amount)

View File

@@ -29,3 +29,5 @@ class UserEntity:
created_at: datetime | None = None created_at: datetime | None = None
updated_at: datetime | None = None updated_at: datetime | None = None
kyc_verified_at: datetime | None = None kyc_verified_at: datetime | None = None
account_type: str = 'individual'

View File

@@ -29,3 +29,5 @@ class UserModel(Base, UlidPrimaryKeyMixin, AuditTimestampsMixin, SoftDeleteMixin
kyc_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default='false', default=False) kyc_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default='false', default=False)
kyc_verified_at: Mapped[DateTime | None] = mapped_column(DateTime(timezone=True), nullable=True) kyc_verified_at: Mapped[DateTime | None] = mapped_column(DateTime(timezone=True), nullable=True)
account_type: Mapped[str] = mapped_column(String(20), nullable=False, server_default='individual', default='individual')

View File

@@ -35,6 +35,7 @@ class UserRepository(IUserRepository):
created_at=model.created_at, created_at=model.created_at,
updated_at=model.updated_at, updated_at=model.updated_at,
kyc_verified_at=model.kyc_verified_at, kyc_verified_at=model.kyc_verified_at,
account_type=model.account_type,
) )