| from fastapi import Depends |
| from cbh.api.account.models import AccountModel |
| from cbh.api.availability.db_requests import update_availability_obj |
| from cbh.api.availability.schemas import ( |
| UpdateAvailabilityRequest, |
| ) |
| from cbh.api.common.db_requests import get_obj_by_id |
| from cbh.core.security import PermissionDependency |
| from cbh.api.account.dto import AccountType |
| from cbh.core.wrappers import CbhResponseWrapper |
| from cbh.api.availability.models import AvailabilityModel |
| from cbh.api.availability import availability_router |
|
|
|
|
| @availability_router.get("") |
| async def get_own_availability( |
| account: AccountModel = Depends(PermissionDependency([AccountType.COACH])), |
| ) -> CbhResponseWrapper[AvailabilityModel]: |
|
|
| availability = await get_obj_by_id( |
| AvailabilityModel, None, additional_filter={"coach.id": account.id} |
| ) |
| return CbhResponseWrapper(data=availability) |
|
|
|
|
| @availability_router.get("/{coachId}") |
| async def get_availability( |
| coachId: str, |
| _: AccountModel = Depends( |
| PermissionDependency([AccountType.ADMIN, AccountType.USER]) |
| ), |
| ) -> CbhResponseWrapper[AvailabilityModel]: |
| """ |
| Get availability by coach ID. |
| """ |
| availability = await get_obj_by_id( |
| AvailabilityModel, None, additional_filter={"coach.id": coachId} |
| ) |
| return CbhResponseWrapper(data=availability) |
|
|
|
|
| @availability_router.put("") |
| async def update_own_availability( |
| availability: UpdateAvailabilityRequest, |
| account: AccountModel = Depends(PermissionDependency([AccountType.COACH])), |
| ) -> CbhResponseWrapper[AvailabilityModel]: |
| """ |
| Update own availability. |
| """ |
| availability = await update_availability_obj(availability, account.id) |
| return CbhResponseWrapper(data=availability) |
|
|
|
|
| @availability_router.put("/{coachId}") |
| async def update_availability( |
| coachId: str, |
| availability: UpdateAvailabilityRequest, |
| _: AccountModel = Depends(PermissionDependency([AccountType.ADMIN])), |
| ) -> CbhResponseWrapper[AvailabilityModel]: |
| """ |
| Update availability. |
| """ |
| availability = await update_availability_obj(availability, coachId) |
| return CbhResponseWrapper(data=availability) |
|
|