feat: update for b2b
This commit is contained in:
@@ -7,7 +7,7 @@ from src.application.contracts import ILogger
|
||||
from src.application.contracts import IItPayService
|
||||
from src.application.domain.entities.order import OrderEntity
|
||||
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.infrastructure.database.decorators import transactional
|
||||
from src.presentation.schemas.order import CreateOrder
|
||||
@@ -31,6 +31,12 @@ class CreateOrderCommand:
|
||||
|
||||
@transactional
|
||||
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())
|
||||
|
||||
quote = await self._payment_quote_service.get_quote(payment_data.usdt_amount)
|
||||
|
||||
@@ -29,3 +29,5 @@ class UserEntity:
|
||||
created_at: datetime | None = None
|
||||
updated_at: datetime | None = None
|
||||
kyc_verified_at: datetime | None = None
|
||||
|
||||
account_type: str = 'individual'
|
||||
|
||||
@@ -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_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')
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ class UserRepository(IUserRepository):
|
||||
created_at=model.created_at,
|
||||
updated_at=model.updated_at,
|
||||
kyc_verified_at=model.kyc_verified_at,
|
||||
account_type=model.account_type,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user