132 lines
3.3 KiB
Python
132 lines
3.3 KiB
Python
from fastapi import APIRouter, Depends
|
|
|
|
from backend.dependecies import SessionDependency
|
|
from schemas.department import *
|
|
from services.auth import authorized_user
|
|
from services.department import DepartmentService
|
|
|
|
department_router = APIRouter(
|
|
prefix="/department",
|
|
tags=["department"],
|
|
dependencies=[Depends(authorized_user)]
|
|
)
|
|
|
|
|
|
@department_router.get(
|
|
"/",
|
|
operation_id="get_departments",
|
|
response_model=GetDepartmentsResponse,
|
|
)
|
|
async def get_departments(
|
|
session: SessionDependency,
|
|
):
|
|
return await DepartmentService(session).get_departments()
|
|
|
|
|
|
@department_router.post(
|
|
"/",
|
|
operation_id="create_department",
|
|
response_model=CreateDepartmentResponse,
|
|
)
|
|
async def create_department(
|
|
session: SessionDependency,
|
|
request: CreateDepartmentRequest,
|
|
):
|
|
return await DepartmentService(session).create_department(request)
|
|
|
|
|
|
@department_router.patch(
|
|
"/",
|
|
operation_id="update_department",
|
|
response_model=UpdateDepartmentResponse,
|
|
)
|
|
async def update_department(
|
|
session: SessionDependency,
|
|
request: UpdateDepartmentRequest,
|
|
):
|
|
return await DepartmentService(session).update_department(request)
|
|
|
|
|
|
@department_router.delete(
|
|
"/{department_id}",
|
|
operation_id="delete_department",
|
|
response_model=DeleteDepartmentResponse,
|
|
)
|
|
async def delete_department(
|
|
session: SessionDependency,
|
|
department_id: int,
|
|
):
|
|
return await DepartmentService(session).delete_department(department_id)
|
|
|
|
|
|
@department_router.post(
|
|
"/section",
|
|
operation_id="create_section",
|
|
response_model=CreateDepartmentSectionResponse,
|
|
)
|
|
async def create_section(
|
|
session: SessionDependency,
|
|
request: CreateDepartmentSectionRequest,
|
|
):
|
|
return await DepartmentService(session).create_department_section(request)
|
|
|
|
|
|
@department_router.patch(
|
|
"/section",
|
|
operation_id="update_section",
|
|
response_model=UpdateDepartmentSectionResponse,
|
|
)
|
|
async def update_section(
|
|
session: SessionDependency,
|
|
request: UpdateDepartmentSectionRequest,
|
|
):
|
|
return await DepartmentService(session).update_department_section(request)
|
|
|
|
|
|
@department_router.delete(
|
|
"/section/{section_id}",
|
|
operation_id="delete_section",
|
|
response_model=DeleteDepartmentSectionResponse,
|
|
)
|
|
async def delete_section(
|
|
session: SessionDependency,
|
|
section_id: int,
|
|
):
|
|
return await DepartmentService(session).delete_department_section(section_id)
|
|
|
|
|
|
@department_router.get(
|
|
"/users/{section_id}",
|
|
operation_id="get_available_users_for_section",
|
|
response_model=GetAvailableUsersForDepartmentSectionResponse,
|
|
)
|
|
async def get_available_users_for_department_section(
|
|
session: SessionDependency,
|
|
section_id: int,
|
|
):
|
|
return await DepartmentService(session).get_available_users_for_section(section_id)
|
|
|
|
|
|
@department_router.post(
|
|
"/users",
|
|
operation_id="add_user",
|
|
response_model=AddUserResponse,
|
|
)
|
|
async def add_user(
|
|
session: SessionDependency,
|
|
request: AddUserRequest,
|
|
):
|
|
return await DepartmentService(session).add_user(request)
|
|
|
|
|
|
@department_router.post(
|
|
"/users/delete",
|
|
operation_id="delete_user",
|
|
response_model=DeleteUserResponse,
|
|
)
|
|
async def delete_user(
|
|
session: SessionDependency,
|
|
request: DeleteUserRequest,
|
|
):
|
|
return await DepartmentService(session).delete_user(request)
|