# Importação de bibliotecas from typing import Optional from fastapi import APIRouter, Depends, status from actions.jwt.get_current_user import get_current_user from packages.v1.administrativo.controllers.ato_documento_controller import ( AtoDocumentoController, ) from packages.v1.administrativo.schemas.ato_documento_schema import ( AtoDocumentoSchema, AtoDocumentoSaveSchema, AtoDocumentoUpdateSchema, AtoDocumentoIdSchema, ) # Inicializa o roteador para as rotas de ato_documento router = APIRouter() # Instânciamento do controller desejado ato_documento_controller = AtoDocumentoController() # Lista todos os documentos @router.get( "/", status_code=status.HTTP_200_OK, summary="Lista todos os documentos cadastrados", response_description="Lista todos os documentos cadastrados", ) async def index(current_user: dict = Depends(get_current_user)): # Busca todos os documentos cadastrados response = ato_documento_controller.index() # Retorna os dados localizados return response # Localiza um documento pelo ato_principal_id @router.get( "/ato_principal/{ato_principal_id}", status_code=status.HTTP_200_OK, summary="Busca um registro em especifico pelo ID do ato principal", response_description="Busca um registro em especifico", ) async def showAtoPrincipal( ato_principal_id: int, current_user: dict = Depends(get_current_user) ): # Cria o schema com os dados recebidos ato_documento_schema = AtoDocumentoSchema(ato_principal_id=ato_principal_id) # Busca um documento especifico pelo ID response = ato_documento_controller.showAtoPrincipal(ato_documento_schema) # Retorna os dados localizados return response # Localiza um documento pelo ID @router.get( "/{ato_documento_id}", status_code=status.HTTP_200_OK, summary="Busca um registro em especifico pelo ID do documento", response_description="Busca um registro em especifico", ) async def show(ato_documento_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos ato_documento_schema = AtoDocumentoSchema(ato_documento_id=ato_documento_id) # Busca um documento especifico pelo ID response = ato_documento_controller.show(ato_documento_schema) # Retorna os dados localizados return response # Cadastro de documentos @router.post( "/", status_code=status.HTTP_200_OK, summary="Cadastra um documento", response_description="Cadastra um documento", ) async def save( ato_documento_schema: AtoDocumentoSaveSchema, current_user: dict = Depends(get_current_user), ): # Efetua o cadastro do documento junto ao banco de dados response = ato_documento_controller.save(ato_documento_schema) # Retorna os dados localizados return response # Atualiza os dados de documento @router.put( "/{ato_documento_id}", status_code=status.HTTP_200_OK, summary="Atualiza um documento", response_description="Atualiza um documento", ) async def update( ato_documento_id: int, ato_documento_schema: AtoDocumentoUpdateSchema, current_user: dict = Depends(get_current_user), ): # Efetua a atualização dos dados do documento response = ato_documento_controller.update(ato_documento_id, ato_documento_schema) # Retorna os dados localizados return response # Exclui um determinado documento @router.delete( "/{ato_documento_id}", status_code=status.HTTP_200_OK, summary="Remove um documento", response_description="Remove um documento", ) async def delete(ato_documento_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos ato_documento_schema = AtoDocumentoSchema(ato_documento_id=ato_documento_id) # Efetua a exclusão de um determinado documento response = ato_documento_controller.delete(ato_documento_schema) # Retorna os dados localizados return response