From a61ea6d33d56d351549cf4628f5caeb44b8007e0 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Fri, 17 Oct 2025 18:17:27 -0300 Subject: [PATCH] [MVPTN-106] feat(c_caixa_servico): Adicionado endpint que retorna c_caixa_servico pelo sistema_id --- ..._caixa_servico_get_by_sistema_id_action.py | 16 ++++++++++++++ .../controllers/c_caixa_servico_controller.py | 21 +++++++++++++++++-- .../endpoints/c_caixa_servico_endpoint.py | 20 +++++++++++++++++- ...xa_servico_get_by_sistema_id_repository.py | 17 +++++++++++++++ .../schemas/c_caixa_servico_schema.py | 7 +++++++ .../c_caixa_servico_get_sistema_id_service.py | 17 +++++++++++++++ 6 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 packages/v1/administrativo/actions/c_caixa_servico/c_caixa_servico_get_by_sistema_id_action.py create mode 100644 packages/v1/administrativo/repositories/c_caixa_servico/c_caixa_servico_get_by_sistema_id_repository.py create mode 100644 packages/v1/administrativo/services/c_caixa_servico/go/c_caixa_servico_get_sistema_id_service.py diff --git a/packages/v1/administrativo/actions/c_caixa_servico/c_caixa_servico_get_by_sistema_id_action.py b/packages/v1/administrativo/actions/c_caixa_servico/c_caixa_servico_get_by_sistema_id_action.py new file mode 100644 index 0000000..de3c567 --- /dev/null +++ b/packages/v1/administrativo/actions/c_caixa_servico/c_caixa_servico_get_by_sistema_id_action.py @@ -0,0 +1,16 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.c_caixa_servico_schema import CCaixaServicoSistemaIdSchema +from packages.v1.administrativo.repositories.c_caixa_servico.c_caixa_servico_get_by_sistema_id_repository import ShowSistemaIdRepository + +class ShowSistemaIdAction(BaseAction): + + def execute(self, caixa_servico_schema : CCaixaServicoSistemaIdSchema): + + # Instânciamento do repositório sql + show_sistema_id_repository = ShowSistemaIdRepository() + + # Execução do sql + response = show_sistema_id_repository.execute(caixa_servico_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/c_caixa_servico_controller.py b/packages/v1/administrativo/controllers/c_caixa_servico_controller.py index 68cb4ed..72a6c5b 100644 --- a/packages/v1/administrativo/controllers/c_caixa_servico_controller.py +++ b/packages/v1/administrativo/controllers/c_caixa_servico_controller.py @@ -4,7 +4,8 @@ from packages.v1.administrativo.schemas.c_caixa_servico_schema import ( CCaixaServicoSaveSchema, CCaixaServicoUpdateSchema, CCaixaServicoIdSchema, - CCaixaServicoDescricaoSchema + CCaixaServicoDescricaoSchema, + CCaixaServicoSistemaIdSchema ) class CCaixaServicoController: @@ -65,7 +66,23 @@ class CCaixaServicoController: return { 'message' : 'Caixa Serviço localizado com sucesso', 'data': self.show_service.execute(caixa_servico_schema, True)# True para retornar a mensagem de erro caso não localize o serviço - } + } + + + # Busca um caixa serviço pelp sistema_id + def getSistemaId(self, caixa_servico_schema : CCaixaServicoSistemaIdSchema): + + #Importação da classe desejada + show_sistema_id_service = self.dynamic_import.service('c_caixa_servico_get_sistema_id_service', 'GetSistemaIdService') + + # Instânciamento da classe desejada + self.show_sistema_id_service = show_sistema_id_service() + + # Busca e retorna o usuário desejado + return { + 'message' : 'Caixa Serviços localizados com sucesso', + 'data': self.show_sistema_id_service.execute(caixa_servico_schema) + } # Cadastra um novo usuário diff --git a/packages/v1/administrativo/endpoints/c_caixa_servico_endpoint.py b/packages/v1/administrativo/endpoints/c_caixa_servico_endpoint.py index 0439189..6b4338d 100644 --- a/packages/v1/administrativo/endpoints/c_caixa_servico_endpoint.py +++ b/packages/v1/administrativo/endpoints/c_caixa_servico_endpoint.py @@ -7,7 +7,8 @@ from packages.v1.administrativo.schemas.c_caixa_servico_schema import ( CCaixaServicoSchema, CCaixaServicoSaveSchema, CCaixaServicoUpdateSchema, - CCaixaServicoDescricaoSchema + CCaixaServicoDescricaoSchema, + CCaixaServicoSistemaIdSchema ) # Inicializa o roteador para as rotas de usuário @@ -47,6 +48,23 @@ async def getDescricao(descricao : str, current_user: dict = Depends(get_current return response +# Localiza um caixa serviço pelo sistema_id +@router.get('/sistema/{sistema_id}', + status_code=status.HTTP_200_OK, + summary='Busca registros pelo sistema_id', + response_description='Busca registros pelo sistema_id') +async def getSistemaId(sistema_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + caixa_servico_schema = CCaixaServicoSistemaIdSchema(sistema_id=sistema_id) + + # Busca um usuário especifico pelo e-mail + response = c_caixa_servico_controller.getSistemaId(caixa_servico_schema) + + # Retorna os dados localizados + return response + + # Localiza um serviço pelo ID @router.get('/{caixa_servico_id}', status_code=status.HTTP_200_OK, diff --git a/packages/v1/administrativo/repositories/c_caixa_servico/c_caixa_servico_get_by_sistema_id_repository.py b/packages/v1/administrativo/repositories/c_caixa_servico/c_caixa_servico_get_by_sistema_id_repository.py new file mode 100644 index 0000000..57bbd53 --- /dev/null +++ b/packages/v1/administrativo/repositories/c_caixa_servico/c_caixa_servico_get_by_sistema_id_repository.py @@ -0,0 +1,17 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.c_caixa_servico_schema import CCaixaServicoSistemaIdSchema + +class ShowSistemaIdRepository(BaseRepository): + + def execute(self, caixa_servico_schema : CCaixaServicoSistemaIdSchema): + + # Montagem do sql + sql = """ SELECT * FROM C_CAIXA_SERVICO ccs WHERE ccs.sistema_id = :sistema_id ORDER BY ccs.descricao ASC""" + + # Preenchimento de parâmetros + params = { + 'sistema_id' : caixa_servico_schema.sistema_id + } + + # Execução do sql + return self.fetch_all(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/c_caixa_servico_schema.py b/packages/v1/administrativo/schemas/c_caixa_servico_schema.py index 97285d1..015c71e 100644 --- a/packages/v1/administrativo/schemas/c_caixa_servico_schema.py +++ b/packages/v1/administrativo/schemas/c_caixa_servico_schema.py @@ -209,6 +209,13 @@ class CCaixaServicoIdSchema(BaseModel): caixa_servico_id: int +# ---------------------------------------------------- +# Schema para localizar um caixa serviço especifico pelo ID (GET) +# ---------------------------------------------------- +class CCaixaServicoSistemaIdSchema(BaseModel): + sistema_id: int + + # ---------------------------------------------------- # Schema para localizar um caixa serviço pela descrição (GET) # ---------------------------------------------------- diff --git a/packages/v1/administrativo/services/c_caixa_servico/go/c_caixa_servico_get_sistema_id_service.py b/packages/v1/administrativo/services/c_caixa_servico/go/c_caixa_servico_get_sistema_id_service.py new file mode 100644 index 0000000..bd9c12c --- /dev/null +++ b/packages/v1/administrativo/services/c_caixa_servico/go/c_caixa_servico_get_sistema_id_service.py @@ -0,0 +1,17 @@ +from fastapi import HTTPException, status + +from packages.v1.administrativo.schemas.c_caixa_servico_schema import CCaixaServicoSistemaIdSchema +from packages.v1.administrativo.actions.c_caixa_servico.c_caixa_servico_get_by_sistema_id_action import ShowSistemaIdAction + +class GetSistemaIdService: + + def execute(self, caixa_servico_schema: CCaixaServicoSistemaIdSchema): + + # Instânciamento de ação + show_sistema_id_action = ShowSistemaIdAction() + + # Executa a ação em questão + data = show_sistema_id_action.execute(caixa_servico_schema) + + # Retorno da informação + return data \ No newline at end of file