From 808bc15664190465ed01248da475a766757da896 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Tue, 28 Oct 2025 15:42:04 -0300 Subject: [PATCH] =?UTF-8?q?[MVPTN-106]=20feat(crud):=20Implementa=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20gerenciamento=20de=20etiqueta=20para=20o=20formu?= =?UTF-8?q?l=C3=A1rio=20Tipos=20de=20Servi=C3=A7o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rvico_etiqueta_show_servico_tipo_action.py | 28 ++++++++++ .../t_servico_etiqueta_controller.py | 15 +++++ .../endpoints/t_servico_etiqueta_endpoint.py | 17 ++++++ ...o_etiqueta_show_servico_tipo_repository.py | 55 +++++++++++++++++++ .../t_servico_tipo_save_repository.py | 2 +- .../t_servico_tipo_update_repository.py | 12 ++-- ...vico_etiqueta_show_servico_tipo_service.py | 38 +++++++++++++ 7 files changed, 160 insertions(+), 7 deletions(-) create mode 100644 packages/v1/administrativo/actions/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_action.py create mode 100644 packages/v1/administrativo/repositories/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_repository.py create mode 100644 packages/v1/administrativo/services/t_servico_etiqueta/go/t_servico_etiqueta_show_servico_tipo_service.py diff --git a/packages/v1/administrativo/actions/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_action.py b/packages/v1/administrativo/actions/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_action.py new file mode 100644 index 0000000..9997c33 --- /dev/null +++ b/packages/v1/administrativo/actions/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import TServicoEtiquetaServicoTipoIdSchema +from packages.v1.administrativo.repositories.t_servico_etiqueta.t_servico_etiqueta_show_servico_tipo_repository import ShowRepository + +class ShowAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a exibição + de um registro na tabela T_SERVICO_ETIQUETA. + """ + + def execute(self, servico_tipo_schema: TServicoEtiquetaServicoTipoIdSchema): + """ + Executa a operação de exibição. + + Args: + servico_etiqueta_schema (TServicoEtiquetaServicoTipoIdSchema): O esquema com o ID (SERVICO_TIPO_ID) do registro a ser exibido. + + Returns: + O resultado da operação de exibição. + """ + # Instânciamento do repositório + show_repository = ShowRepository() + + # Execução do repositório + response = show_repository.execute(servico_tipo_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/t_servico_etiqueta_controller.py b/packages/v1/administrativo/controllers/t_servico_etiqueta_controller.py index 1dc6595..fd0577c 100644 --- a/packages/v1/administrativo/controllers/t_servico_etiqueta_controller.py +++ b/packages/v1/administrativo/controllers/t_servico_etiqueta_controller.py @@ -35,6 +35,21 @@ class TServicoEtiquetaController: 'data': self.index_service.execute() } + + # Busca um registro de servico etiqueta específico pelo ID serviço tipo + def showServicoTipo(self, servico_tipo_schema: TServicoEtiquetaServicoTipoIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_servico_etiqueta_show_servico_tipo_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de servico etiqueta desejado + return { + 'message': 'Registros de serviço etiqueta localizados com sucesso', + 'data': self.show_service.execute(servico_tipo_schema) + } # Busca um registro de servico etiqueta específico pelo ID def show(self, servico_etiqueta_schema: TServicoEtiquetaIdSchema): diff --git a/packages/v1/administrativo/endpoints/t_servico_etiqueta_endpoint.py b/packages/v1/administrativo/endpoints/t_servico_etiqueta_endpoint.py index 74982c0..7675db7 100644 --- a/packages/v1/administrativo/endpoints/t_servico_etiqueta_endpoint.py +++ b/packages/v1/administrativo/endpoints/t_servico_etiqueta_endpoint.py @@ -30,6 +30,23 @@ async def index(current_user: dict = Depends(get_current_user)): return response +# Localiza um registro de servico etiqueta pelo serviço tipo +@router.get('/servico_tipo/{servico_tipo_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de servico etiqueta em específico pelo ID do serviço ', + response_description='Busca um registro de servico etiqueta em específico') +async def showServicoTipo(servico_tipo_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + servico_tipo_schema = TServicoEtiquetaServicoTipoIdSchema(servico_tipo_id=servico_tipo_id) + + # Busca um registro de servico etiqueta específico pelo ID + response = t_servico_etiqueta_controller.showServicoTipo(servico_tipo_schema) + + # Retorna os dados localizados + return response + + # Localiza um registro de servico etiqueta pelo ID @router.get('/{servico_etiqueta_id}', status_code=status.HTTP_200_OK, diff --git a/packages/v1/administrativo/repositories/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_repository.py b/packages/v1/administrativo/repositories/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_repository.py new file mode 100644 index 0000000..69c6701 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_servico_etiqueta/t_servico_etiqueta_show_servico_tipo_repository.py @@ -0,0 +1,55 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import TServicoEtiquetaServicoTipoIdSchema # Schema ajustado para T_SERVICO_ETIQUETA +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela T_SERVICO_ETIQUETA. + """ + + def execute(self, servico_tipo_schema: TServicoEtiquetaServicoTipoIdSchema): # Nome do parâmetro e tipo ajustados + """ + Busca um registro específico de T_SERVICO_ETIQUETA pelo ID. + + Args: + servico_etiqueta_schema (TServicoEtiquetaIdSchema): O esquema que contém o ID do registro. # Nome do tipo ajustado + + Returns: + O registro encontrado ou None se não existir. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + # Montagem do SQL + # Tabela e coluna da chave primária ajustadas para T_SERVICO_ETIQUETA + sql = """ SELECT E.SERVICO_ETIQUETA_ID, + E.ETIQUETA_MODELO_ID, + E.SERVICO_TIPO_ID, + T.DESCRICAO + FROM T_SERVICO_ETIQUETA E + LEFT JOIN G_MARCACAO_TIPO T ON E.ETIQUETA_MODELO_ID = T.MARCACAO_TIPO_ID + WHERE E.SERVICO_TIPO_ID = :servico_tipo_id """ + + # Preenchimento de parâmetros + params = { + # Nome do parâmetro ajustado para SERVICO_TIPO_ID + 'servico_tipo_id': servico_tipo_schema.servico_tipo_id + } + + # Execução do SQL + result = self.fetch_all(sql, params) + + if not result: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Registro não encontrado" + ) + + return result + except Exception as e: + # Tratamento de erro ajustado + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro T_SERVICO_ETIQUETA: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_save_repository.py b/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_save_repository.py index 86a2604..67f69bd 100644 --- a/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_save_repository.py +++ b/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_save_repository.py @@ -22,7 +22,7 @@ class SaveRepository(BaseRepository): Raises: HTTPException: Caso ocorra um erro na execução da query. """ - try: + try: # Montagem do SQL sql = """ INSERT INTO T_SERVICO_TIPO( diff --git a/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_update_repository.py b/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_update_repository.py index e0664ed..29176b7 100644 --- a/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_update_repository.py +++ b/packages/v1/administrativo/repositories/t_servico_tipo/t_servico_tipo_update_repository.py @@ -51,9 +51,9 @@ class UpdateRepository(BaseRepository): updates.append("TIPO_PESSOA = :tipo_pessoa") params["tipo_pessoa"] = servico_tipo_schema.tipo_pessoa - # if servico_tipo_schema.tb_reconhecimentotipo_id is not None: - # updates.append("TB_RECONHECIMENTOTIPO_ID = :tb_reconhecimentotipo_id") - # params["tb_reconhecimentotipo_id"] = servico_tipo_schema.tb_reconhecimentotipo_id + if servico_tipo_schema.tb_reconhecimentotipo_id is not None: + updates.append("TB_RECONHECIMENTOTIPO_ID = :tb_reconhecimentotipo_id") + params["tb_reconhecimentotipo_id"] = servico_tipo_schema.tb_reconhecimentotipo_id if servico_tipo_schema.tipo_permissao_cpf is not None: updates.append("TIPO_PERMISSAO_CPF = :tipo_permissao_cpf") @@ -115,9 +115,9 @@ class UpdateRepository(BaseRepository): updates.append("VALOR_FIXO = :valor_fixo") params["valor_fixo"] = servico_tipo_schema.valor_fixo - # if servico_tipo_schema.emolumento_id is not None: - # updates.append("EMOLUMENTO_ID = :emolumento_id") - # params["emolumento_id"] = servico_tipo_schema.emolumento_id + if servico_tipo_schema.emolumento_id is not None: + updates.append("EMOLUMENTO_ID = :emolumento_id") + params["emolumento_id"] = servico_tipo_schema.emolumento_id if servico_tipo_schema.ato_praticado is not None: updates.append("ATO_PRATICADO = :ato_praticado") diff --git a/packages/v1/administrativo/services/t_servico_etiqueta/go/t_servico_etiqueta_show_servico_tipo_service.py b/packages/v1/administrativo/services/t_servico_etiqueta/go/t_servico_etiqueta_show_servico_tipo_service.py new file mode 100644 index 0000000..a533f81 --- /dev/null +++ b/packages/v1/administrativo/services/t_servico_etiqueta/go/t_servico_etiqueta_show_servico_tipo_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +# Importação do Schema ajustada para o de ID +from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import TServicoEtiquetaServicoTipoIdSchema +# Importação da Action ajustada para ShowAction +from packages.v1.administrativo.actions.t_servico_etiqueta.t_servico_etiqueta_show_servico_tipo_action import ShowAction + +class ShowService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela T_SERVICO_ETIQUETA pelo seu ID. + """ + + def execute(self, servico_etiqueta_schema: TServicoEtiquetaServicoTipoIdSchema): # Nome do parâmetro e tipo ajustados + """ + Executa a operação de busca no banco de dados. + + Args: + servico_etiqueta_schema (TServicoEtiquetaServicoTipoIdSchema): O esquema com o ID a ser buscado. + messageValidate (bool): Se True, lança uma exceção HTTP caso o registro não seja encontrado. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento da ação + show_action = ShowAction() # Nome da Action ajustado + + # Executa a ação em questão + data = show_action.execute(servico_etiqueta_schema) + + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar o registro de T_SERVICO_ETIQUETA' # Mensagem de erro ajustada + ) + + # Retorno da informação + return data \ No newline at end of file