Files
malenia-backend/services/plans.py

25 lines
869 B
Python

from repositories.addons import AddonsRepository
from repositories.pricing import PricingRepository
from schemas.plans import AddonData, OrderDetails, PricingPlans
async def get_pricing_model(addons_repo: AddonsRepository, pricing_repo: PricingRepository):
pricing = await pricing_repo.get()
if not pricing:
return None
addons = await addons_repo.get_all()
addons_data = [
AddonData(id=a.id, name=a.name, price=a.price, free_threshold=a.free_threshold)
for a in addons
]
return PricingPlans(device_price=pricing.device_price, addons=addons_data)
async def calculate_price(
*, addons_repo: AddonsRepository, order: OrderDetails, pricing: PricingPlans
) -> float:
addons = [await addons_repo.get_by_id(a) for a in order.addons]
return order.devices * pricing.device_price + sum([a.price for a in addons])