diff --git a/src/application/commands/create_order_command.py b/src/application/commands/create_order_command.py index 11c05e4..7181e1f 100644 --- a/src/application/commands/create_order_command.py +++ b/src/application/commands/create_order_command.py @@ -7,8 +7,9 @@ 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 ApplicationException, ForbiddenException, PriceChangedException +from src.application.domain.exceptions import ApplicationException, ForbiddenException, OrderTotalOutOfRangeException, PriceChangedException from src.application.services import PaymentQuoteService +from src.application.services.payment_quote_service import MIN_TOTAL_RUB from src.infrastructure.database.decorators import transactional from src.presentation.schemas.order import CreateOrder @@ -39,7 +40,12 @@ class CreateOrderCommand: client_payment_id = str(ULID()) - quote = await self._payment_quote_service.get_quote(payment_data.usdt_amount) + if payment_data.total_price < MIN_TOTAL_RUB: + raise OrderTotalOutOfRangeException( + message='Order total is below minimum allowed amount', + ) + + quote = await self._payment_quote_service.get_reference_quote(payment_data.usdt_amount) actual_gas_fee = quote.gas_fee actual_usdt_exchange_rate = quote.usdt_exchange_rate actual_service_fee = quote.service_fee diff --git a/src/application/services/payment_quote_service.py b/src/application/services/payment_quote_service.py index b45648d..5964631 100644 --- a/src/application/services/payment_quote_service.py +++ b/src/application/services/payment_quote_service.py @@ -6,7 +6,7 @@ from src.application.contracts import ICache, ILogger from src.application.domain.exceptions import OrderTotalOutOfRangeException, ServiceUnavailableException -_MIN_TOTAL_RUB: Decimal = Decimal('5000') +MIN_TOTAL_RUB: Decimal = Decimal('5000') _MAX_TOTAL_RUB: Decimal = Decimal('600000') @@ -122,7 +122,7 @@ class PaymentQuoteService: async def get_quote(self, usdt_amount: Decimal) -> PaymentQuote: quote = await self.get_reference_quote(usdt_amount) - if quote.total_price < _MIN_TOTAL_RUB: + if quote.total_price < MIN_TOTAL_RUB: raise OrderTotalOutOfRangeException( message='Order total is below minimum allowed amount', ) @@ -130,7 +130,7 @@ class PaymentQuoteService: async def get_quote_from_total_rub(self, total_rub: Decimal) -> PaymentQuote: - if total_rub < _MIN_TOTAL_RUB: + if total_rub < MIN_TOTAL_RUB: raise OrderTotalOutOfRangeException( message='Order total is below minimum allowed amount', )