feat: departments and department sections
This commit is contained in:
		
							
								
								
									
										131
									
								
								routers/department.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								routers/department.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,131 @@
 | 
			
		||||
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)
 | 
			
		||||
		Reference in New Issue
	
	Block a user