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)
 |