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.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)
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user