from actions.dynamic_import.dynamic_import import DynamicImport from packages.v1.administrativo.services.ato_documento.ato_documento_index_service import ( IndexService, ) from packages.v1.administrativo.services.ato_documento.ato_documento_save_service import ( SaveService, ) from packages.v1.administrativo.services.ato_documento.ato_documento_save_multiple_service import ( SaveMultipleService, ) from packages.v1.administrativo.services.ato_documento.ato_documento_show_service import ( ShowService, ) from packages.v1.administrativo.services.ato_documento.ato_principal_show_service import ( ShowAtoPrincipalService, ) from packages.v1.administrativo.services.ato_documento.ato_documento_update_service import ( UpdateService, ) from packages.v1.administrativo.services.ato_documento.ato_documento_delete_service import ( DeleteService, ) from packages.v1.administrativo.schemas.ato_documento_schema import ( AtoDocumentoSchema, AtoDocumentoSaveSchema, AtoDocumentoUpdateSchema, AtoDocumentoIdSchema, AtoDocumentoSaveMultipleSchema, ) class AtoDocumentoController: def __init__(self): # Action responsável por carregar as services de acodo com o estado self.dynamic_import = DynamicImport() # Define o pacote que deve ser carregado self.dynamic_import.set_package("administrativo") # Define a tabela que o pacote pertence self.dynamic_import.set_table("ato_documento") pass # Lista todos os documentos def index(self): # Instânciamento da classe service index_service = IndexService() # Lista todos os documentos return { "message": "Documentos localizados com sucesso", "data": index_service.execute(), } # Busca um documento especifico pelo ID do ato principal def showAtoPrincipal(self, ato_documento_schema: AtoDocumentoSchema): # Instânciamento da classe desejada show_service = ShowAtoPrincipalService() # Busca e retorna o documento desejado return { "message": "Documento localizado com sucesso", "data": show_service.execute(ato_documento_schema), } # Busca um documento especifico pelo ID def show(self, ato_documento_schema: AtoDocumentoSchema): # Instânciamento da classe desejada show_service = ShowService() # Busca e retorna o documento desejado return { "message": "Documento localizado com sucesso", "data": show_service.execute(ato_documento_schema), } # Cadastra um novo documento def save(self, ato_documento_schema: AtoDocumentoSaveSchema): # Instânciamento da classe desejada save_service = SaveService() # Busca e retorna o documento desejado return { "message": "Documento salvo com sucesso", "data": save_service.execute(ato_documento_schema), } # Cadastra múltiplos itens def save_multiple(self, ato_documento_schema: list[AtoDocumentoSaveMultipleSchema]): # A lista completa é passada diretamente para o Service. # O Service e o Action também devem ser corrigidos para parar de iterar. save_service = SaveMultipleService() responses = save_service.execute(ato_documento_schema) return { "message": "Processamento de múltiplos documentos concluído", "results": responses, # O Service já retorna a lista de resultados } # Atualiza os dados de um documento def update( self, ato_documento_id: int, ato_documento_schema: AtoDocumentoUpdateSchema ): # Instânciamento da classe desejada update_service = UpdateService() # Busca e retorna o documento desejado return { "message": "Documento atualizado com sucesso", "data": update_service.execute(ato_documento_id, ato_documento_schema), } # Exclui um documento def delete(self, ato_documento_schema: AtoDocumentoSchema): # Instânciamento da classe desejada delete_service = DeleteService() # Busca e retorna o documento desejado return { "message": "Documento removido com sucesso", "data": delete_service.execute(ato_documento_schema), }