52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
from fastapi import APIRouter
|
|
|
|
from backend.dependecies import SessionDependency, CurrentUserDependency
|
|
from external.billing import BillStatusUpdateRequest
|
|
from schemas.billing import *
|
|
from services.billing import BillingService
|
|
|
|
billing_router = APIRouter(
|
|
prefix='/billing',
|
|
tags=['billing']
|
|
)
|
|
|
|
|
|
@billing_router.post(
|
|
'/webhook'
|
|
)
|
|
async def webhook(
|
|
request: BillStatusUpdateRequest,
|
|
session: SessionDependency
|
|
):
|
|
try:
|
|
await BillingService(session).process_update(request)
|
|
return {'ok': True}
|
|
except Exception as e:
|
|
print(e)
|
|
return {'ok': False}
|
|
|
|
|
|
@billing_router.post(
|
|
'/create-deal-bill',
|
|
operation_id='create_deal_bill',
|
|
response_model=CreateDealBillResponse
|
|
)
|
|
async def create_deal_bill(
|
|
session: SessionDependency,
|
|
request: CreateDealBillRequest,
|
|
user: CurrentUserDependency
|
|
):
|
|
return await BillingService(session).create_deal_billing(user, request)
|
|
|
|
|
|
@billing_router.get(
|
|
'/deal-bill-request/{deal_id}',
|
|
response_model=GetDealBillById,
|
|
operation_id='get_deal_bill_by_id'
|
|
)
|
|
async def get_deal_bill_by_id(
|
|
deal_id: int,
|
|
session: SessionDependency
|
|
):
|
|
return await BillingService(session).get_deal_bill_by_id(deal_id)
|