snappcar.py
1 from decimal import Decimal 2 from typing import List 3 4 from pydantic import Field 5 6 from models.interface import ProviderInterface, VehicleOption, Calculator 7 8 9 class SnappCarCalculator(Calculator): 10 average_price: Decimal = Field(default=Decimal("40")) 11 liter_per_km: Decimal = Field(default=Decimal("0.041")) 12 liter_price: Decimal = Field(default=Decimal("2.122")) 13 14 def total_price(self) -> Decimal: 15 price = self.average_price 16 17 if self.vehicle_request.distance_kilometer > 200: 18 price += (self.vehicle_request.distance_kilometer - 200) * self.price_per_km 19 20 price += ( 21 self.liter_per_km * self.liter_price 22 ) * self.vehicle_request.distance_kilometer 23 return price 24 25 26 class SnappCar(ProviderInterface): 27 async def get_vehicles_options(self) -> List[VehicleOption]: 28 return [ 29 VehicleOption( 30 calculator=SnappCarCalculator( 31 price_per_minute=Decimal("0.00"), 32 price_per_km=Decimal("0.15"), 33 vehicle_request=self.vehicle_request, 34 ), 35 vehicle_image="snappcar.png", 36 provider="Snappcar", 37 type="Gemiddelde kosten", 38 ) 39 ]