MirrorAPI/packages/v1/administrativo/controllers/ato_documento_controller.py

130 lines
4.3 KiB
Python

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