from fastapi import APIRouter, Depends, UploadFile from backend.dependecies import SessionDependency from schemas.user import * from services.auth import authorized_user from services.user import UserService user_router = APIRouter( prefix="/user", tags=["user"], dependencies=[Depends(authorized_user)] ) @user_router.get( '/get-all', response_model=GetAllUsersResponse, operation_id='get_all_users' ) async def get_all( session: SessionDependency ): return await UserService(session).get_all() @user_router.post( '/update', response_model=UpdateUserResponse, operation_id='update_user' ) async def update( session: SessionDependency, request: UpdateUserRequest ): return await UserService(session).update(request) @user_router.post( '/update/department-sections/{user_id}', response_model=UpdateUserDepartmentSectionsResponse, operation_id='update_user_department_sections' ) async def update_user_department_sections( session: SessionDependency, user_id: int, request: UpdateUserDepartmentSectionsRequest, ): return await UserService(session).update_department_sections(user_id, request) @user_router.post( '/create', response_model=CreateUserResponse, operation_id='create_user' ) async def create( session: SessionDependency, request: CreateUserRequest ): return await UserService(session).create(request) @user_router.get( '/get-managers', response_model=GetManagersResponse, operation_id='get_managers', ) async def get_managers( session: SessionDependency, ): return await UserService(session).get_managers() @user_router.post( '/passport-images/upload/{user_id}', response_model=UploadPassportImageResponse, operation_id='upload_passport_image' ) async def upload_passport_image( user_id: int, upload_file: UploadFile, session: SessionDependency, ): file_bytes = upload_file.file.read() return await UserService(session).upload_passport_image(user_id, file_bytes)