MirrorAPI/packages/v1/administrativo/controllers/ato_principal_controller.py
2025-11-03 15:18:26 -03:00

124 lines
4.1 KiB
Python

from actions.dynamic_import.dynamic_import import DynamicImport
# Importa os serviços com o prefixo 'ato_principal'
from packages.v1.administrativo.services.ato_principal.ato_principal_index_service import (
IndexService,
)
from packages.v1.administrativo.services.ato_principal.ato_principal_save_service import (
SaveService,
)
from packages.v1.administrativo.services.ato_principal.ato_principal_save_multiple_service import (
SaveMultipleService,
)
from packages.v1.administrativo.services.ato_principal.ato_principal_show_service import (
ShowService,
)
from packages.v1.administrativo.services.ato_principal.ato_principal_update_service import (
UpdateService,
)
from packages.v1.administrativo.services.ato_principal.ato_principal_delete_service import (
DeleteService,
)
# Importa os Schemas com o prefixo 'ato_principal'
from packages.v1.administrativo.schemas.ato_principal_schema import (
AtoPrincipalSchema,
AtoPrincipalSaveSchema,
AtoPrincipalUpdateSchema,
AtoPrincipalIdSchema,
)
# Mantendo o padrão de nome de classe
class AtoPrincipalController:
"""
Controller responsável pelas operações CRUD da entidade Ato Principal.
"""
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 (agora 'ato_principal')
self.dynamic_import.set_table("ato_principal")
pass
# Lista todos os atos principais
def index(self):
# Instânciamento da classe service
index_service = IndexService()
# Lista todos os atos principais
return {
"message": "Atos Principais localizados com sucesso",
"data": index_service.execute(),
}
# Busca um ato principal especifica pelo ID
# Note: O método 'showAtoPrincipal' foi removido por não se aplicar
# à entidade principal.
def show(self, ato_principal_schema: AtoPrincipalSchema):
# Instânciamento da classe desejada
show_service = ShowService()
# Busca e retorna o ato principal desejado
return {
"message": "Ato Principal localizado com sucesso",
"data": show_service.execute(ato_principal_schema),
}
# Cadastra um novo ato principal
def save(self, ato_principal_schema: AtoPrincipalSaveSchema):
# Instânciamento da classe desejada
save_service = SaveService()
# Salva e retorna o ato principal
return {
"message": "Ato Principal salvo com sucesso",
"data": save_service.execute(ato_principal_schema),
}
# Cadastra múltiplos itens
def save_multiple(self, atos_principais: list[AtoPrincipalSaveSchema]):
# 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(atos_principais)
return {
"message": "Processamento de múltiplos atos concluído",
"results": responses, # O Service já retorna a lista de resultados
}
# Atualiza os dados de um ato principal
def update(
self, ato_principal_id: int, ato_principal_schema: AtoPrincipalUpdateSchema
):
# Instânciamento da classe desejada
update_service = UpdateService()
# Atualiza e retorna o ato principal
return {
"message": "Ato Principal atualizado com sucesso",
"data": update_service.execute(ato_principal_id, ato_principal_schema),
}
# Exclui um ato principal
def delete(self, ato_principal_schema: AtoPrincipalSchema):
# Instânciamento da classe desejada
delete_service = DeleteService()
# Exclui e retorna a parte desejada
return {
"message": "Ato Principal removido com sucesso",
"data": delete_service.execute(ato_principal_schema),
}