diff --git a/packages/v1/administrativo/actions/client/client_get_cns_action.py b/packages/v1/administrativo/actions/client/client_get_cns_action.py new file mode 100644 index 0000000..e177da1 --- /dev/null +++ b/packages/v1/administrativo/actions/client/client_get_cns_action.py @@ -0,0 +1,13 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.client_schema import ClientCNSSchema +from packages.v1.administrativo.repositories.client.client_get_cns_repository import GetCNSRepository + +class GetCNSAction(BaseAction): + + def execute(self, client_schema = ClientCNSSchema): + + # Importação do repositório + get_cns_repository = GetCNSRepository() + + # Execução do repositório + return get_cns_repository.execute(client_schema) diff --git a/packages/v1/administrativo/repositories/client/client_get_cns_repository.py b/packages/v1/administrativo/repositories/client/client_get_cns_repository.py new file mode 100644 index 0000000..a0b0d31 --- /dev/null +++ b/packages/v1/administrativo/repositories/client/client_get_cns_repository.py @@ -0,0 +1,18 @@ +from abstracts.repository import BaseRepository + +from packages.v1.administrativo.schemas.client_schema import ClientCNSSchema, ClientSchema + +class GetCNSRepository(BaseRepository): + + def execute(self, client_schema = ClientCNSSchema)-> ClientSchema: + + # Define a consulta sql + sql = """ SELECT * FROM client c WHERE c.cns = :cns """ + + # Preenchimento dos parâmetros SQL + params = { + 'cns': client_schema.cns + } + + # Execução da instrução sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/services/client/client_get_cns_service.py b/packages/v1/administrativo/services/client/client_get_cns_service.py new file mode 100644 index 0000000..e624929 --- /dev/null +++ b/packages/v1/administrativo/services/client/client_get_cns_service.py @@ -0,0 +1,26 @@ +from fastapi import HTTPException, status + +from packages.v1.administrativo.schemas.client_schema import ClientCNSSchema +from packages.v1.administrativo.actions.client.client_get_cns_action import GetCNSAction + +class GetCNSService: + + def execute(self, client_schema: ClientCNSSchema, messageValidate: bool): + + # Instânciamento de ação + cns_action = GetCNSAction() + + # Executa a ação em questão + data = cns_action.execute(client_schema) + + if messageValidate: + + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar o CNS do cliente' + ) + + # Retorno da informação + return data \ No newline at end of file