File size: 2,162 Bytes
cd46ce5
 
a7ed1bd
cd46ce5
 
 
a7ed1bd
cd46ce5
 
 
 
 
 
 
 
 
 
 
 
a7ed1bd
 
 
cd46ce5
 
 
 
a7ed1bd
cd46ce5
a7ed1bd
cd46ce5
 
a7ed1bd
cd46ce5
 
 
a7ed1bd
 
 
cd46ce5
 
 
 
 
 
 
 
 
 
 
a7ed1bd
 
 
 
 
 
 
 
 
 
 
 
 
 
cd46ce5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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)