From a4c6bf624106aebc5eaf1c68735670e3f9741d42 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Fri, 19 Sep 2025 09:11:25 -0300 Subject: [PATCH 1/6] [MVPTN-6] feat(CRUD): Crud completo das tabelas t_censec e t_censec_naturezalitigio --- Orius.postman_collection.json | 4245 ++++++++++++++++- .../t_censec/t_censec_delete_action.py | 26 + .../t_censec_get_by_descricao_action.py | 29 + .../actions/t_censec/t_censec_index_action.py | 24 + .../actions/t_censec/t_censec_save_action.py | 28 + .../actions/t_censec/t_censec_show_action.py | 28 + .../t_censec/t_censec_update_action.py | 26 + .../t_censec_naturezalitigio_delete_action.py | 26 + ...naturezalitigio_get_by_descricao_action.py | 29 + .../t_censec_naturezalitigio_index_action.py | 24 + .../t_censec_naturezalitigio_save_action.py | 28 + .../t_censec_naturezalitigio_show_action.py | 28 + .../t_censec_naturezalitigio_update_action.py | 26 + .../controllers/t_censec_controller.py | 113 + .../t_censec_naturezalitigio_controller.py | 113 + .../endpoints/t_censec_endpoint.py | 108 + .../t_censec_naturezalitigio_endpoint.py | 108 + .../t_censec/t_censec_delete_repository.py | 41 + .../t_censec_get_by_descricao_repository.py | 29 + .../t_censec/t_censec_index_repository.py | 23 + .../t_censec/t_censec_save_repository.py | 53 + .../t_censec/t_censec_show_repository.py | 46 + .../t_censec/t_censec_update_repository.py | 61 + ...ensec_naturezalitigio_delete_repository.py | 41 + ...rezalitigio_get_by_descricao_repository.py | 29 + ...censec_naturezalitigio_index_repository.py | 23 + ..._censec_naturezalitigio_save_repository.py | 53 + ..._censec_naturezalitigio_show_repository.py | 46 + ...ensec_naturezalitigio_update_repository.py | 61 + .../t_censec_naturezalitigio_schema.py | 101 + .../administrativo/schemas/t_censec_schema.py | 101 + .../t_censec/go/t_censec_delete_service.py | 27 + .../go/t_censec_get_descricao_service.py | 38 + .../t_censec/go/t_censec_index_service.py | 32 + .../t_censec/go/t_censec_save_service.py | 70 + .../t_censec/go/t_censec_show_service.py | 35 + .../t_censec/go/t_censec_update_service.py | 23 + ...t_censec_naturezalitigio_delete_service.py | 27 + ...c_naturezalitigio_get_descricao_service.py | 38 + .../t_censec_naturezalitigio_index_service.py | 32 + .../t_censec_naturezalitigio_save_service.py | 70 + .../t_censec_naturezalitigio_show_service.py | 35 + ...t_censec_naturezalitigio_update_service.py | 23 + packages/v1/api.py | 14 + 44 files changed, 6157 insertions(+), 24 deletions(-) create mode 100644 packages/v1/administrativo/actions/t_censec/t_censec_delete_action.py create mode 100644 packages/v1/administrativo/actions/t_censec/t_censec_get_by_descricao_action.py create mode 100644 packages/v1/administrativo/actions/t_censec/t_censec_index_action.py create mode 100644 packages/v1/administrativo/actions/t_censec/t_censec_save_action.py create mode 100644 packages/v1/administrativo/actions/t_censec/t_censec_show_action.py create mode 100644 packages/v1/administrativo/actions/t_censec/t_censec_update_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_index_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_save_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_show_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_update_action.py create mode 100644 packages/v1/administrativo/controllers/t_censec_controller.py create mode 100644 packages/v1/administrativo/controllers/t_censec_naturezalitigio_controller.py create mode 100644 packages/v1/administrativo/endpoints/t_censec_endpoint.py create mode 100644 packages/v1/administrativo/endpoints/t_censec_naturezalitigio_endpoint.py create mode 100644 packages/v1/administrativo/repositories/t_censec/t_censec_delete_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec/t_censec_get_by_descricao_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec/t_censec_index_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec/t_censec_save_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec/t_censec_show_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec/t_censec_update_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_index_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_save_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_show_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_update_repository.py create mode 100644 packages/v1/administrativo/schemas/t_censec_naturezalitigio_schema.py create mode 100644 packages/v1/administrativo/schemas/t_censec_schema.py create mode 100644 packages/v1/administrativo/services/t_censec/go/t_censec_delete_service.py create mode 100644 packages/v1/administrativo/services/t_censec/go/t_censec_get_descricao_service.py create mode 100644 packages/v1/administrativo/services/t_censec/go/t_censec_index_service.py create mode 100644 packages/v1/administrativo/services/t_censec/go/t_censec_save_service.py create mode 100644 packages/v1/administrativo/services/t_censec/go/t_censec_show_service.py create mode 100644 packages/v1/administrativo/services/t_censec/go/t_censec_update_service.py create mode 100644 packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_delete_service.py create mode 100644 packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_get_descricao_service.py create mode 100644 packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_index_service.py create mode 100644 packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_save_service.py create mode 100644 packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_show_service.py create mode 100644 packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_update_service.py diff --git a/Orius.postman_collection.json b/Orius.postman_collection.json index 75ad95d..d2b89c5 100644 --- a/Orius.postman_collection.json +++ b/Orius.postman_collection.json @@ -1,9 +1,9 @@ { "info": { - "_postman_id": "385c0e34-a414-4987-9f55-cf650e80f25c", + "_postman_id": "d2ecb854-ec81-425a-9531-d6179eb1ecea", "name": "Orius", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "41558252" + "_exporter_id": "32142370" }, "item": [ { @@ -68,7 +68,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\r\n \"login\" : \"keven\",\r\n \"senha_api\" : \"123\"\r\n}", + "raw": "{\r\n \"login\" : \"Kenio\",\r\n \"senha_api\": \"123123\"\r\n}", "options": { "raw": { "language": "json" @@ -76,13 +76,13 @@ } }, "url": { - "raw": "{{BaseUrlV1}}administrativo/usuarios/login", + "raw": "{{BaseUrlV1}}administrativo/g_usuario/authenticate", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "usuarios", - "login" + "g_usuario", + "authenticate" ] } }, @@ -150,12 +150,160 @@ } }, "url": { - "raw": "{{BaseUrlV1}}administrativo/usuarios", + "raw": "{{BaseUrlV1}}administrativo/g_usuario", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "usuarios" + "g_usuario" + ] + } + }, + "response": [] + }, + { + "name": "Register", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"usuarioId\", response.data.usuario_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n\r\n \"trocarsenha\": \"S\",\r\n \"login\": \"{{login_aleatorio}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"nome_completo\": \"{{$randomFullName}}\",\r\n \"funcao\": \"Programador\",\r\n \"email\": \"{{$randomEmail}}\",\r\n \"cpf\": \"{{cpf_aleatorio}}\",\r\n \"senha_api\": \"123123\"\r\n}\r\n\r\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_usuario", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_usuario" + ] + } + }, + "response": [] + }, + { + "name": "Update", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"trocarsenha\": \"S\",\r\n \"login\": \"kenio\",\r\n \"situacao\": \"A\",\r\n \"nome_completo\": \"KENIO FODÃO DE SOUZA FODASTICO\",\r\n \"funcao\": \"Programador\",\r\n \"email\": \"graciele@outlook.com\",\r\n \"cpf\": \"89823702187\",\r\n \"senha_api\": \"123123\"\r\n}\r\n\r\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_usuario/123527", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_usuario", + "123527" ] } }, @@ -224,17 +372,332 @@ } }, "url": { - "raw": "{{BaseUrlV1}}administrativo/usuarios/me", + "raw": "{{BaseUrlV1}}administrativo/g_usuario/me", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "usuarios", + "g_usuario", "me" ] } }, "response": [] + }, + { + "name": "E-mail", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_usuario/email?email=kenio@outlook.com", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_usuario", + "email" + ], + "query": [ + { + "key": "email", + "value": "kenio@outlook.com" + } + ] + } + }, + "response": [] + }, + { + "name": "Login", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_usuario/login?login=kenio", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_usuario", + "login" + ], + "query": [ + { + "key": "login", + "value": "kenio" + } + ] + } + }, + "response": [] + }, + { + "name": "CPF", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_usuario/cpf?cpf=833.845.451-68", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_usuario", + "cpf" + ], + "query": [ + { + "key": "cpf", + "value": "833.845.451-68" + } + ] + } + }, + "response": [] + }, + { + "name": "Delete", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_usuario/{{usuarioId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_usuario", + "{{usuarioId}}" + ] + } + }, + "response": [] } ] }, @@ -304,12 +767,12 @@ } }, "url": { - "raw": "{{BaseUrlV1}}administrativo/caixa", + "raw": "{{BaseUrlV1}}administrativo/c_caixa_item", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "caixa" + "c_caixa_item" ] } }, @@ -381,12 +844,90 @@ } }, "url": { - "raw": "{{BaseUrlV1}}administrativo/caixa", + "raw": "{{BaseUrlV1}}administrativo/c_caixa_item", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "caixa" + "c_caixa_item" + ] + } + }, + "response": [] + }, + { + "name": "Update", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"caixaItemId\", response.data.caixa_item_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"especie_pagamento\": \"D\",\r\n \"usuario_servico_id\": 123456,\r\n \"usuario_caixa_id\": 123456,\r\n \"descricao\": \"{{$randomProductName}}\",\r\n \"data_pagamento\": \"2025-07-07 00:00:00.000\", \r\n \"situacao\": \"4\",\r\n \"tipo_documento\": \"C\",\r\n \"tipo_transacao\": \"C\",\r\n \"valor_servico\": {{$randomPrice}},\r\n \"valor_pago\": {{$randomPrice}},\r\n \"observacao\": \"{{$randomJobDescriptor}}\",\r\n \"hora_pagamento\": \"12:58\",\r\n \"tipo_servico\": \"25\",\r\n \"registrado\": \"3\"\r\n}\r\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_item/{{caixaItemId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_item", + "{{caixaItemId}}" ] } }, @@ -451,12 +992,12 @@ ] }, "url": { - "raw": "{{BaseUrlV1}}administrativo/caixa/{{caixaItemId}}", + "raw": "{{BaseUrlV1}}administrativo/c_caixa_item/{{caixaItemId}}", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "caixa", + "c_caixa_item", "{{caixaItemId}}" ] } @@ -519,12 +1060,12 @@ ] }, "url": { - "raw": "{{BaseUrlV1}}administrativo/caixa/{{caixaItemId}}", + "raw": "{{BaseUrlV1}}administrativo/c_caixa_item/{{caixaItemId}}", "host": [ "{{BaseUrlV1}}administrativo" ], "path": [ - "caixa", + "c_caixa_item", "{{caixaItemId}}" ] } @@ -532,6 +1073,3459 @@ "response": [] } ] + }, + { + "name": "Caixa Servico", + "item": [ + { + "name": "All", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_servico", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_servico" + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_servico/6", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_servico", + "6" + ] + } + }, + "response": [] + }, + { + "name": "GET Descrição", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_servico/descricao?descricao=teste", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_servico", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "teste" + } + ] + } + }, + "response": [] + }, + { + "name": "SAVE", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"caixaServicoId\", response.data.caixa_servico_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"tipo_transacao\": \"C\",\r\n\t\"sistema_id\": 9,\r\n\t\"situacao\": \"A\",\r\n\t\"interno_sistema\": \"S\",\r\n\t\"descricao\": \"{{$randomFullName}}\",\r\n\t\"emitir_relatorio\": \"S\",\r\n\t\"tipo_conta_carneleao\": \"\",\r\n\t\"centro_de_custa_id\": null,\r\n\t\"repetir_descricao\": \"N\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_servico", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_servico" + ] + } + }, + "response": [] + }, + { + "name": "UPDATE", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n\t\"caixa_servico_id\": 10034,\r\n \"tipo_transacao\": \"C\",\r\n\t\"sistema_id\": 9,\r\n\t\"situacao\": \"A\",\r\n\t\"interno_sistema\": \"S\",\r\n\t\"descricao\": \"{{$randomFullName}}\",\r\n\t\"emitir_relatorio\": \"S\",\r\n\t\"tipo_conta_carneleao\": \"\",\r\n\t\"centro_de_custa_id\": null,\r\n\t\"repetir_descricao\": \"N\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_servico/10045", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_servico", + "10045" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/c_caixa_servico/{{caixaServicoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "c_caixa_servico", + "{{caixaServicoId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Reconhecimento Tipo", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_reconhecimentotipo", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_reconhecimentotipo" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tBeconhecimentoTipoId\", response.data.tb_reconhecimentotipo_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"tb_reconhecimentotipo_id\": 0,\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"D\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_reconhecimentotipo/", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_reconhecimentotipo", + "" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_reconhecimentotipo/descricao?descricao=verdadeiro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_reconhecimentotipo", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "verdadeiro" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_reconhecimentotipo/3", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_reconhecimentotipo", + "3" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"A\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_reconhecimentotipo/{{tBeconhecimentoTipoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_reconhecimentotipo", + "{{tBeconhecimentoTipoId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"tb_reconhecimentotipo_id\": 4,\r\n \"descricao\": \"KENÃO FODÃO\",\r\n \"situacao\": \"A\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_reconhecimentotipo/{{tBeconhecimentoTipoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_reconhecimentotipo", + "{{tBeconhecimentoTipoId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Profissão", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_profissao", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_profissao" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbProfissaoId\", response.data.tb_profissao_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"cod_cbo\": \"{{codCob}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_profissao", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_profissao" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_profissao/descricao?descricao=técnica em informática", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_profissao", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "técnica em informática" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_profissao/25", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_profissao", + "25" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"cod_cbo\": \"{{codCob}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_profissao/{{tbProfissaoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_profissao", + "{{tbProfissaoId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_profissao/{{tbProfissaoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_profissao", + "{{tbProfissaoId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Regime Comunhão", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimecomunhao", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimecomunhao" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbRegimeComunhaoId\", response.data.tb_regimecomunhao_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"texto\": \"{{$randomCommonFileName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"tb_regimebens_id\": {{regime}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimecomunhao", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimecomunhao" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimecomunhao/descricao?descricao=separacão total de bens", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimecomunhao", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "separacão total de bens" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimecomunhao/{{tbRegimeComunhaoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimecomunhao", + "{{tbRegimeComunhaoId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"texto\": \"{{$randomCommonFileName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"tb_regimebens_id\": {{regime}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimecomunhao/{{tbRegimeComunhaoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimecomunhao", + "{{tbRegimeComunhaoId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimecomunhao/{{tbRegimeComunhaoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimecomunhao", + "{{tbRegimeComunhaoId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Regime Bens", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimebens", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimebens" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbRegimeBensId\", response.data.tb_regimebens_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimebens", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimebens" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimebens/descricao?descricao=Julio Will", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimebens", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "Julio Will" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimebens/{{tbRegimeBensId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimebens", + "{{tbRegimeBensId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimebens/{{tbRegimeBensId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimebens", + "{{tbRegimeBensId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_regimebens/{{tbRegimeBensId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_regimebens", + "{{tbRegimeBensId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "CENSEC", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"censecId\", response.data.censec_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec/descricao?descricao=RCTO - Testamentos", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "RCTO - Testamentos" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec/{{censecId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec", + "{{censecId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec/{{censecId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec", + "{{censecId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec/{{censecId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec", + "{{censecId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "CENSEC - Natureza Litigio", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_naturezalitigio", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_naturezalitigio" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"censecNaturezaLitigioId\", response.data.censec_naturezalitigio_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_naturezalitigio", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_naturezalitigio" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_naturezalitigio/descricao?descricao=Telefonia", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_naturezalitigio", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "Telefonia" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_naturezalitigio/{{censecNaturezaLitigioId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_naturezalitigio", + "{{censecNaturezaLitigioId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_naturezalitigio/{{censecNaturezaLitigioId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_naturezalitigio", + "{{censecNaturezaLitigioId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_naturezalitigio/{{censecNaturezaLitigioId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_naturezalitigio", + "{{censecNaturezaLitigioId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Modelo Grupo", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_txmodelogrupo", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_txmodelogrupo" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbTxmodelogrupoId\", response.data.tb_txmodelogrupo_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_txmodelogrupo", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_txmodelogrupo" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_txmodelogrupo/descricao?descricao=eu", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_txmodelogrupo", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "eu" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_txmodelogrupo/{{tbTxmodelogrupoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_txmodelogrupo", + "{{tbTxmodelogrupoId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_txmodelogrupo/{{tbTxmodelogrupoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_txmodelogrupo", + "{{tbTxmodelogrupoId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_txmodelogrupo/{{tbTxmodelogrupoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_txmodelogrupo", + "{{tbTxmodelogrupoId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Andamento Serviço", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_andamentoservico", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_andamentoservico" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbAndamentoServicoId\", response.data.tb_andamentoservico_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"tb_andamentoservico_id\": 0,\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"tipo\": \"{{type}}\",\r\n \"usa_email\": \"{{useEmail}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_andamentoservico/", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_andamentoservico", + "" + ] + } + }, + "response": [] + }, + { + "name": "UPDATE", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"tipo\": \"{{type}}\",\r\n \"usa_email\": \"{{useEmail}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_andamentoservico/{{tbAndamentoServicoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_andamentoservico", + "{{tbAndamentoServicoId}}" + ] + } + }, + "response": [] + }, + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "keven@softwiki.com.br", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + } + ] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_andamentoservico/{{tbAndamentoServicoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_andamentoservico", + "{{tbAndamentoServicoId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "keven@softwiki.com.br", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + } + ] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_tb_andamentoservico/{{tbAndamentoServicoId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_tb_andamentoservico", + "{{tbAndamentoServicoId}}" + ] + } + }, + "response": [] + } + ] } ] } @@ -543,7 +4537,136 @@ "type": "text/javascript", "packages": {}, "exec": [ - "" + "// Lista de valores possíveis\r", + "const statusList = [\"A\", \"I\"];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randomStatus = statusList[Math.floor(Math.random() * statusList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"status\", randomStatus);\r", + "\r", + "\r", + "// Lista de valores possíveis\r", + "const typeList = [\"G\", \"C\"];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randomTypes = typeList[Math.floor(Math.random() * typeList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"type\", randomTypes);\r", + "\r", + "\r", + "// Lista de valores possíveis\r", + "const emailUseList = [\"S\", \"N\"];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randomUseEmail = emailUseList[Math.floor(Math.random() * emailUseList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"useEmail\", randomUseEmail);\r", + "\r", + "\r", + "\r", + "\r", + "// Lista de valores possíveis\r", + "const cboList = [\"-2\", \"15\", \"3\", \"34\"];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randomCbo = cboList[Math.floor(Math.random() * cboList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"codCob\", randomCbo);\r", + "\r", + "\r", + "\r", + "// Função para gerar números aleatórios entre 0 e 9\r", + "function randomDigit() {\r", + " return Math.floor(Math.random() * 10);\r", + "}\r", + "\r", + "// Função para calcular o dígito verificador do CPF\r", + "function calculateCPFVerifier(digits) {\r", + " let sum = 0;\r", + " for (let i = 0; i < digits.length; i++) {\r", + " sum += digits[i] * (digits.length + 1 - i);\r", + " }\r", + " let remainder = sum % 11;\r", + " return remainder < 2 ? 0 : 11 - remainder;\r", + "}\r", + "\r", + "// Função para gerar um CPF aleatório válido\r", + "function generateCPF() {\r", + " let digits = [];\r", + " // Gera os 9 primeiros dígitos\r", + " for (let i = 0; i < 9; i++) {\r", + " digits.push(randomDigit());\r", + " }\r", + "\r", + " // Calcula o primeiro dígito verificador\r", + " digits.push(calculateCPFVerifier(digits));\r", + "\r", + " // Calcula o segundo dígito verificador\r", + " digits.push(calculateCPFVerifier(digits));\r", + "\r", + " return digits.join('');\r", + "}\r", + "\r", + "// Gera o CPF\r", + "let cpf = generateCPF();\r", + "\r", + "// Salva o CPF em uma variável de ambiente do Postman\r", + "pm.environment.set(\"cpf_aleatorio\", cpf);\r", + "\r", + "// Log para debug\r", + "//console.log(\"CPF gerado:\", cpf);\r", + "\r", + "\r", + "\r", + "// Função para gerar um caractere aleatório\r", + "function randomChar() {\r", + " const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';\r", + " return chars.charAt(Math.floor(Math.random() * chars.length));\r", + "}\r", + "\r", + "// Função para gerar login com tamanho definido\r", + "function generateLogin(length = 8) {\r", + " let login = '';\r", + " for (let i = 0; i < length; i++) {\r", + " login += randomChar();\r", + " }\r", + " return login;\r", + "}\r", + "\r", + "// Gera o login aleatório\r", + "let loginAleatorio = generateLogin(10); // por exemplo, login com 10 caracteres\r", + "\r", + "// Salva em variável de ambiente do Postman\r", + "pm.environment.set(\"login_aleatorio\", loginAleatorio);\r", + "\r", + "// Log para debug\r", + "//console.log(\"Login gerado:\", loginAleatorio);\r", + "\r", + "\r", + "// Lista de valores possíveis\r", + "const regimeList = [1 ,2 , 3, 4];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randomRegime = regimeList[Math.floor(Math.random() * regimeList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"regime\", randomRegime);\r", + "\r", + "\r", + "\r", + "// Lista de valores possíveis\r", + "const sistemaIdList = [1, 2, 5, 7, 12, 13];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randomSistemaID = sistemaIdList[Math.floor(Math.random() * sistemaIdList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"sistemaId\", randomSistemaID);" ] } }, @@ -561,18 +4684,92 @@ "variable": [ { "key": "BaseUrlV1", - "value": "http://127.0.0.1:8000/api/v1/", - "type": "string" + "value": "http://localhost:8000/api/v1/" }, { "key": "BearerToken", - "value": "", - "type": "string" + "value": "" }, { "key": "caixaItemId", + "value": "" + }, + { + "key": "caixaServicoId", + "value": "" + }, + { + "key": "description", + "value": "" + }, + { + "key": "tBeconhecimentoTipoId", + "value": "" + }, + { + "key": "status", + "value": "" + }, + { + "key": "type", + "value": "" + }, + { + "key": "useEmail", + "value": "" + }, + { + "key": "tbAndamentoServicoId", + "value": "" + }, + { + "key": "codCob", + "value": "" + }, + { + "key": "tbProfissaoId", + "value": "" + }, + { + "key": "usuarioId", + "value": "" + }, + { + "key": "cpf_aleatorio", + "value": "" + }, + { + "key": "login_aleatorio", + "value": "" + }, + { + "key": "regime", + "value": "" + }, + { + "key": "tbRegimeComunhaoId", + "value": "" + }, + { + "key": "tbTxmodelogrupoId", + "value": "" + }, + { + "key": "sistemaId", + "value": "" + }, + { + "key": "tbRegimeBensId", + "value": "" + }, + { + "key": "censecId", + "value": "" + }, + { + "key": "censecNaturezaLitigioId", "value": "", - "type": "string" + "type": "default" } ] } \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec/t_censec_delete_action.py b/packages/v1/administrativo/actions/t_censec/t_censec_delete_action.py new file mode 100644 index 0000000..dbc4760 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec/t_censec_delete_action.py @@ -0,0 +1,26 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_schema import TCensecIdSchema +from packages.v1.administrativo.repositories.t_censec.t_censec_delete_repository import DeleteRepository + + +class DeleteAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela t_censec. + """ + + def execute(self, censec_schema: TCensecIdSchema): + """ + Executa a operação de exclusão no banco de dados. + + Args: + censec_schema (TCensecIdSchema): O esquema com o ID a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento do repositório + delete_repository = DeleteRepository() + + # Execução do repositório + return delete_repository.execute(censec_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec/t_censec_get_by_descricao_action.py b/packages/v1/administrativo/actions/t_censec/t_censec_get_by_descricao_action.py new file mode 100644 index 0000000..a9b9cd2 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec/t_censec_get_by_descricao_action.py @@ -0,0 +1,29 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_schema import TCensecDescricaoSchema +from packages.v1.administrativo.repositories.t_censec.t_censec_get_by_descricao_repository import GetByDescricaoRepository + + +class GetByDescricaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela t_censec por descrição. + """ + + def execute(self, censec_schema: TCensecDescricaoSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_schema (TCensecDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento do repositório + show_repository = GetByDescricaoRepository() + + # Execução do repositório + response = show_repository.execute(censec_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec/t_censec_index_action.py b/packages/v1/administrativo/actions/t_censec/t_censec_index_action.py new file mode 100644 index 0000000..7866085 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec/t_censec_index_action.py @@ -0,0 +1,24 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.repositories.t_censec.t_censec_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela t_censec. + """ + + def execute(self): + """ + Executa a operação de listagem no banco de dados. + + Returns: + A lista de todos os registros. + """ + # Instanciamento do repositório + index_repository = IndexRepository() + + # Execução do repositório + response = index_repository.execute() + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec/t_censec_save_action.py b/packages/v1/administrativo/actions/t_censec/t_censec_save_action.py new file mode 100644 index 0000000..71f964e --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec/t_censec_save_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_schema import TCensecSaveSchema +from packages.v1.administrativo.repositories.t_censec.t_censec_save_repository import SaveRepository + +class SaveAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvar um novo registro na tabela t_censec. + """ + + def execute(self, censec_schema: TCensecSaveSchema): + """ + Executa a operação de salvamento. + + Args: + censec_schema (TCensecSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O resultado da operação de salvamento. + """ + # Instanciamento do repositório + save_repository = SaveRepository() + + # Execução do repositório + response = save_repository.execute(censec_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec/t_censec_show_action.py b/packages/v1/administrativo/actions/t_censec/t_censec_show_action.py new file mode 100644 index 0000000..98c78c6 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec/t_censec_show_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_schema import TCensecIdSchema +from packages.v1.administrativo.repositories.t_censec.t_censec_show_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_censec. + """ + + def execute(self, censec_schema: TCensecIdSchema): + """ + Executa a operação de exibição. + + Args: + censec_schema (TCensecIdSchema): O esquema com o 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(censec_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec/t_censec_update_action.py b/packages/v1/administrativo/actions/t_censec/t_censec_update_action.py new file mode 100644 index 0000000..db9e1cc --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec/t_censec_update_action.py @@ -0,0 +1,26 @@ +from packages.v1.administrativo.schemas.t_censec_schema import TCensecUpdateSchema +from packages.v1.administrativo.repositories.t_censec.t_censec_update_repository import UpdateRepository + + +class UpdateAction: + """ + Service responsável por encapsular a lógica de negócio para a atualização + de um registro na tabela t_censec. + """ + + def execute(self, censec_id: int, censec_schema: TCensecUpdateSchema): + """ + Executa a operação de atualização. + + Args: + censec_id (int): O ID do registro a ser atualizado. + censec_schema (TCensecUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instância o repositório de atualização + update_repository = UpdateRepository() + + # Chama o método de execução do repositório para realizar a atualização + return update_repository.execute(censec_id, censec_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_action.py b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_action.py new file mode 100644 index 0000000..6753f8c --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_action.py @@ -0,0 +1,26 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioIdSchema +from packages.v1.administrativo.repositories.t_censec_naturezalitigio.t_censec_naturezalitigio_delete_repository import DeleteRepository + + +class DeleteAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + """ + Executa a operação de exclusão no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioIdSchema): O esquema com o ID a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento do repositório + delete_repository = DeleteRepository() + + # Execução do repositório + return delete_repository.execute(censec_naturezalitigio_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_action.py b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_action.py new file mode 100644 index 0000000..2175933 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_action.py @@ -0,0 +1,29 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioDescricaoSchema +from packages.v1.administrativo.repositories.t_censec_naturezalitigio.t_censec_naturezalitigio_get_by_descricao_repository import GetByDescricaoRepository + + +class GetByDescricaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela t_censec_naturezalitigio por descrição. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioDescricaoSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento do repositório + show_repository = GetByDescricaoRepository() + + # Execução do repositório + response = show_repository.execute(censec_naturezalitigio_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_index_action.py b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_index_action.py new file mode 100644 index 0000000..a098211 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_index_action.py @@ -0,0 +1,24 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.repositories.t_censec_naturezalitigio.t_censec_naturezalitigio_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela t_censec_naturezalitigio. + """ + + def execute(self): + """ + Executa a operação de listagem no banco de dados. + + Returns: + A lista de todos os registros. + """ + # Instanciamento do repositório + index_repository = IndexRepository() + + # Execução do repositório + response = index_repository.execute() + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_save_action.py b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_save_action.py new file mode 100644 index 0000000..91726e4 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_save_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioSaveSchema +from packages.v1.administrativo.repositories.t_censec_naturezalitigio.t_censec_naturezalitigio_save_repository import SaveRepository + +class SaveAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvar um novo registro na tabela t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioSaveSchema): + """ + Executa a operação de salvamento. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O resultado da operação de salvamento. + """ + # Instanciamento do repositório + save_repository = SaveRepository() + + # Execução do repositório + response = save_repository.execute(censec_naturezalitigio_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_show_action.py b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_show_action.py new file mode 100644 index 0000000..50d9652 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_show_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioIdSchema +from packages.v1.administrativo.repositories.t_censec_naturezalitigio.t_censec_naturezalitigio_show_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_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + """ + Executa a operação de exibição. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioIdSchema): O esquema com o 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(censec_naturezalitigio_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_update_action.py b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_update_action.py new file mode 100644 index 0000000..cb59afc --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_naturezalitigio/t_censec_naturezalitigio_update_action.py @@ -0,0 +1,26 @@ +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioUpdateSchema +from packages.v1.administrativo.repositories.t_censec_naturezalitigio.t_censec_naturezalitigio_update_repository import UpdateRepository + + +class UpdateAction: + """ + Service responsável por encapsular a lógica de negócio para a atualização + de um registro na tabela t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_id: int, censec_naturezalitigio_schema: TCensecNaturezalitigioUpdateSchema): + """ + Executa a operação de atualização. + + Args: + censec_naturezalitigio_id (int): O ID do registro a ser atualizado. + censec_naturezalitigio_schema (TCensecNaturezalitigioUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instância o repositório de atualização + update_repository = UpdateRepository() + + # Chama o método de execução do repositório para realizar a atualização + return update_repository.execute(censec_naturezalitigio_id, censec_naturezalitigio_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/t_censec_controller.py b/packages/v1/administrativo/controllers/t_censec_controller.py new file mode 100644 index 0000000..62a4e34 --- /dev/null +++ b/packages/v1/administrativo/controllers/t_censec_controller.py @@ -0,0 +1,113 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.administrativo.schemas.t_censec_schema import ( + TCensecSchema, + TCensecSaveSchema, + TCensecUpdateSchema, + TCensecIdSchema, + TCensecDescricaoSchema +) + +class TCensecController: + + def __init__(self): + # Action responsável por carregar as services de acordo 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("t_censec") + pass + + # Lista todos os registros de censec + def index(self): + + # Importação da classe desejada + indexService = self.dynamic_import.service("t_censec_index_service", "IndexService") + + # Instância da classe service + self.indexService = indexService() + + # Lista todos os registros de censec + return { + 'message': 'Registros de censec localizados com sucesso', + 'data': self.indexService.execute() + } + + + # Busca um registro de censec específico pelo ID + def show(self, censec_schema: TCensecIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_censec_show_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de censec desejado + return { + 'message': 'Registro de censec localizado com sucesso', + 'data': self.show_service.execute(censec_schema) + } + + + # Busca um registro de censec pela descrição + def get_by_descricao(self, censec_schema: TCensecDescricaoSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_censec_get_descricao_service', 'GetByDescricaoService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de censec desejado + return { + 'message': 'Registro de censec localizado com sucesso', + 'data': self.show_service.execute(censec_schema, True) + } + + + # Cadastra um novo registro de censec + def save(self, censec_schema: TCensecSaveSchema): + + #Importação da classe desejada + save_service = self.dynamic_import.service('t_censec_save_service', 'SaveService') + + # Instância da classe desejada + self.save_service = save_service() + # Busca e retorna o registro de censec desejado + return { + 'message': 'Registro de censec salvo com sucesso', + 'data': self.save_service.execute(censec_schema) + } + + # Atualiza os dados de um registro de censec + def update(self, censec_id: int, censec_schema: TCensecUpdateSchema): + + #Importação da classe desejada + update_service = self.dynamic_import.service('t_censec_update_service', 'UpdateService') + + # Instância da classe desejada + self.update_service = update_service() + + # Busca e retorna o registro de censec desejado + return { + 'message': 'Registro de censec atualizado com sucesso', + 'data': self.update_service.execute(censec_id, censec_schema) + } + + # Exclui um registro de censec + def delete(self, censec_schema: TCensecIdSchema): + + #Importação da classe desejada + delete_service = self.dynamic_import.service('t_censec_delete_service', 'DeleteService') + + # Instância da classe desejada + self.delete_service = delete_service() + + # Busca e retorna o registro de censec desejado + return { + 'message': 'Registro de censec removido com sucesso', + 'data': self.delete_service.execute(censec_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/t_censec_naturezalitigio_controller.py b/packages/v1/administrativo/controllers/t_censec_naturezalitigio_controller.py new file mode 100644 index 0000000..adcd066 --- /dev/null +++ b/packages/v1/administrativo/controllers/t_censec_naturezalitigio_controller.py @@ -0,0 +1,113 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import ( + TCensecNaturezalitigioSchema, + TCensecNaturezalitigioSaveSchema, + TCensecNaturezalitigioUpdateSchema, + TCensecNaturezalitigioIdSchema, + TCensecNaturezalitigioDescricaoSchema +) + +class TCensecNaturezalitigioController: + + def __init__(self): + # Action responsável por carregar as services de acordo 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("t_censec_naturezalitigio") + pass + + # Lista todos os registros de natureza_litigio + def index(self): + + # Importação da classe desejada + indexService = self.dynamic_import.service("t_censec_naturezalitigio_index_service", "IndexService") + + # Instância da classe service + self.indexService = indexService() + + # Lista todos os registros de natureza_litigio + return { + 'message': 'Registros de natureza_litigio localizados com sucesso', + 'data': self.indexService.execute() + } + + + # Busca um registro de natureza_litigio específico pelo ID + def show(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_censec_naturezalitigio_show_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de natureza_litigio desejado + return { + 'message': 'Registro de natureza_litigio localizado com sucesso', + 'data': self.show_service.execute(censec_naturezalitigio_schema) + } + + + # Busca um registro de natureza_litigio pela descrição + def get_by_descricao(self, censec_naturezalitigio_schema: TCensecNaturezalitigioDescricaoSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_censec_naturezalitigio_get_descricao_service', 'GetByDescricaoService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de natureza_litigio desejado + return { + 'message': 'Registro de natureza_litigio localizado com sucesso', + 'data': self.show_service.execute(censec_naturezalitigio_schema, True) + } + + + # Cadastra um novo registro de natureza_litigio + def save(self, censec_naturezalitigio_schema: TCensecNaturezalitigioSaveSchema): + + #Importação da classe desejada + save_service = self.dynamic_import.service('t_censec_naturezalitigio_save_service', 'SaveService') + + # Instância da classe desejada + self.save_service = save_service() + # Busca e retorna o registro de natureza_litigio desejado + return { + 'message': 'Registro de natureza_litigio salvo com sucesso', + 'data': self.save_service.execute(censec_naturezalitigio_schema) + } + + # Atualiza os dados de um registro de natureza_litigio + def update(self, censec_naturezalitigio_id: int, censec_naturezalitigio_schema: TCensecNaturezalitigioUpdateSchema): + + #Importação da classe desejada + update_service = self.dynamic_import.service('t_censec_naturezalitigio_update_service', 'UpdateService') + + # Instância da classe desejada + self.update_service = update_service() + + # Busca e retorna o registro de natureza_litigio desejado + return { + 'message': 'Registro de natureza_litigio atualizado com sucesso', + 'data': self.update_service.execute(censec_naturezalitigio_id, censec_naturezalitigio_schema) + } + + # Exclui um registro de natureza_litigio + def delete(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + + #Importação da classe desejada + delete_service = self.dynamic_import.service('t_censec_naturezalitigio_delete_service', 'DeleteService') + + # Instância da classe desejada + self.delete_service = delete_service() + + # Busca e retorna o registro de natureza_litigio desejado + return { + 'message': 'Registro de natureza_litigio removido com sucesso', + 'data': self.delete_service.execute(censec_naturezalitigio_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/t_censec_endpoint.py b/packages/v1/administrativo/endpoints/t_censec_endpoint.py new file mode 100644 index 0000000..55a3ee5 --- /dev/null +++ b/packages/v1/administrativo/endpoints/t_censec_endpoint.py @@ -0,0 +1,108 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user +from packages.v1.administrativo.controllers.t_censec_controller import TCensecController +from packages.v1.administrativo.schemas.t_censec_schema import ( + TCensecSchema, + TCensecSaveSchema, + TCensecUpdateSchema, + TCensecIdSchema +) + +# Inicializa o roteador para as rotas do tipo de reconhecimento +router = APIRouter() + +# Instanciamento do controller desejado +t_censec_controller = TCensecController() + +# Lista todos os registros de censec +@router.get('/', + status_code=status.HTTP_200_OK, + summary='Lista todos os registros de censec cadastrados', + response_description='Lista todos os registros de censec cadastrados') +async def index(current_user: dict = Depends(get_current_user)): + + # Busca todos os registros de censec cadastrados + response = t_censec_controller.index() + + # Retorna os dados localizados + return response + + +# Localiza um registro de censec pela descrição +@router.get('/descricao', + status_code=status.HTTP_200_OK, + summary='Busca um registro de censec em específico pela descrição', + response_description='Busca um registro de censec em específico') +async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_schema = TCensecSchema(descricao=descricao) + + # Busca um registro de censec específico pela descrição + response = t_censec_controller.get_by_descricao(censec_schema) + + # Retorna os dados localizados + return response + + +# Localiza um registro de censec pelo ID +@router.get('/{censec_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de censec em específico pelo ID', + response_description='Busca um registro de censec em específico') +async def show(censec_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_schema = TCensecIdSchema(censec_id=censec_id) + + # Busca um registro de censec específico pelo ID + response = t_censec_controller.show(censec_schema) + + # Retorna os dados localizados + return response + + +# Cadastro de registro de censec +@router.post('/', + status_code=status.HTTP_201_CREATED, + summary='Cadastra um registro de censec', + response_description='Cadastra um registro de censec') +async def save(censec_schema: TCensecSaveSchema, current_user: dict = Depends(get_current_user)): + + # Efetua o cadastro no banco de dados + response = t_censec_controller.save(censec_schema) + + # Retorna os dados localizados + return response + + +# Atualiza os dados de um registro de censec +@router.put('/{censec_id}', + status_code=status.HTTP_200_OK, + summary='Atualiza um registro de censec', + response_description='Atualiza um registro de censec') +async def update(censec_id: int, censec_schema: TCensecUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Efetua a atualização dos dados + response = t_censec_controller.update(censec_id, censec_schema) + + # Retorna os dados localizados + return response + +# Exclui um determinado registro de censec +@router.delete('/{censec_id}', + status_code=status.HTTP_200_OK, + summary='Remove um registro de censec', + response_description='Remove um registro de censec') +async def delete(censec_id: int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_schema = TCensecIdSchema(censec_id=censec_id) + + # Efetua a exclusão do registro de censec + response = t_censec_controller.delete(censec_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/t_censec_naturezalitigio_endpoint.py b/packages/v1/administrativo/endpoints/t_censec_naturezalitigio_endpoint.py new file mode 100644 index 0000000..0459576 --- /dev/null +++ b/packages/v1/administrativo/endpoints/t_censec_naturezalitigio_endpoint.py @@ -0,0 +1,108 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user +from packages.v1.administrativo.controllers.t_censec_naturezalitigio_controller import TCensecNaturezalitigioController +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import ( + TCensecNaturezalitigioSchema, + TCensecNaturezalitigioSaveSchema, + TCensecNaturezalitigioUpdateSchema, + TCensecNaturezalitigioIdSchema +) + +# Inicializa o roteador para as rotas do tipo de reconhecimento +router = APIRouter() + +# Instanciamento do controller desejado +t_censec_naturezalitigio_controller = TCensecNaturezalitigioController() + +# Lista todos os registros de natureza_litigio +@router.get('/', + status_code=status.HTTP_200_OK, + summary='Lista todos os registros de natureza_litigio cadastrados', + response_description='Lista todos os registros de natureza_litigio cadastrados') +async def index(current_user: dict = Depends(get_current_user)): + + # Busca todos os registros de natureza_litigio cadastrados + response = t_censec_naturezalitigio_controller.index() + + # Retorna os dados localizados + return response + + +# Localiza um registro de natureza_litigio pela descrição +@router.get('/descricao', + status_code=status.HTTP_200_OK, + summary='Busca um registro de natureza_litigio em específico pela descrição', + response_description='Busca um registro de natureza_litigio em específico') +async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_naturezalitigio_schema = TCensecNaturezalitigioSchema(descricao=descricao) + + # Busca um registro de natureza_litigio específico pela descrição + response = t_censec_naturezalitigio_controller.get_by_descricao(censec_naturezalitigio_schema) + + # Retorna os dados localizados + return response + + +# Localiza um registro de natureza_litigio pelo ID +@router.get('/{censec_naturezalitigio_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de natureza_litigio em específico pelo ID', + response_description='Busca um registro de natureza_litigio em específico') +async def show(censec_naturezalitigio_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_naturezalitigio_schema = TCensecNaturezalitigioIdSchema(censec_naturezalitigio_id=censec_naturezalitigio_id) + + # Busca um registro de natureza_litigio específico pelo ID + response = t_censec_naturezalitigio_controller.show(censec_naturezalitigio_schema) + + # Retorna os dados localizados + return response + + +# Cadastro de registro de natureza_litigio +@router.post('/', + status_code=status.HTTP_201_CREATED, + summary='Cadastra um registro de natureza_litigio', + response_description='Cadastra um registro de natureza_litigio') +async def save(censec_naturezalitigio_schema: TCensecNaturezalitigioSaveSchema, current_user: dict = Depends(get_current_user)): + + # Efetua o cadastro no banco de dados + response = t_censec_naturezalitigio_controller.save(censec_naturezalitigio_schema) + + # Retorna os dados localizados + return response + + +# Atualiza os dados de um registro de natureza_litigio +@router.put('/{censec_naturezalitigio_id}', + status_code=status.HTTP_200_OK, + summary='Atualiza um registro de natureza_litigio', + response_description='Atualiza um registro de natureza_litigio') +async def update(censec_naturezalitigio_id: int, censec_naturezalitigio_schema: TCensecNaturezalitigioUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Efetua a atualização dos dados + response = t_censec_naturezalitigio_controller.update(censec_naturezalitigio_id, censec_naturezalitigio_schema) + + # Retorna os dados localizados + return response + +# Exclui um determinado registro de natureza_litigio +@router.delete('/{censec_naturezalitigio_id}', + status_code=status.HTTP_200_OK, + summary='Remove um registro de natureza_litigio', + response_description='Remove um registro de natureza_litigio') +async def delete(censec_naturezalitigio_id: int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_naturezalitigio_schema = TCensecNaturezalitigioIdSchema(censec_naturezalitigio_id=censec_naturezalitigio_id) + + # Efetua a exclusão do registro de natureza_litigio + response = t_censec_naturezalitigio_controller.delete(censec_naturezalitigio_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec/t_censec_delete_repository.py b/packages/v1/administrativo/repositories/t_censec/t_censec_delete_repository.py new file mode 100644 index 0000000..316cf8d --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec/t_censec_delete_repository.py @@ -0,0 +1,41 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_schema import TCensecIdSchema +from fastapi import HTTPException, status + +class DeleteRepository(BaseRepository): + """ + Repositório para a operação de exclusão de um registro na tabela + t_censec. + """ + + def execute(self, censec_schema: TCensecIdSchema): + """ + Executa a consulta SQL para remover um registro pelo ID. + + Args: + censec_schema (TCensecIdSchema): O esquema com o ID a ser removido. + + Returns: + O resultado da operação de exclusão. + """ + try: + # Montagem do sql + sql = """ DELETE FROM T_CENSEC WHERE CENSEC_ID = :censec_id """ + + # Preenchimento de parâmetros + params = { + "censec_id": censec_schema.censec_id + } + + # Execução do sql + response = self.run(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + # Informa que houve uma falha na exclusão + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao excluir CENSEC: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec/t_censec_get_by_descricao_repository.py b/packages/v1/administrativo/repositories/t_censec/t_censec_get_by_descricao_repository.py new file mode 100644 index 0000000..4b8e95f --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec/t_censec_get_by_descricao_repository.py @@ -0,0 +1,29 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_schema import TCensecDescricaoSchema + +class GetByDescricaoRepository(BaseRepository): + """ + Repositório para a operação de busca de um registro na tabela + t_censec por descrição. + """ + + def execute(self, censec_schema: TCensecDescricaoSchema): + """ + Executa a consulta SQL para buscar um registro pela descrição. + + Args: + censec_schema (TCensecDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + Um dicionário contendo os dados do registro ou None se não for encontrado. + """ + # Montagem do SQL + sql = """ SELECT * FROM T_CENSEC WHERE DESCRICAO = :descricao """ + + # Preenchimento de parâmetros + params = { + 'descricao': censec_schema.descricao + } + + # Execução do sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec/t_censec_index_repository.py b/packages/v1/administrativo/repositories/t_censec/t_censec_index_repository.py new file mode 100644 index 0000000..aa86236 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec/t_censec_index_repository.py @@ -0,0 +1,23 @@ +from abstracts.repository import BaseRepository + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela t_censec. + """ + + def execute(self): + """ + Executa a consulta SQL para buscar todos os registros. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL + sql = """ SELECT * FROM T_CENSEC """ + + # Execução do sql + response = self.fetch_all(sql) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec/t_censec_save_repository.py b/packages/v1/administrativo/repositories/t_censec/t_censec_save_repository.py new file mode 100644 index 0000000..ff2c1c2 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec/t_censec_save_repository.py @@ -0,0 +1,53 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_schema import TCensecSaveSchema + + +class SaveRepository(BaseRepository): + """ + Repositório para a operação de salvamento de um novo registro na tabela t_censec. + """ + + def execute(self, censec_schema: TCensecSaveSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + censec_schema (TCensecSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + + # Montagem do SQL + sql = """ INSERT INTO T_CENSEC( + CENSEC_ID, + DESCRICAO, + SITUACAO + ) VALUES ( + :censec_id, + :descricao, + :situacao + ) RETURNING *;""" + + # Preenchimento de parâmetros + params = { + 'censec_id': censec_schema.censec_id, + 'descricao': censec_schema.descricao, + 'situacao': censec_schema.situacao + } + + # Execução do sql + return self.run_and_return(sql, params) + + except Exception as e: + + # Informa que houve uma falha no salvamento do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar CENSEC: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec/t_censec_show_repository.py b/packages/v1/administrativo/repositories/t_censec/t_censec_show_repository.py new file mode 100644 index 0000000..dab48b7 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec/t_censec_show_repository.py @@ -0,0 +1,46 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_schema import TCensecIdSchema +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela t_censec. + """ + + def execute(self, censec_schema: TCensecIdSchema): + """ + Busca um registro específico de CENSEC pelo ID. + + Args: + censec_schema (TCensecIdSchema): O esquema que contém o ID do registro. + + 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 + sql = "SELECT * FROM T_CENSEC WHERE CENSEC_ID = :censec_id" + + # Preenchimento de parâmetros + params = { + 'censec_id': censec_schema.censec_id + } + + # Execução do SQL + result = self.fetch_one(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: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec/t_censec_update_repository.py b/packages/v1/administrativo/repositories/t_censec/t_censec_update_repository.py new file mode 100644 index 0000000..4bb6768 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec/t_censec_update_repository.py @@ -0,0 +1,61 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_schema import TCensecUpdateSchema +from fastapi import HTTPException, status + +class UpdateRepository(BaseRepository): + """ + Repositório para a operação de atualização na tabela T_CENSEC. + """ + + def execute(self, censec_id : int, censec_schema: TCensecUpdateSchema): + """ + Executa a atualização de um registro na tabela. + + Args: + censec_id (int): O ID do registro a ser atualizado. + censec_schema (TCensecUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O registro atualizado. + + Raises: + HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização. + """ + try: + updates = [] + params = {} + + if censec_schema.descricao is not None: + updates.append("DESCRICAO = :descricao") + params["descricao"] = censec_schema.descricao + + if censec_schema.situacao is not None: + updates.append("SITUACAO = :situacao") + params["situacao"] = censec_schema.situacao + + if not updates: + return False + + params["censec_id"] = censec_id + sql = f"UPDATE T_CENSEC SET {', '.join(updates)} WHERE censec_id = :censec_id RETURNING *;" + + # Executa a query + result = self.run_and_return(sql, params) + + if not result.censec_id: + # Informa que não existe o registro a ser modificado + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail='Nenhum CENSEC localizado para esta solicitação' + ) + + # Se houver um resultado, a atualização foi bem-sucedida + if result: + return result + + except Exception as e: + # Informa que houve uma falha na atualização + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao atualizar o CENSEC: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_repository.py b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_repository.py new file mode 100644 index 0000000..08b6475 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_delete_repository.py @@ -0,0 +1,41 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioIdSchema +from fastapi import HTTPException, status + +class DeleteRepository(BaseRepository): + """ + Repositório para a operação de exclusão de um registro na tabela + t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + """ + Executa a consulta SQL para remover um registro pelo ID. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioIdSchema): O esquema com o ID a ser removido. + + Returns: + O resultado da operação de exclusão. + """ + try: + # Montagem do sql + sql = """ DELETE FROM T_CENSEC_NATUREZALITIGIO WHERE CENSEC_NATUREZALITIGIO_ID = :censec_naturezalitigio_id """ + + # Preenchimento de parâmetros + params = { + "censec_naturezalitigio_id": censec_naturezalitigio_schema.censec_naturezalitigio_id + } + + # Execução do sql + response = self.run(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + # Informa que houve uma falha na exclusão + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao excluir CENSEC_NATUREZALITIGIO: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_repository.py b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_repository.py new file mode 100644 index 0000000..1f4562e --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_get_by_descricao_repository.py @@ -0,0 +1,29 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioDescricaoSchema + +class GetByDescricaoRepository(BaseRepository): + """ + Repositório para a operação de busca de um registro na tabela + t_censec_naturezalitigio por descrição. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioDescricaoSchema): + """ + Executa a consulta SQL para buscar um registro pela descrição. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + Um dicionário contendo os dados do registro ou None se não for encontrado. + """ + # Montagem do SQL + sql = """ SELECT * FROM T_CENSEC_NATUREZALITIGIO WHERE DESCRICAO = :descricao """ + + # Preenchimento de parâmetros + params = { + 'descricao': censec_naturezalitigio_schema.descricao + } + + # Execução do sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_index_repository.py b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_index_repository.py new file mode 100644 index 0000000..c0ad1e7 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_index_repository.py @@ -0,0 +1,23 @@ +from abstracts.repository import BaseRepository + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela t_censec_naturezalitigio. + """ + + def execute(self): + """ + Executa a consulta SQL para buscar todos os registros. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL + sql = """ SELECT * FROM T_CENSEC_NATUREZALITIGIO """ + + # Execução do sql + response = self.fetch_all(sql) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_save_repository.py b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_save_repository.py new file mode 100644 index 0000000..d0c954a --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_save_repository.py @@ -0,0 +1,53 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioSaveSchema + + +class SaveRepository(BaseRepository): + """ + Repositório para a operação de salvamento de um novo registro na tabela t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioSaveSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + + # Montagem do SQL + sql = """ INSERT INTO T_CENSEC_NATUREZALITIGIO( + CENSEC_NATUREZALITIGIO_ID, + DESCRICAO, + SITUACAO + ) VALUES ( + :censec_naturezalitigio_id, + :descricao, + :situacao + ) RETURNING *;""" + + # Preenchimento de parâmetros + params = { + 'censec_naturezalitigio_id': censec_naturezalitigio_schema.censec_naturezalitigio_id, + 'descricao': censec_naturezalitigio_schema.descricao, + 'situacao': censec_naturezalitigio_schema.situacao + } + + # Execução do sql + return self.run_and_return(sql, params) + + except Exception as e: + + # Informa que houve uma falha no salvamento do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar CENSEC_NATUREZALITIGIO: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_show_repository.py b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_show_repository.py new file mode 100644 index 0000000..9bc3b48 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_show_repository.py @@ -0,0 +1,46 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioIdSchema +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + """ + Busca um registro específico de CENSEC_NATUREZALITIGIO pelo ID. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioIdSchema): O esquema que contém o ID do registro. + + 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 + sql = "SELECT * FROM T_CENSEC_NATUREZALITIGIO WHERE CENSEC_NATUREZALITIGIO_ID = :censec_naturezalitigio_id" + + # Preenchimento de parâmetros + params = { + 'censec_naturezalitigio_id': censec_naturezalitigio_schema.censec_naturezalitigio_id + } + + # Execução do SQL + result = self.fetch_one(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: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_update_repository.py b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_update_repository.py new file mode 100644 index 0000000..f20c877 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_naturezalitigio/t_censec_naturezalitigio_update_repository.py @@ -0,0 +1,61 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioUpdateSchema +from fastapi import HTTPException, status + +class UpdateRepository(BaseRepository): + """ + Repositório para a operação de atualização na tabela T_CENSEC_NATUREZALITIGIO. + """ + + def execute(self, censec_naturezalitigio_id : int, censec_naturezalitigio_schema: TCensecNaturezalitigioUpdateSchema): + """ + Executa a atualização de um registro na tabela. + + Args: + censec_naturezalitigio_id (int): O ID do registro a ser atualizado. + censec_naturezalitigio_schema (TCensecNaturezalitigioUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O registro atualizado. + + Raises: + HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização. + """ + try: + updates = [] + params = {} + + if censec_naturezalitigio_schema.descricao is not None: + updates.append("DESCRICAO = :descricao") + params["descricao"] = censec_naturezalitigio_schema.descricao + + if censec_naturezalitigio_schema.situacao is not None: + updates.append("SITUACAO = :situacao") + params["situacao"] = censec_naturezalitigio_schema.situacao + + if not updates: + return False + + params["censec_naturezalitigio_id"] = censec_naturezalitigio_id + sql = f"UPDATE T_CENSEC_NATUREZALITIGIO SET {', '.join(updates)} WHERE censec_naturezalitigio_id = :censec_naturezalitigio_id RETURNING *;" + + # Executa a query + result = self.run_and_return(sql, params) + + if not result.censec_naturezalitigio_id: + # Informa que não existe o registro a ser modificado + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail='Nenhum CENSEC_NATUREZALITIGIO localizado para esta solicitação' + ) + + # Se houver um resultado, a atualização foi bem-sucedida + if result: + return result + + except Exception as e: + # Informa que houve uma falha na atualização + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao atualizar o CENSEC_NATUREZALITIGIO: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/t_censec_naturezalitigio_schema.py b/packages/v1/administrativo/schemas/t_censec_naturezalitigio_schema.py new file mode 100644 index 0000000..59287bf --- /dev/null +++ b/packages/v1/administrativo/schemas/t_censec_naturezalitigio_schema.py @@ -0,0 +1,101 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional + +# Funções para sanitização de entradas (evitar XSS, SQLi etc.) +from actions.validations.text import Text + +# ---------------------------------------------------- +# Schema base +# ---------------------------------------------------- +class TCensecNaturezalitigioSchema(BaseModel): + censec_naturezalitigio_id: Optional[int] = None + descricao: Optional[str] = None + situacao: Optional[str] = None + + class Config: + from_attributes = True + + +# ---------------------------------------------------- +# Schema para localizar um CENSEC_NATUREZALITIGIO especifico pelo ID (GET) +# ---------------------------------------------------- +class TCensecNaturezalitigioIdSchema(BaseModel): + censec_naturezalitigio_id: int + + +# ---------------------------------------------------- +# Schema para localizar um CENSEC_NATUREZALITIGIO especifico pela descrição (GET) +# ---------------------------------------------------- +class TCensecNaturezalitigioDescricaoSchema(BaseModel): + descricao: str + + +# ---------------------------------------------------- +# Schema para criação de novo CENSEC_NATUREZALITIGIO (POST) +# ---------------------------------------------------- +class TCensecNaturezalitigioSaveSchema(BaseModel): + censec_naturezalitigio_id: Optional[int] = None + descricao: str + situacao: str + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self + + +# ---------------------------------------------------- +# Schema para atualizar CENSEC_NATUREZALITIGIO (PUT) +# ---------------------------------------------------- +class TCensecNaturezalitigioUpdateSchema(BaseModel): + + descricao: Optional[str] = None + situacao: Optional[str] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/t_censec_schema.py b/packages/v1/administrativo/schemas/t_censec_schema.py new file mode 100644 index 0000000..76e462f --- /dev/null +++ b/packages/v1/administrativo/schemas/t_censec_schema.py @@ -0,0 +1,101 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional + +# Funções para sanitização de entradas (evitar XSS, SQLi etc.) +from actions.validations.text import Text + +# ---------------------------------------------------- +# Schema base +# ---------------------------------------------------- +class TCensecSchema(BaseModel): + censec_id: Optional[int] = None + descricao: Optional[str] = None + situacao: Optional[str] = None + + class Config: + from_attributes = True + + +# ---------------------------------------------------- +# Schema para localizar um CENSEC especifico pelo ID (GET) +# ---------------------------------------------------- +class TCensecIdSchema(BaseModel): + censec_id: int + + +# ---------------------------------------------------- +# Schema para localizar um CENSEC especifico pela descrição (GET) +# ---------------------------------------------------- +class TCensecDescricaoSchema(BaseModel): + descricao: str + + +# ---------------------------------------------------- +# Schema para criação de novo CENSEC (POST) +# ---------------------------------------------------- +class TCensecSaveSchema(BaseModel): + censec_id: Optional[int] = None + descricao: str + situacao: str + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self + + +# ---------------------------------------------------- +# Schema para atualizar CENSEC (PUT) +# ---------------------------------------------------- +class TCensecUpdateSchema(BaseModel): + + descricao: Optional[str] = None + situacao: Optional[str] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec/go/t_censec_delete_service.py b/packages/v1/administrativo/services/t_censec/go/t_censec_delete_service.py new file mode 100644 index 0000000..a66faf7 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec/go/t_censec_delete_service.py @@ -0,0 +1,27 @@ +from packages.v1.administrativo.schemas.t_censec_schema import TCensecIdSchema +from packages.v1.administrativo.actions.t_censec.t_censec_delete_action import DeleteAction + +class DeleteService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela t_censec. + """ + + def execute(self, censec_schema: TCensecIdSchema): + """ + Executa a operação de exclusão do registro no banco de dados. + + Args: + censec_schema (TCensecIdSchema): O esquema com o ID do registro a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento da ação + delete_action = DeleteAction() + + # Executa a ação em questão + data = delete_action.execute(censec_schema) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec/go/t_censec_get_descricao_service.py b/packages/v1/administrativo/services/t_censec/go/t_censec_get_descricao_service.py new file mode 100644 index 0000000..becac1a --- /dev/null +++ b/packages/v1/administrativo/services/t_censec/go/t_censec_get_descricao_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.t_censec_schema import TCensecDescricaoSchema +from packages.v1.administrativo.actions.t_censec.t_censec_get_by_descricao_action import GetByDescricaoAction + +class GetByDescricaoService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela t_censec pela sua descrição. + """ + + def execute(self, censec_schema: TCensecDescricaoSchema, messageValidate: bool): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_schema (TCensecDescricaoSchema): O esquema com a descrição a ser buscada. + 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 = GetByDescricaoAction() + + # Executa a ação em questão + data = show_action.execute(censec_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 registro de CENSEC' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec/go/t_censec_index_service.py b/packages/v1/administrativo/services/t_censec/go/t_censec_index_service.py new file mode 100644 index 0000000..c66ffd8 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec/go/t_censec_index_service.py @@ -0,0 +1,32 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.actions.t_censec.t_censec_index_action import IndexAction + +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela t_censec. + """ + + def execute(self): + """ + Executa a operação de busca de todos os registros no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação + index_action = IndexAction() + + # Executa a busca de todas as ações + data = index_action.execute() + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de CENSEC' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec/go/t_censec_save_service.py b/packages/v1/administrativo/services/t_censec/go/t_censec_save_service.py new file mode 100644 index 0000000..db87ea4 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec/go/t_censec_save_service.py @@ -0,0 +1,70 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema +from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService +from packages.v1.administrativo.schemas.t_censec_schema import TCensecSaveSchema, TCensecDescricaoSchema +from packages.v1.administrativo.actions.t_censec.t_censec_save_action import SaveAction +from fastapi import HTTPException, status + +class SaveService: + + def __init__(self): + # Ação responsável por carregar as services de acordo 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("t_censec") + pass + + # Cadastra o novo CENSEC + def execute(self, censec_schema: TCensecSaveSchema): + + # Armazena possíveis erros + errors = [] + + # Verifica se a descrição já está sendo utilizada + # Importação de service + descricao_service = self.dynamic_import.service("t_censec_get_descricao_service", "GetByDescricaoService") + + # Instanciamento da service + self.descricao_service = descricao_service() + + # Verifica se a descrição já está sendo utilizada + self.response = self.descricao_service.execute(TCensecDescricaoSchema(descricao=censec_schema.descricao), False) + + # Se houver retorno significa que a descrição já está sendo utilizada + if self.response: + errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'}) + + # Se houver erros, lança a exceção + if errors: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=errors + ) + + # Verifica se precisa gerar o ID de sequência + if not censec_schema.censec_id: + + # Crio um objeto de sequencia + sequencia_schema = GSequenciaSchema() + + # Define os dados para atualizar a sequencia + sequencia_schema.tabela = 'T_CENSEC' + + # Busco a sequência atualizada + generate = GenerateService() + + # Busco a sequência atualizada + sequencia = generate.execute(sequencia_schema) + + # Atualiza os dados da chave primária + censec_schema.censec_id = sequencia.sequencia + + # Instanciamento de ações + save_action = SaveAction() + + # Retorna o resultado da operação + return save_action.execute(censec_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec/go/t_censec_show_service.py b/packages/v1/administrativo/services/t_censec/go/t_censec_show_service.py new file mode 100644 index 0000000..5ad7a4e --- /dev/null +++ b/packages/v1/administrativo/services/t_censec/go/t_censec_show_service.py @@ -0,0 +1,35 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.t_censec_schema import TCensecIdSchema +from packages.v1.administrativo.actions.t_censec.t_censec_show_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_censec. + """ + + def execute(self, censec_schema: TCensecIdSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_schema (TCensecIdSchema): O esquema com o ID a ser buscado. + + Returns: + O resultado da busca. + """ + # Instanciamento da ação + show_action = ShowAction() + + # Executa a ação em questão + data = show_action.execute(censec_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 CENSEC' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec/go/t_censec_update_service.py b/packages/v1/administrativo/services/t_censec/go/t_censec_update_service.py new file mode 100644 index 0000000..4b1efe1 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec/go/t_censec_update_service.py @@ -0,0 +1,23 @@ +from packages.v1.administrativo.schemas.t_censec_schema import TCensecUpdateSchema +from packages.v1.administrativo.actions.t_censec.t_censec_update_action import UpdateAction + +class UpdateService: + """ + Serviço para a operação de atualização de um registro na tabela + t_censec. + """ + def execute(self, censec_id : int, censec_schema: TCensecUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + censec_schema (TCensecUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instanciamento de ações + update_action = UpdateAction() + + # Retorna o resultado da operação + return update_action.execute(censec_id, censec_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_delete_service.py b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_delete_service.py new file mode 100644 index 0000000..2dd4b82 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_delete_service.py @@ -0,0 +1,27 @@ +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioIdSchema +from packages.v1.administrativo.actions.t_censec_naturezalitigio.t_censec_naturezalitigio_delete_action import DeleteAction + +class DeleteService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela t_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + """ + Executa a operação de exclusão do registro no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioIdSchema): O esquema com o ID do registro a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento da ação + delete_action = DeleteAction() + + # Executa a ação em questão + data = delete_action.execute(censec_naturezalitigio_schema) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_get_descricao_service.py b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_get_descricao_service.py new file mode 100644 index 0000000..9780475 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_get_descricao_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioDescricaoSchema +from packages.v1.administrativo.actions.t_censec_naturezalitigio.t_censec_naturezalitigio_get_by_descricao_action import GetByDescricaoAction + +class GetByDescricaoService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela t_censec_naturezalitigio pela sua descrição. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioDescricaoSchema, messageValidate: bool): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioDescricaoSchema): O esquema com a descrição a ser buscada. + 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 = GetByDescricaoAction() + + # Executa a ação em questão + data = show_action.execute(censec_naturezalitigio_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 registro de CENSEC_NATUREZALITIGIO' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_index_service.py b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_index_service.py new file mode 100644 index 0000000..4b40801 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_index_service.py @@ -0,0 +1,32 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.actions.t_censec_naturezalitigio.t_censec_naturezalitigio_index_action import IndexAction + +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela t_censec_naturezalitigio. + """ + + def execute(self): + """ + Executa a operação de busca de todos os registros no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação + index_action = IndexAction() + + # Executa a busca de todas as ações + data = index_action.execute() + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de CENSEC_NATUREZALITIGIO' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_save_service.py b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_save_service.py new file mode 100644 index 0000000..8ce4882 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_save_service.py @@ -0,0 +1,70 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema +from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioSaveSchema, TCensecNaturezalitigioDescricaoSchema +from packages.v1.administrativo.actions.t_censec_naturezalitigio.t_censec_naturezalitigio_save_action import SaveAction +from fastapi import HTTPException, status + +class SaveService: + + def __init__(self): + # Ação responsável por carregar as services de acordo 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("t_censec_naturezalitigio") + pass + + # Cadastra o novo CENSEC_NATUREZALITIGIO + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioSaveSchema): + + # Armazena possíveis erros + errors = [] + + # Verifica se a descrição já está sendo utilizada + # Importação de service + descricao_service = self.dynamic_import.service("t_censec_naturezalitigio_get_descricao_service", "GetByDescricaoService") + + # Instanciamento da service + self.descricao_service = descricao_service() + + # Verifica se a descrição já está sendo utilizada + self.response = self.descricao_service.execute(TCensecNaturezalitigioDescricaoSchema(descricao=censec_naturezalitigio_schema.descricao), False) + + # Se houver retorno significa que a descrição já está sendo utilizada + if self.response: + errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'}) + + # Se houver erros, lança a exceção + if errors: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=errors + ) + + # Verifica se precisa gerar o ID de sequência + if not censec_naturezalitigio_schema.censec_naturezalitigio_id: + + # Crio um objeto de sequencia + sequencia_schema = GSequenciaSchema() + + # Define os dados para atualizar a sequencia + sequencia_schema.tabela = 'T_CENSEC_NATUREZALITIGIO' + + # Busco a sequência atualizada + generate = GenerateService() + + # Busco a sequência atualizada + sequencia = generate.execute(sequencia_schema) + + # Atualiza os dados da chave primária + censec_naturezalitigio_schema.censec_naturezalitigio_id = sequencia.sequencia + + # Instanciamento de ações + save_action = SaveAction() + + # Retorna o resultado da operação + return save_action.execute(censec_naturezalitigio_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_show_service.py b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_show_service.py new file mode 100644 index 0000000..81380ae --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_show_service.py @@ -0,0 +1,35 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioIdSchema +from packages.v1.administrativo.actions.t_censec_naturezalitigio.t_censec_naturezalitigio_show_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_censec_naturezalitigio. + """ + + def execute(self, censec_naturezalitigio_schema: TCensecNaturezalitigioIdSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioIdSchema): O esquema com o ID a ser buscado. + + Returns: + O resultado da busca. + """ + # Instanciamento da ação + show_action = ShowAction() + + # Executa a ação em questão + data = show_action.execute(censec_naturezalitigio_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 CENSEC_NATUREZALITIGIO' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_update_service.py b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_update_service.py new file mode 100644 index 0000000..b71fbad --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_naturezalitigio/go/t_censec_naturezalitigio_update_service.py @@ -0,0 +1,23 @@ +from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import TCensecNaturezalitigioUpdateSchema +from packages.v1.administrativo.actions.t_censec_naturezalitigio.t_censec_naturezalitigio_update_action import UpdateAction + +class UpdateService: + """ + Serviço para a operação de atualização de um registro na tabela + t_censec_naturezalitigio. + """ + def execute(self, censec_naturezalitigio_id : int, censec_naturezalitigio_schema: TCensecNaturezalitigioUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + censec_naturezalitigio_schema (TCensecNaturezalitigioUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instanciamento de ações + update_action = UpdateAction() + + # Retorna o resultado da operação + return update_action.execute(censec_naturezalitigio_id, censec_naturezalitigio_schema) \ No newline at end of file diff --git a/packages/v1/api.py b/packages/v1/api.py index c9d4342..c06235c 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -11,6 +11,8 @@ from packages.v1.administrativo.endpoints import t_tb_reconhecimentotipo_endpoin from packages.v1.administrativo.endpoints import t_tb_andamentoservico_endpoint from packages.v1.administrativo.endpoints import g_tb_regimecomunhao_endpoint from packages.v1.administrativo.endpoints import g_tb_regimebens_endpoint +from packages.v1.administrativo.endpoints import t_censec_endpoint +from packages.v1.administrativo.endpoints import t_censec_naturezalitigio_endpoint # Cria uma instância do APIRouter que vai agregar todas as rotas da API api_router = APIRouter() @@ -58,4 +60,16 @@ api_router.include_router( # Inclui as rotas de g_tb_regimebens api_router.include_router( g_tb_regimebens_endpoint.router, prefix="/administrativo/g_tb_regimebens", tags=["Regime de bens"] +) + + +# Inclui as rotas de t_censec +api_router.include_router( + t_censec_endpoint.router, prefix="/administrativo/t_censec", tags=["CENSEC"] +) + + +# Inclui as rotas de t_censec_naturezalitigio +api_router.include_router( + t_censec_naturezalitigio_endpoint.router, prefix="/administrativo/t_censec_naturezalitigio", tags=["CENSEC - Natureza Litígio"] ) \ No newline at end of file From f22eb5e6f1e2155a358dad463356ee1e01f4fc70 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Fri, 19 Sep 2025 11:17:46 -0300 Subject: [PATCH 2/6] =?UTF-8?q?[MVPTN-83]=20feat(CRUD):=20Cria=C3=A7=C3=A3?= =?UTF-8?q?o=20de=20CRUD=20completo=20para=20a=20tabela=20t=5Fcensec=5Fqua?= =?UTF-8?q?lidade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Orius.postman_collection.json | 380 ++++++++++++++++++ .../t_censec_qualidade_delete_action.py | 26 ++ ...ensec_qualidade_get_by_descricao_action.py | 29 ++ .../t_censec_qualidade_index_action.py | 24 ++ .../t_censec_qualidade_save_action.py | 28 ++ .../t_censec_qualidade_show_action.py | 28 ++ .../t_censec_qualidade_update_action.py | 27 ++ .../t_censec_qualidade_controller.py | 113 ++++++ .../endpoints/t_censec_qualidade_endpoint.py | 109 +++++ .../t_censec_qualidade_delete_repository.py | 41 ++ ...c_qualidade_get_by_descricao_repository.py | 29 ++ .../t_censec_qualidade_index_repository.py | 23 ++ .../t_censec_qualidade_save_repository.py | 56 +++ .../t_censec_qualidade_show_repository.py | 46 +++ .../t_censec_qualidade_update_repository.py | 65 +++ .../schemas/t_censec_qualidade_schema.py | 110 +++++ .../go/t_censec_qualidade_delete_service.py | 27 ++ ..._censec_qualidade_get_descricao_service.py | 38 ++ .../go/t_censec_qualidade_index_service.py | 32 ++ .../go/t_censec_qualidade_save_service.py | 70 ++++ .../go/t_censec_qualidade_show_service.py | 35 ++ .../go/t_censec_qualidade_update_service.py | 23 ++ packages/v1/api.py | 7 + 23 files changed, 1366 insertions(+) create mode 100644 packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_delete_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_get_by_descricao_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_index_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_save_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_show_action.py create mode 100644 packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_update_action.py create mode 100644 packages/v1/administrativo/controllers/t_censec_qualidade_controller.py create mode 100644 packages/v1/administrativo/endpoints/t_censec_qualidade_endpoint.py create mode 100644 packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_delete_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_get_by_descricao_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_index_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_save_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_show_repository.py create mode 100644 packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_update_repository.py create mode 100644 packages/v1/administrativo/schemas/t_censec_qualidade_schema.py create mode 100644 packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_delete_service.py create mode 100644 packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_get_descricao_service.py create mode 100644 packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_index_service.py create mode 100644 packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_save_service.py create mode 100644 packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_show_service.py create mode 100644 packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_update_service.py diff --git a/Orius.postman_collection.json b/Orius.postman_collection.json index d2b89c5..cd8633f 100644 --- a/Orius.postman_collection.json +++ b/Orius.postman_collection.json @@ -3415,6 +3415,382 @@ } ] }, + { + "name": "CENSEC - Qualidade", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"censecQualidadeId\", response.data.censec_qualidade_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"aceita_cnpj\": \"{{useEmail}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/descricao?descricao=RCTO - Testamentos", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "RCTO - Testamentos" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/{{censecQualidadeId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "{{censecQualidadeId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"aceita_cnpj\": \"{{useEmail}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/{{censecQualidadeId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "{{censecQualidadeId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/{{censecQualidadeId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "{{censecQualidadeId}}" + ] + } + }, + "response": [] + } + ] + }, { "name": "CENSEC - Natureza Litigio", "item": [ @@ -4768,6 +5144,10 @@ }, { "key": "censecNaturezaLitigioId", + "value": "" + }, + { + "key": "censecQualidadeId", "value": "", "type": "default" } diff --git a/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_delete_action.py b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_delete_action.py new file mode 100644 index 0000000..521d177 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_delete_action.py @@ -0,0 +1,26 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeIdSchema +from packages.v1.administrativo.repositories.t_censec_qualidade.t_censec_qualidade_delete_repository import DeleteRepository + + +class DeleteAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela t_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + """ + Executa a operação de exclusão no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento do repositório + delete_repository = DeleteRepository() + + # Execução do repositório + return delete_repository.execute(censec_qualidade_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_get_by_descricao_action.py b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_get_by_descricao_action.py new file mode 100644 index 0000000..2a69e7d --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_get_by_descricao_action.py @@ -0,0 +1,29 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeDescricaoSchema +from packages.v1.administrativo.repositories.t_censec_qualidade.t_censec_qualidade_get_by_descricao_repository import GetByDescricaoRepository + + +class GetByDescricaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela t_censec_qualidade por descrição. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeDescricaoSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento do repositório + show_repository = GetByDescricaoRepository() + + # Execução do repositório + response = show_repository.execute(censec_qualidade_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_index_action.py b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_index_action.py new file mode 100644 index 0000000..f71e26b --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_index_action.py @@ -0,0 +1,24 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.repositories.t_censec_qualidade.t_censec_qualidade_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela t_censec_qualidade. + """ + + def execute(self): + """ + Executa a operação de listagem no banco de dados. + + Returns: + A lista de todos os registros. + """ + # Instanciamento do repositório + index_repository = IndexRepository() + + # Execução do repositório + response = index_repository.execute() + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_save_action.py b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_save_action.py new file mode 100644 index 0000000..2ef8f03 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_save_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeSaveSchema +from packages.v1.administrativo.repositories.t_censec_qualidade.t_censec_qualidade_save_repository import SaveRepository + +class SaveAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvar um novo registro na tabela t_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeSaveSchema): + """ + Executa a operação de salvamento. + + Args: + censec_qualidade_schema (TCensecQualidadeSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O resultado da operação de salvamento. + """ + # Instanciamento do repositório + save_repository = SaveRepository() + + # Execução do repositório + response = save_repository.execute(censec_qualidade_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_show_action.py b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_show_action.py new file mode 100644 index 0000000..86c3fe3 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_show_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeIdSchema +from packages.v1.administrativo.repositories.t_censec_qualidade.t_censec_qualidade_show_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_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + """ + Executa a operação de exibição. + + Args: + censec_qualidade_schema (TCensecQualidadeIdSchema): O esquema com o 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(censec_qualidade_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_update_action.py b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_update_action.py new file mode 100644 index 0000000..c4e5324 --- /dev/null +++ b/packages/v1/administrativo/actions/t_censec_qualidade/t_censec_qualidade_update_action.py @@ -0,0 +1,27 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeUpdateSchema +from packages.v1.administrativo.repositories.t_censec_qualidade.t_censec_qualidade_update_repository import UpdateRepository + + +class UpdateAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a atualização + de um registro na tabela t_censec_qualidade. + """ + + def execute(self, censec_qualidade_id: int, censec_qualidade_schema: TCensecQualidadeUpdateSchema): + """ + Executa a operação de atualização. + + Args: + censec_qualidade_id (int): O ID do registro a ser atualizado. + censec_qualidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instância o repositório de atualização + update_repository = UpdateRepository() + + # Chama o método de execução do repositório para realizar a atualização + return update_repository.execute(censec_qualidade_id, censec_qualidade_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/t_censec_qualidade_controller.py b/packages/v1/administrativo/controllers/t_censec_qualidade_controller.py new file mode 100644 index 0000000..c617ad7 --- /dev/null +++ b/packages/v1/administrativo/controllers/t_censec_qualidade_controller.py @@ -0,0 +1,113 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import ( + TCensecQualidadeSchema, + TCensecQualidadeSaveSchema, + TCensecQualidadeUpdateSchema, + TCensecQualidadeIdSchema, + TCensecQualidadeDescricaoSchema +) + +class TCensecQualidadeController: + + def __init__(self): + # Action responsável por carregar as services de acordo 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("t_censec_qualidade") + pass + + # Lista todos os registros de censec_qualidade + def index(self): + + # Importação da classe desejada + indexService = self.dynamic_import.service("t_censec_qualidade_index_service", "IndexService") + + # Instância da classe service + self.indexService = indexService() + + # Lista todos os registros de censec_qualidade + return { + 'message': 'Registros de censec_qualidade localizados com sucesso', + 'data': self.indexService.execute() + } + + + # Busca um registro de censec_qualidade específico pelo ID + def show(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_censec_qualidade_show_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de censec_qualidade desejado + return { + 'message': 'Registro de censec_qualidade localizado com sucesso', + 'data': self.show_service.execute(censec_qualidade_schema) + } + + + # Busca um registro de censec_qualidade pela descrição + def get_by_descricao(self, censec_qualidade_schema: TCensecQualidadeDescricaoSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('t_censec_qualidade_get_descricao_service', 'GetByDescricaoService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de censec_qualidade desejado + return { + 'message': 'Registro de censec_qualidade localizado com sucesso', + 'data': self.show_service.execute(censec_qualidade_schema, True) + } + + + # Cadastra um novo registro de censec_qualidade + def save(self, censec_qualidade_schema: TCensecQualidadeSaveSchema): + + #Importação da classe desejada + save_service = self.dynamic_import.service('t_censec_qualidade_save_service', 'SaveService') + + # Instância da classe desejada + self.save_service = save_service() + # Busca e retorna o registro de censec_qualidade desejado + return { + 'message': 'Registro de censec_qualidade salvo com sucesso', + 'data': self.save_service.execute(censec_qualidade_schema) + } + + # Atualiza os dados de um registro de censec_qualidade + def update(self, censec_qualidade_id: int, censec_qualidade_schema: TCensecQualidadeUpdateSchema): + + #Importação da classe desejada + update_service = self.dynamic_import.service('t_censec_qualidade_update_service', 'UpdateService') + + # Instância da classe desejada + self.update_service = update_service() + + # Busca e retorna o registro de censec_qualidade desejado + return { + 'message': 'Registro de censec_qualidade atualizado com sucesso', + 'data': self.update_service.execute(censec_qualidade_id, censec_qualidade_schema) + } + + # Exclui um registro de censec_qualidade + def delete(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + + #Importação da classe desejada + delete_service = self.dynamic_import.service('t_censec_qualidade_delete_service', 'DeleteService') + + # Instância da classe desejada + self.delete_service = delete_service() + + # Busca e retorna o registro de censec_qualidade desejado + return { + 'message': 'Registro de censec_qualidade removido com sucesso', + 'data': self.delete_service.execute(censec_qualidade_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/t_censec_qualidade_endpoint.py b/packages/v1/administrativo/endpoints/t_censec_qualidade_endpoint.py new file mode 100644 index 0000000..06fc67c --- /dev/null +++ b/packages/v1/administrativo/endpoints/t_censec_qualidade_endpoint.py @@ -0,0 +1,109 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user +from packages.v1.administrativo.controllers.t_censec_qualidade_controller import TCensecQualidadeController +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import ( + TCensecQualidadeSchema, + TCensecQualidadeSaveSchema, + TCensecQualidadeUpdateSchema, + TCensecQualidadeIdSchema, + TCensecQualidadeDescricaoSchema +) + +# Inicializa o roteador para as rotas do tipo de reconhecimento +router = APIRouter() + +# Instanciamento do controller desejado +t_censec_qualidade_controller = TCensecQualidadeController() + +# Lista todos os registros de t_censec_qualidade +@router.get('/', + status_code=status.HTTP_200_OK, + summary='Lista todos os registros de t_censec_qualidade cadastrados', + response_description='Lista todos os registros de t_censec_qualidade cadastrados') +async def index(current_user: dict = Depends(get_current_user)): + + # Busca todos os registros de t_censec_qualidade cadastrados + response = t_censec_qualidade_controller.index() + + # Retorna os dados localizados + return response + + +# Localiza um registro de t_censec_qualidade pela descrição +@router.get('/descricao', + status_code=status.HTTP_200_OK, + summary='Busca um registro de t_censec_qualidade em específico pela descrição', + response_description='Busca um registro de t_censec_qualidade em específico') +async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_qualidade_schema = TCensecQualidadeSchema(descricao=descricao) + + # Busca um registro de t_censec_qualidade específico pela descrição + response = t_censec_qualidade_controller.get_by_descricao(censec_qualidade_schema) + + # Retorna os dados localizados + return response + + +# Localiza um registro de t_censec_qualidade pelo ID +@router.get('/{censec_qualidade_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de t_censec_qualidade em específico pelo ID', + response_description='Busca um registro de t_censec_qualidade em específico') +async def show(censec_qualidade_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_qualidade_schema = TCensecQualidadeIdSchema(censec_qualidade_id=censec_qualidade_id) + + # Busca um registro de t_censec_qualidade específico pelo ID + response = t_censec_qualidade_controller.show(censec_qualidade_schema) + + # Retorna os dados localizados + return response + + +# Cadastro de registro de t_censec_qualidade +@router.post('/', + status_code=status.HTTP_201_CREATED, + summary='Cadastra um registro de t_censec_qualidade', + response_description='Cadastra um registro de t_censec_qualidade') +async def save(censec_qualidade_schema: TCensecQualidadeSaveSchema, current_user: dict = Depends(get_current_user)): + + # Efetua o cadastro no banco de dados + response = t_censec_qualidade_controller.save(censec_qualidade_schema) + + # Retorna os dados localizados + return response + + +# Atualiza os dados de um registro de t_censec_qualidade +@router.put('/{censec_qualidade_id}', + status_code=status.HTTP_200_OK, + summary='Atualiza um registro de t_censec_qualidade', + response_description='Atualiza um registro de t_censec_qualidade') +async def update(censec_qualidade_id: int, censec_qualidade_schema: TCensecQualidadeUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Efetua a atualização dos dados + response = t_censec_qualidade_controller.update(censec_qualidade_id, censec_qualidade_schema) + + # Retorna os dados localizados + return response + +# Exclui um determinado registro de t_censec_qualidade +@router.delete('/{censec_qualidade_id}', + status_code=status.HTTP_200_OK, + summary='Remove um registro de t_censec_qualidade', + response_description='Remove um registro de t_censec_qualidade') +async def delete(censec_qualidade_id: int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + censec_qualidade_schema = TCensecQualidadeIdSchema(censec_qualidade_id=censec_qualidade_id) + + # Efetua a exclusão do registro de t_censec_qualidade + response = t_censec_qualidade_controller.delete(censec_qualidade_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_delete_repository.py b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_delete_repository.py new file mode 100644 index 0000000..56edc53 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_delete_repository.py @@ -0,0 +1,41 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeIdSchema +from fastapi import HTTPException, status + +class DeleteRepository(BaseRepository): + """ + Repositório para a operação de exclusão de um registro na tabela + t_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + """ + Executa a consulta SQL para remover um registro pelo ID. + + Args: + censec_qualidade_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser removido. + + Returns: + O resultado da operação de exclusão. + """ + try: + # Montagem do sql + sql = """ DELETE FROM T_CENSEC_QUALIDADE WHERE CENSEC_QUALIDADE_ID = :censec_qualidade_id """ + + # Preenchimento de parâmetros + params = { + "censec_qualidade_id": censec_qualidade_schema.censec_qualidade_id + } + + # Execução do sql + response = self.run(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + # Informa que houve uma falha na exclusão + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao excluir CENSEC_QUALIDADE: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_get_by_descricao_repository.py b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_get_by_descricao_repository.py new file mode 100644 index 0000000..7c5a490 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_get_by_descricao_repository.py @@ -0,0 +1,29 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeDescricaoSchema + +class GetByDescricaoRepository(BaseRepository): + """ + Repositório para a operação de busca de um registro na tabela + t_censec_qualidade por descrição. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeDescricaoSchema): + """ + Executa a consulta SQL para buscar um registro pela descrição. + + Args: + censec_qualidade_schema (TCensecQualidadeDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + Um dicionário contendo os dados do registro ou None se não for encontrado. + """ + # Montagem do SQL + sql = """ SELECT * FROM T_CENSEC_QUALIDADE WHERE DESCRICAO = :descricao """ + + # Preenchimento de parâmetros + params = { + 'descricao': censec_qualidade_schema.descricao + } + + # Execução do sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_index_repository.py b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_index_repository.py new file mode 100644 index 0000000..ac54029 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_index_repository.py @@ -0,0 +1,23 @@ +from abstracts.repository import BaseRepository + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela t_censec_qualidade. + """ + + def execute(self): + """ + Executa a consulta SQL para buscar todos os registros. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL + sql = """ SELECT * FROM T_CENSEC_QUALIDADE """ + + # Execução do sql + response = self.fetch_all(sql) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_save_repository.py b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_save_repository.py new file mode 100644 index 0000000..7f230ed --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_save_repository.py @@ -0,0 +1,56 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeSaveSchema + + +class SaveRepository(BaseRepository): + """ + Repositório para a operação de salvamento de um novo registro na tabela t_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeSaveSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + + # Montagem do SQL + sql = """ INSERT INTO T_CENSEC_QUALIDADE( + CENSEC_QUALIDADE_ID, + DESCRICAO, + SITUACAO, + ACEITA_CNPJ + ) VALUES ( + :censec_qualidade_id, + :descricao, + :situacao, + :aceita_cnpj + ) RETURNING *;""" + + # Preenchimento de parâmetros + params = { + 'censec_qualidade_id': censec_qualidade_schema.censec_qualidade_id, + 'descricao': censec_qualidade_schema.descricao, + 'situacao': censec_qualidade_schema.situacao, + 'aceita_cnpj': censec_qualidade_schema.aceita_cnpj + } + + # Execução do sql + return self.run_and_return(sql, params) + + except Exception as e: + + # Informa que houve uma falha no salvamento do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar CENSEC_QUALIDADE: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_show_repository.py b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_show_repository.py new file mode 100644 index 0000000..8160190 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_show_repository.py @@ -0,0 +1,46 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeIdSchema +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela t_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + """ + Busca um registro específico de CENSEC_QUALIDADE pelo ID. + + Args: + censec_qualidade_schema (TCensecQualidadeIdSchema): O esquema que contém o ID do registro. + + 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 + sql = "SELECT * FROM T_CENSEC_QUALIDADE WHERE CENSEC_QUALIDADE_ID = :censec_qualidade_id" + + # Preenchimento de parâmetros + params = { + 'censec_qualidade_id': censec_qualidade_schema.censec_qualidade_id + } + + # Execução do SQL + result = self.fetch_one(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: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_update_repository.py b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_update_repository.py new file mode 100644 index 0000000..dad2fe0 --- /dev/null +++ b/packages/v1/administrativo/repositories/t_censec_qualidade/t_censec_qualidade_update_repository.py @@ -0,0 +1,65 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeUpdateSchema +from fastapi import HTTPException, status + +class UpdateRepository(BaseRepository): + """ + Repositório para a operação de atualização na tabela T_CENSEC_QUALIDADE. + """ + + def execute(self, censec_qualidade_id : int, censec_qualidade_schema: TCensecQualidadeUpdateSchema): + """ + Executa a atualização de um registro na tabela. + + Args: + censec_qualidade_id (int): O ID do registro a ser atualizado. + censec_qualidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O registro atualizado. + + Raises: + HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização. + """ + try: + updates = [] + params = {} + + if censec_qualidade_schema.descricao is not None: + updates.append("DESCRICAO = :descricao") + params["descricao"] = censec_qualidade_schema.descricao + + if censec_qualidade_schema.situacao is not None: + updates.append("SITUACAO = :situacao") + params["situacao"] = censec_qualidade_schema.situacao + + if censec_qualidade_schema.aceita_cnpj is not None: + updates.append("ACEITA_CNPJ = :aceita_cnpj") + params["aceita_cnpj"] = censec_qualidade_schema.aceita_cnpj + + if not updates: + return False + + params["censec_qualidade_id"] = censec_qualidade_id + sql = f"UPDATE T_CENSEC_QUALIDADE SET {', '.join(updates)} WHERE censec_qualidade_id = :censec_qualidade_id RETURNING *;" + + # Executa a query + result = self.run_and_return(sql, params) + + if not result.censec_qualidade_id: + # Informa que não existe o registro a ser modificado + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail='Nenhum CENSEC_QUALIDADE localizado para esta solicitação' + ) + + # Se houver um resultado, a atualização foi bem-sucedida + if result: + return result + + except Exception as e: + # Informa que houve uma falha na atualização + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao atualizar o CENSEC_QUALIDADE: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/t_censec_qualidade_schema.py b/packages/v1/administrativo/schemas/t_censec_qualidade_schema.py new file mode 100644 index 0000000..43843ed --- /dev/null +++ b/packages/v1/administrativo/schemas/t_censec_qualidade_schema.py @@ -0,0 +1,110 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional + +# Funções para sanitização de entradas (evitar XSS, SQLi etc.) +from actions.validations.text import Text + +# ---------------------------------------------------- +# Schema base +# ---------------------------------------------------- +class TCensecQualidadeSchema(BaseModel): + censec_qualidade_id: Optional[int] = None + descricao: Optional[str] = None + situacao: Optional[str] = None + aceita_cnpj: Optional[str] = None + + class Config: + from_attributes = True + + +# ---------------------------------------------------- +# Schema para localizar um CENSEC_QUALIDADE especifico pelo ID (GET) +# ---------------------------------------------------- +class TCensecQualidadeIdSchema(BaseModel): + censec_qualidade_id: int + + +# ---------------------------------------------------- +# Schema para localizar um CENSEC_QUALIDADE especifico pela descrição (GET) +# ---------------------------------------------------- +class TCensecQualidadeDescricaoSchema(BaseModel): + descricao: str + + +# ---------------------------------------------------- +# Schema para criação de novo CENSEC_QUALIDADE (POST) +# ---------------------------------------------------- +class TCensecQualidadeSaveSchema(BaseModel): + censec_qualidade_id: Optional[int] = None + descricao: str + situacao: str + aceita_cnpj: str + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao', 'aceita_cnpj') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if not self.aceita_cnpj or len(self.aceita_cnpj.strip()) == 0: + errors.append({'input': 'aceita_cnpj', 'message': 'O campo aceita_cnpj é obrigatório.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self + + +# ---------------------------------------------------- +# Schema para atualizar CENSEC_QUALIDADE (PUT) +# ---------------------------------------------------- +class TCensecQualidadeUpdateSchema(BaseModel): + + descricao: Optional[str] = None + situacao: Optional[str] = None + aceita_cnpj: Optional[str] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao', 'aceita_cnpj') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if self.descricao is not None and len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if self.situacao is not None and len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if self.aceita_cnpj is not None and len(self.aceita_cnpj.strip()) == 0: + errors.append({'input': 'aceita_cnpj', 'message': 'O campo aceita_cnpj é obrigatório.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_delete_service.py b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_delete_service.py new file mode 100644 index 0000000..25f731a --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_delete_service.py @@ -0,0 +1,27 @@ +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeIdSchema +from packages.v1.administrativo.actions.t_censec_qualidade.t_censec_qualidade_delete_action import DeleteAction + +class DeleteService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela t_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + """ + Executa a operação de exclusão do registro no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeIdSchema): O esquema com o ID do registro a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento da ação + delete_action = DeleteAction() + + # Executa a ação em questão + data = delete_action.execute(censec_qualidade_schema) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_get_descricao_service.py b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_get_descricao_service.py new file mode 100644 index 0000000..26dd68a --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_get_descricao_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeDescricaoSchema +from packages.v1.administrativo.actions.t_censec_qualidade.t_censec_qualidade_get_by_descricao_action import GetByDescricaoAction + +class GetByDescricaoService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela t_censec_qualidade pela sua descrição. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeDescricaoSchema, messageValidate: bool): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeDescricaoSchema): O esquema com a descrição a ser buscada. + 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 = GetByDescricaoAction() + + # Executa a ação em questão + data = show_action.execute(censec_qualidade_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 registro de CENSEC_QUALIDADE' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_index_service.py b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_index_service.py new file mode 100644 index 0000000..483696a --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_index_service.py @@ -0,0 +1,32 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.actions.t_censec_qualidade.t_censec_qualidade_index_action import IndexAction + +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela t_censec_qualidade. + """ + + def execute(self): + """ + Executa a operação de busca de todos os registros no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação + index_action = IndexAction() + + # Executa a busca de todas as ações + data = index_action.execute() + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de CENSEC_QUALIDADE' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_save_service.py b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_save_service.py new file mode 100644 index 0000000..20a27b3 --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_save_service.py @@ -0,0 +1,70 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema +from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeSaveSchema, TCensecQualidadeDescricaoSchema +from packages.v1.administrativo.actions.t_censec_qualidade.t_censec_qualidade_save_action import SaveAction +from fastapi import HTTPException, status + +class SaveService: + + def __init__(self): + # Ação responsável por carregar as services de acordo 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("t_censec_qualidade") + pass + + # Cadastra o novo CENSEC_QUALIDADE + def execute(self, censec_qualidade_schema: TCensecQualidadeSaveSchema): + + # Armazena possíveis erros + errors = [] + + # Verifica se a descrição já está sendo utilizada + # Importação de service + descricao_service = self.dynamic_import.service("t_censec_qualidade_get_descricao_service", "GetByDescricaoService") + + # Instanciamento da service + self.descricao_service = descricao_service() + + # Verifica se a descrição já está sendo utilizada + self.response = self.descricao_service.execute(TCensecQualidadeDescricaoSchema(descricao=censec_qualidade_schema.descricao), False) + + # Se houver retorno significa que a descrição já está sendo utilizada + if self.response: + errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'}) + + # Se houver erros, lança a exceção + if errors: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=errors + ) + + # Verifica se precisa gerar o ID de sequência + if not censec_qualidade_schema.censec_qualidade_id: + + # Crio um objeto de sequencia + sequencia_schema = GSequenciaSchema() + + # Define os dados para atualizar a sequencia + sequencia_schema.tabela = 'T_CENSEC_QUALIDADE' + + # Busco a sequência atualizada + generate = GenerateService() + + # Busco a sequência atualizada + sequencia = generate.execute(sequencia_schema) + + # Atualiza os dados da chave primária + censec_qualidade_schema.censec_qualidade_id = sequencia.sequencia + + # Instanciamento de ações + save_action = SaveAction() + + # Retorna o resultado da operação + return save_action.execute(censec_qualidade_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_show_service.py b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_show_service.py new file mode 100644 index 0000000..63f8f1a --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_show_service.py @@ -0,0 +1,35 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeIdSchema +from packages.v1.administrativo.actions.t_censec_qualidade.t_censec_qualidade_show_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_censec_qualidade. + """ + + def execute(self, censec_qualidade_schema: TCensecQualidadeIdSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser buscado. + + Returns: + O resultado da busca. + """ + # Instanciamento da ação + show_action = ShowAction() + + # Executa a ação em questão + data = show_action.execute(censec_qualidade_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 CENSEC_QUALIDADE' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_update_service.py b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_update_service.py new file mode 100644 index 0000000..f6a98fb --- /dev/null +++ b/packages/v1/administrativo/services/t_censec_qualidade/go/t_censec_qualidade_update_service.py @@ -0,0 +1,23 @@ +from packages.v1.administrativo.schemas.t_censec_qualidade_schema import TCensecQualidadeUpdateSchema +from packages.v1.administrativo.actions.t_censec_qualidade.t_censec_qualidade_update_action import UpdateAction + +class UpdateService: + """ + Serviço para a operação de atualização de um registro na tabela + t_censec_qualidade. + """ + def execute(self, censec_qualidade_id: int, censec_qualidade_schema: TCensecQualidadeUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + censec_qualidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instanciamento de ações + update_action = UpdateAction() + + # Retorna o resultado da operação + return update_action.execute(censec_qualidade_id, censec_qualidade_schema) \ No newline at end of file diff --git a/packages/v1/api.py b/packages/v1/api.py index c06235c..1b392e4 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -13,6 +13,7 @@ from packages.v1.administrativo.endpoints import g_tb_regimecomunhao_endpoint from packages.v1.administrativo.endpoints import g_tb_regimebens_endpoint from packages.v1.administrativo.endpoints import t_censec_endpoint from packages.v1.administrativo.endpoints import t_censec_naturezalitigio_endpoint +from packages.v1.administrativo.endpoints import t_censec_qualidade_endpoint # Cria uma instância do APIRouter que vai agregar todas as rotas da API api_router = APIRouter() @@ -72,4 +73,10 @@ api_router.include_router( # Inclui as rotas de t_censec_naturezalitigio api_router.include_router( t_censec_naturezalitigio_endpoint.router, prefix="/administrativo/t_censec_naturezalitigio", tags=["CENSEC - Natureza Litígio"] +) + + +# Inclui as rotas de t_censec_qualidade +api_router.include_router( + t_censec_qualidade_endpoint.router, prefix="/administrativo/t_censec_qualidade", tags=["CENSEC - Qualidade"] ) \ No newline at end of file From 65108ad8aaeac771e505c5ba902638eb59b408d5 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Fri, 19 Sep 2025 12:18:10 -0300 Subject: [PATCH 3/6] [MVPTN-8] feat(CRUD): CRUD completo para a tabela g_tb_bairro --- Orius.postman_collection.json | 760 ++++++++++++++++++ .../g_tb_bairro/g_tb_bairro_delete_action.py | 26 + .../g_tb_bairro_get_by_descricao_action.py | 29 + .../g_tb_bairro/g_tb_bairro_index_action.py | 24 + .../g_tb_bairro/g_tb_bairro_save_action.py | 28 + .../g_tb_bairro/g_tb_bairro_show_action.py | 28 + .../g_tb_bairro/g_tb_bairro_update_action.py | 26 + .../controllers/g_tb_bairro_controller.py | 114 +++ .../endpoints/g_tb_bairro_endpoint.py | 108 +++ .../g_tb_bairro_delete_repository.py | 41 + ...g_tb_bairro_get_by_descricao_repository.py | 29 + .../g_tb_bairro_index_repository.py | 23 + .../g_tb_bairro_save_repository.py | 56 ++ .../g_tb_bairro_show_repository.py | 46 ++ .../g_tb_bairro_update_repository.py | 53 ++ .../schemas/g_tb_bairro_schema.py | 102 +++ .../go/g_tb_bairro_delete_service.py | 27 + .../go/g_tb_bairro_get_descricao_service.py | 38 + .../go/g_tb_bairro_index_service.py | 32 + .../go/g_tb_bairro_save_service.py | 70 ++ .../go/g_tb_bairro_show_service.py | 35 + .../go/g_tb_bairro_update_service.py | 24 + packages/v1/api.py | 7 + 23 files changed, 1726 insertions(+) create mode 100644 packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_delete_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_get_by_descricao_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_index_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_save_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_show_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_update_action.py create mode 100644 packages/v1/administrativo/controllers/g_tb_bairro_controller.py create mode 100644 packages/v1/administrativo/endpoints/g_tb_bairro_endpoint.py create mode 100644 packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_delete_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_get_by_descricao_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_index_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_save_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_show_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_update_repository.py create mode 100644 packages/v1/administrativo/schemas/g_tb_bairro_schema.py create mode 100644 packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_delete_service.py create mode 100644 packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_get_descricao_service.py create mode 100644 packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_index_service.py create mode 100644 packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_save_service.py create mode 100644 packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_show_service.py create mode 100644 packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_update_service.py diff --git a/Orius.postman_collection.json b/Orius.postman_collection.json index d2b89c5..ba3fd15 100644 --- a/Orius.postman_collection.json +++ b/Orius.postman_collection.json @@ -3415,6 +3415,758 @@ } ] }, + { + "name": "CENSEC - Qualidade", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"censecQualidadeId\", response.data.censec_qualidade_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"aceita_cnpj\": \"{{useEmail}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/descricao?descricao=OUTORGANTE", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "OUTORGANTE" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/{{censecQualidadeId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "{{censecQualidadeId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"aceita_cnpj\": \"{{useEmail}}\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/{{censecQualidadeId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "{{censecQualidadeId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/{{censecQualidadeId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "t_censec_qualidade", + "{{censecQualidadeId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "CENSEC - Bairro", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbBairroId\", response.data.tb_bairro_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/descricao?descricao=BAIRRO PRIMAVERA II", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "BAIRRO PRIMAVERA II" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/{{tbBairroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "{{tbBairroId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/{{tbBairroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "{{tbBairroId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/{{tbBairroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "{{tbBairroId}}" + ] + } + }, + "response": [] + } + ] + }, { "name": "CENSEC - Natureza Litigio", "item": [ @@ -4768,6 +5520,14 @@ }, { "key": "censecNaturezaLitigioId", + "value": "" + }, + { + "key": "censecQualidadeId", + "value": "" + }, + { + "key": "tbBairroId", "value": "", "type": "default" } diff --git a/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_delete_action.py b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_delete_action.py new file mode 100644 index 0000000..2275a17 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_delete_action.py @@ -0,0 +1,26 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroIdSchema +from packages.v1.administrativo.repositories.g_tb_bairro.g_tb_bairro_delete_repository import DeleteRepository + + +class DeleteAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroIdSchema): + """ + Executa a operação de exclusão no banco de dados. + + Args: + bairro_schema (GTbBairroIdSchema): O esquema com o ID a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento do repositório + delete_repository = DeleteRepository() + + # Execução do repositório + return delete_repository.execute(bairro_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_get_by_descricao_action.py b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_get_by_descricao_action.py new file mode 100644 index 0000000..d4bd14d --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_get_by_descricao_action.py @@ -0,0 +1,29 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroDescricaoSchema +from packages.v1.administrativo.repositories.g_tb_bairro.g_tb_bairro_get_by_descricao_repository import GetByDescricaoRepository + + +class GetByDescricaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela g_tb_bairro por descrição. + """ + + def execute(self, bairro_schema: GTbBairroDescricaoSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + bairro_schema (GTbBairroDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento do repositório + show_repository = GetByDescricaoRepository() + + # Execução do repositório + response = show_repository.execute(bairro_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_index_action.py b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_index_action.py new file mode 100644 index 0000000..c1c4cb4 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_index_action.py @@ -0,0 +1,24 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.repositories.g_tb_bairro.g_tb_bairro_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela g_tb_bairro. + """ + + def execute(self): + """ + Executa a operação de listagem no banco de dados. + + Returns: + A lista de todos os registros. + """ + # Instanciamento do repositório + index_repository = IndexRepository() + + # Execução do repositório + response = index_repository.execute() + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_save_action.py b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_save_action.py new file mode 100644 index 0000000..f1df840 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_save_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroSaveSchema +from packages.v1.administrativo.repositories.g_tb_bairro.g_tb_bairro_save_repository import SaveRepository + +class SaveAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvar um novo registro na tabela g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroSaveSchema): + """ + Executa a operação de salvamento. + + Args: + bairro_schema (GTbBairroSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O resultado da operação de salvamento. + """ + # Instanciamento do repositório + save_repository = SaveRepository() + + # Execução do repositório + response = save_repository.execute(bairro_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_show_action.py b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_show_action.py new file mode 100644 index 0000000..61d54c9 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_show_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroIdSchema +from packages.v1.administrativo.repositories.g_tb_bairro.g_tb_bairro_show_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 g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroIdSchema): + """ + Executa a operação de exibição. + + Args: + bairro_schema (GTbBairroIdSchema): O esquema com o 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(bairro_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_update_action.py b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_update_action.py new file mode 100644 index 0000000..5ace2d7 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_bairro/g_tb_bairro_update_action.py @@ -0,0 +1,26 @@ +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroUpdateSchema +from packages.v1.administrativo.repositories.g_tb_bairro.g_tb_bairro_update_repository import UpdateRepository + + +class UpdateAction: + """ + Service responsável por encapsular a lógica de negócio para a atualização + de um registro na tabela g_tb_bairro. + """ + + def execute(self, tb_bairro_id: int, bairro_schema: GTbBairroUpdateSchema): + """ + Executa a operação de atualização. + + Args: + tb_bairro_id (int): O ID do registro a ser atualizado. + bairro_schema (GTbBairroUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instância o repositório de atualização + update_repository = UpdateRepository() + + # Chama o método de execução do repositório para realizar a atualização + return update_repository.execute(tb_bairro_id, bairro_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/g_tb_bairro_controller.py b/packages/v1/administrativo/controllers/g_tb_bairro_controller.py new file mode 100644 index 0000000..b736102 --- /dev/null +++ b/packages/v1/administrativo/controllers/g_tb_bairro_controller.py @@ -0,0 +1,114 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.administrativo.schemas.g_tb_bairro_schema import ( + GTbBairroSchema, + GTbBairroSaveSchema, + GTbBairroUpdateSchema, + GTbBairroIdSchema, + GTbBairroDescricaoSchema +) + + +class GTbBairroController: + + def __init__(self): + # Action responsável por carregar as services de acordo 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("g_tb_bairro") + pass + + # Lista todos os registros de g_tb_bairro + def index(self): + + # Importação da classe desejada + indexService = self.dynamic_import.service("g_tb_bairro_index_service", "IndexService") + + # Instância da classe service + self.indexService = indexService() + + # Lista todos os registros de g_tb_bairro + return { + 'message': 'Registros de bairro localizados com sucesso', + 'data': self.indexService.execute() + } + + + # Busca um registro de g_tb_bairro específico pelo ID + def show(self, bairro_schema: GTbBairroIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('g_tb_bairro_show_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de g_tb_bairro desejado + return { + 'message': 'Registro de bairro localizado com sucesso', + 'data': self.show_service.execute(bairro_schema) + } + + + # Busca um registro de g_tb_bairro pela descrição + def get_by_descricao(self, bairro_schema: GTbBairroDescricaoSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('g_tb_bairro_get_descricao_service', 'GetByDescricaoService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de g_tb_bairro desejado + return { + 'message': 'Registro de bairro localizado com sucesso', + 'data': self.show_service.execute(bairro_schema, True) + } + + + # Cadastra um novo registro de g_tb_bairro + def save(self, bairro_schema: GTbBairroSaveSchema): + + #Importação da classe desejada + save_service = self.dynamic_import.service('g_tb_bairro_save_service', 'SaveService') + + # Instância da classe desejada + self.save_service = save_service() + # Busca e retorna o registro de g_tb_bairro desejado + return { + 'message': 'Registro de bairro salvo com sucesso', + 'data': self.save_service.execute(bairro_schema) + } + + # Atualiza os dados de um registro de g_tb_bairro + def update(self, tb_bairro_id: int, bairro_schema: GTbBairroUpdateSchema): + + #Importação da classe desejada + update_service = self.dynamic_import.service('g_tb_bairro_update_service', 'UpdateService') + + # Instância da classe desejada + self.update_service = update_service() + + # Busca e retorna o registro de g_tb_bairro desejado + return { + 'message': 'Registro de bairro atualizado com sucesso', + 'data': self.update_service.execute(tb_bairro_id, bairro_schema) + } + + # Exclui um registro de g_tb_bairro + def delete(self, bairro_schema: GTbBairroIdSchema): + + #Importação da classe desejada + delete_service = self.dynamic_import.service('g_tb_bairro_delete_service', 'DeleteService') + + # Instância da classe desejada + self.delete_service = delete_service() + + # Busca e retorna o registro de g_tb_bairro desejado + return { + 'message': 'Registro de bairro removido com sucesso', + 'data': self.delete_service.execute(bairro_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/g_tb_bairro_endpoint.py b/packages/v1/administrativo/endpoints/g_tb_bairro_endpoint.py new file mode 100644 index 0000000..fbb77a3 --- /dev/null +++ b/packages/v1/administrativo/endpoints/g_tb_bairro_endpoint.py @@ -0,0 +1,108 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user +from packages.v1.administrativo.controllers.g_tb_bairro_controller import GTbBairroController +from packages.v1.administrativo.schemas.g_tb_bairro_schema import ( + GTbBairroSchema, + GTbBairroSaveSchema, + GTbBairroUpdateSchema, + GTbBairroIdSchema +) + +# Inicializa o roteador para as rotas do tipo de reconhecimento +router = APIRouter() + +# Instanciamento do controller desejado +g_tb_bairro_controller = GTbBairroController() + +# Lista todos os registros de bairro +@router.get('/', + status_code=status.HTTP_200_OK, + summary='Lista todos os registros de bairro cadastrados', + response_description='Lista todos os registros de bairro cadastrados') +async def index(current_user: dict = Depends(get_current_user)): + + # Busca todos os registros de bairro cadastrados + response = g_tb_bairro_controller.index() + + # Retorna os dados localizados + return response + + +# Localiza um registro de bairro pela descrição +@router.get('/descricao', + status_code=status.HTTP_200_OK, + summary='Busca um registro de bairro em específico pela descrição', + response_description='Busca um registro de bairro em específico') +async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + bairro_schema = GTbBairroSchema(descricao=descricao) + + # Busca um registro de bairro específico pela descrição + response = g_tb_bairro_controller.get_by_descricao(bairro_schema) + + # Retorna os dados localizados + return response + + +# Localiza um registro de bairro pelo ID +@router.get('/{tb_bairro_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de bairro em específico pelo ID', + response_description='Busca um registro de bairro em específico') +async def show(tb_bairro_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + bairro_schema = GTbBairroIdSchema(tb_bairro_id=tb_bairro_id) + + # Busca um registro de bairro específico pelo ID + response = g_tb_bairro_controller.show(bairro_schema) + + # Retorna os dados localizados + return response + + +# Cadastro de registro de bairro +@router.post('/', + status_code=status.HTTP_201_CREATED, + summary='Cadastra um registro de bairro', + response_description='Cadastra um registro de bairro') +async def save(bairro_schema: GTbBairroSaveSchema, current_user: dict = Depends(get_current_user)): + + # Efetua o cadastro no banco de dados + response = g_tb_bairro_controller.save(bairro_schema) + + # Retorna os dados localizados + return response + + +# Atualiza os dados de um registro de bairro +@router.put('/{tb_bairro_id}', + status_code=status.HTTP_200_OK, + summary='Atualiza um registro de bairro', + response_description='Atualiza um registro de bairro') +async def update(tb_bairro_id: int, bairro_schema: GTbBairroUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Efetua a atualização dos dados + response = g_tb_bairro_controller.update(tb_bairro_id, bairro_schema) + + # Retorna os dados localizados + return response + +# Exclui um determinado registro de bairro +@router.delete('/{tb_bairro_id}', + status_code=status.HTTP_200_OK, + summary='Remove um registro de bairro', + response_description='Remove um registro de bairro') +async def delete(tb_bairro_id: int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + bairro_schema = GTbBairroIdSchema(tb_bairro_id=tb_bairro_id) + + # Efetua a exclusão do registro de bairro + response = g_tb_bairro_controller.delete(bairro_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_delete_repository.py b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_delete_repository.py new file mode 100644 index 0000000..561b246 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_delete_repository.py @@ -0,0 +1,41 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroIdSchema +from fastapi import HTTPException, status + +class DeleteRepository(BaseRepository): + """ + Repositório para a operação de exclusão de um registro na tabela + g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroIdSchema): + """ + Executa a consulta SQL para remover um registro pelo ID. + + Args: + bairro_schema (GTbBairroIdSchema): O esquema com o ID a ser removido. + + Returns: + O resultado da operação de exclusão. + """ + try: + # Montagem do sql + sql = """ DELETE FROM G_TB_BAIRRO WHERE TB_BAIRRO_ID = :tb_bairro_id """ + + # Preenchimento de parâmetros + params = { + "tb_bairro_id": bairro_schema.tb_bairro_id + } + + # Execução do sql + response = self.run(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + # Informa que houve uma falha na exclusão + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao excluir o Bairro: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_get_by_descricao_repository.py b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_get_by_descricao_repository.py new file mode 100644 index 0000000..b5fa991 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_get_by_descricao_repository.py @@ -0,0 +1,29 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroDescricaoSchema + +class GetByDescricaoRepository(BaseRepository): + """ + Repositório para a operação de busca de um registro na tabela + g_tb_bairro por descrição. + """ + + def execute(self, bairro_schema: GTbBairroDescricaoSchema): + """ + Executa a consulta SQL para buscar um registro pela descrição. + + Args: + bairro_schema (GTbBairroDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + Um dicionário contendo os dados do registro ou None se não for encontrado. + """ + # Montagem do SQL + sql = """ SELECT * FROM G_TB_BAIRRO WHERE DESCRICAO = :descricao """ + + # Preenchimento de parâmetros + params = { + 'descricao': bairro_schema.descricao + } + + # Execução do sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_index_repository.py b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_index_repository.py new file mode 100644 index 0000000..aba50a8 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_index_repository.py @@ -0,0 +1,23 @@ +from abstracts.repository import BaseRepository + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela g_tb_bairro. + """ + + def execute(self): + """ + Executa a consulta SQL para buscar todos os registros. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL + sql = """ SELECT * FROM G_TB_BAIRRO """ + + # Execução do sql + response = self.fetch_all(sql) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_save_repository.py b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_save_repository.py new file mode 100644 index 0000000..c6c601c --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_save_repository.py @@ -0,0 +1,56 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroSaveSchema + + +class SaveRepository(BaseRepository): + """ + Repositório para a operação de salvamento de um novo registro na tabela g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroSaveSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + bairro_schema (GTbBairroSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + + # Montagem do SQL + sql = """ INSERT INTO G_TB_BAIRRO( + TB_BAIRRO_ID, + DESCRICAO, + SITUACAO, + SISTEMA_ID + ) VALUES ( + :tb_bairro_id, + :descricao, + :situacao, + :sistema_id + ) RETURNING *;""" + + # Preenchimento de parâmetros + params = { + 'tb_bairro_id': bairro_schema.tb_bairro_id, + 'descricao': bairro_schema.descricao, + 'situacao': bairro_schema.situacao, + 'sistema_id': bairro_schema.sistema_id + } + + # Execução do sql + return self.run_and_return(sql, params) + + except Exception as e: + + # Informa que houve uma falha no salvamento do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar o Bairro: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_show_repository.py b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_show_repository.py new file mode 100644 index 0000000..37cc191 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_show_repository.py @@ -0,0 +1,46 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroIdSchema +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroIdSchema): + """ + Busca um registro específico de Bairro pelo ID. + + Args: + bairro_schema (GTbBairroIdSchema): O esquema que contém o ID do registro. + + 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 + sql = "SELECT * FROM G_TB_BAIRRO WHERE TB_BAIRRO_ID = :tb_bairro_id" + + # Preenchimento de parâmetros + params = { + 'tb_bairro_id': bairro_schema.tb_bairro_id + } + + # Execução do SQL + result = self.fetch_one(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: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_update_repository.py b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_update_repository.py new file mode 100644 index 0000000..d44ea36 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_bairro/g_tb_bairro_update_repository.py @@ -0,0 +1,53 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroUpdateSchema + + +class UpdateRepository(BaseRepository): + """ + Repositório para a operação de atualização de um registro na tabela + g_tb_bairro. + """ + + def execute(self, tb_bairro_id: int, bairro_schema: GTbBairroUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + tb_bairro_id (int): O ID do registro a ser atualizado. + bairro_schema (GTbBairroUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + try: + # Montagem do SQL + sql = """ UPDATE G_TB_BAIRRO SET + DESCRICAO = :descricao, + SITUACAO = :situacao, + SISTEMA_ID = :sistema_id + WHERE + TB_BAIRRO_ID = :tb_bairro_id + RETURNING * """ + + # Preenchimento de parâmetros + params = { + 'tb_bairro_id': tb_bairro_id, + 'descricao': bairro_schema.descricao, + 'situacao': bairro_schema.situacao, + 'sistema_id': bairro_schema.sistema_id + } + + # Execução do sql + response = self.run_and_return(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + + # Informa que houve uma falha na atualização do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao atualizar o Bairro: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/g_tb_bairro_schema.py b/packages/v1/administrativo/schemas/g_tb_bairro_schema.py new file mode 100644 index 0000000..20469d5 --- /dev/null +++ b/packages/v1/administrativo/schemas/g_tb_bairro_schema.py @@ -0,0 +1,102 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional + +# Funções para sanitização de entradas (evitar XSS, SQLi etc.) +from actions.validations.text import Text + + +# ---------------------------------------------------- +# Schema base +# ---------------------------------------------------- +class GTbBairroSchema(BaseModel): + tb_bairro_id: Optional[int] = None + descricao: Optional[str] = None + situacao: Optional[str] = None + sistema_id: Optional[int] = None + + class Config: + from_attributes = True + + +# ---------------------------------------------------- +# Schema para localizar um Bairro especifico pelo ID (GET) +# ---------------------------------------------------- +class GTbBairroIdSchema(BaseModel): + tb_bairro_id: int + + +# ---------------------------------------------------- +# Schema para localizar um Bairro especifico pela descrição (GET) +# ---------------------------------------------------- +class GTbBairroDescricaoSchema(BaseModel): + descricao: str + + +# ---------------------------------------------------- +# Schema para criação de novo Bairro (POST) +# ---------------------------------------------------- +class GTbBairroSaveSchema(BaseModel): + tb_bairro_id: Optional[int] = None + descricao: str + situacao: str + sistema_id: Optional[int] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self + + +# ---------------------------------------------------- +# Schema para atualizar Bairro (PUT) +# ---------------------------------------------------- +class GTbBairroUpdateSchema(BaseModel): + + descricao: Optional[str] = None + situacao: Optional[str] = None + sistema_id: Optional[int] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao and not self.situacao: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória para a atualização.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_delete_service.py b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_delete_service.py new file mode 100644 index 0000000..e9e1b54 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_delete_service.py @@ -0,0 +1,27 @@ +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroIdSchema +from packages.v1.administrativo.actions.g_tb_bairro.g_tb_bairro_delete_action import DeleteAction + +class DeleteService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroIdSchema): + """ + Executa a operação de exclusão do registro no banco de dados. + + Args: + bairro_schema (GTbBairroIdSchema): O esquema com o ID do registro a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento da ação + delete_action = DeleteAction() + + # Executa a ação em questão + data = delete_action.execute(bairro_schema) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_get_descricao_service.py b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_get_descricao_service.py new file mode 100644 index 0000000..80eea91 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_get_descricao_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroDescricaoSchema +from packages.v1.administrativo.actions.g_tb_bairro.g_tb_bairro_get_by_descricao_action import GetByDescricaoAction + +class GetByDescricaoService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela g_tb_bairro pela sua descrição. + """ + + def execute(self, bairro_schema: GTbBairroDescricaoSchema, messageValidate: bool): + """ + Executa a operação de busca no banco de dados. + + Args: + bairro_schema (GTbBairroDescricaoSchema): O esquema com a descrição a ser buscada. + 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 = GetByDescricaoAction() + + # Executa a ação em questão + data = show_action.execute(bairro_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 registro de Bairro' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_index_service.py b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_index_service.py new file mode 100644 index 0000000..8d27ce8 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_index_service.py @@ -0,0 +1,32 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.actions.g_tb_bairro.g_tb_bairro_index_action import IndexAction + +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela g_tb_bairro. + """ + + def execute(self): + """ + Executa a operação de busca de todos os registros no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação + index_action = IndexAction() + + # Executa a busca de todas as ações + data = index_action.execute() + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de Bairro' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_save_service.py b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_save_service.py new file mode 100644 index 0000000..4a1175c --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_save_service.py @@ -0,0 +1,70 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema +from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroSaveSchema, GTbBairroDescricaoSchema +from packages.v1.administrativo.actions.g_tb_bairro.g_tb_bairro_save_action import SaveAction +from fastapi import HTTPException, status + +class SaveService: + + def __init__(self): + # Ação responsável por carregar as services de acordo 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("g_tb_bairro") + pass + + # Cadastra o novo Bairro + def execute(self, bairro_schema: GTbBairroSaveSchema): + + # Armazena possíveis erros + errors = [] + + # Verifica se a descrição já está sendo utilizada + # Importação de service + descricao_service = self.dynamic_import.service("g_tb_bairro_get_descricao_service", "GetByDescricaoService") + + # Instanciamento da service + self.descricao_service = descricao_service() + + # Verifica se a descrição já está sendo utilizada + self.response = self.descricao_service.execute(GTbBairroDescricaoSchema(descricao=bairro_schema.descricao), False) + + # Se houver retorno significa que a descrição já está sendo utilizada + if self.response: + errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'}) + + # Se houver erros, lança a exceção + if errors: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=errors + ) + + # Verifica se precisa gerar o ID de sequência + if not bairro_schema.tb_bairro_id: + + # Crio um objeto de sequencia + sequencia_schema = GSequenciaSchema() + + # Define os dados para atualizar a sequencia + sequencia_schema.tabela = 'G_TB_BAIRRO' + + # Busco a sequência atualizada + generate = GenerateService() + + # Busco a sequência atualizada + sequencia = generate.execute(sequencia_schema) + + # Atualiza os dados da chave primária + bairro_schema.tb_bairro_id = sequencia.sequencia + + # Instanciamento de ações + save_action = SaveAction() + + # Retorna o resultado da operação + return save_action.execute(bairro_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_show_service.py b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_show_service.py new file mode 100644 index 0000000..83a63cb --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_show_service.py @@ -0,0 +1,35 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroIdSchema +from packages.v1.administrativo.actions.g_tb_bairro.g_tb_bairro_show_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 g_tb_bairro. + """ + + def execute(self, bairro_schema: GTbBairroIdSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + bairro_schema (GTbBairroIdSchema): O esquema com o ID a ser buscado. + + Returns: + O resultado da busca. + """ + # Instanciamento da ação + show_action = ShowAction() + + # Executa a ação em questão + data = show_action.execute(bairro_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 Bairro' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_update_service.py b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_update_service.py new file mode 100644 index 0000000..0ac28bd --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_bairro/go/g_tb_bairro_update_service.py @@ -0,0 +1,24 @@ +from packages.v1.administrativo.schemas.g_tb_bairro_schema import GTbBairroUpdateSchema +from packages.v1.administrativo.actions.g_tb_bairro.g_tb_bairro_update_action import UpdateAction + +class UpdateService: + """ + Serviço para a operação de atualização de um registro na tabela + g_tb_bairro. + """ + def execute(self, bairro_id : int, bairro_schema: GTbBairroUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + bairro_id (int): O ID do registro a ser atualizado. + bairro_schema (GTbBairroUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instanciamento de ações + update_action = UpdateAction() + + # Retorna o resultado da operação + return update_action.execute(bairro_id, bairro_schema) \ No newline at end of file diff --git a/packages/v1/api.py b/packages/v1/api.py index c06235c..80c9b25 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -13,6 +13,7 @@ from packages.v1.administrativo.endpoints import g_tb_regimecomunhao_endpoint from packages.v1.administrativo.endpoints import g_tb_regimebens_endpoint from packages.v1.administrativo.endpoints import t_censec_endpoint from packages.v1.administrativo.endpoints import t_censec_naturezalitigio_endpoint +from packages.v1.administrativo.endpoints import g_tb_bairro_endpoint # Cria uma instância do APIRouter que vai agregar todas as rotas da API api_router = APIRouter() @@ -72,4 +73,10 @@ api_router.include_router( # Inclui as rotas de t_censec_naturezalitigio api_router.include_router( t_censec_naturezalitigio_endpoint.router, prefix="/administrativo/t_censec_naturezalitigio", tags=["CENSEC - Natureza Litígio"] +) + + +# Inclui as rotas de t_censec_naturezalitigio +api_router.include_router( + g_tb_bairro_endpoint.router, prefix="/administrativo/g_tb_bairro", tags=["CENSEC - Bairro"] ) \ No newline at end of file From e163d8c158136d6a9a25f86eaedf5fafb92a8532 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Fri, 19 Sep 2025 12:59:58 -0300 Subject: [PATCH 4/6] =?UTF-8?q?[DSAAS-12]=20fix(JWT):=20Ajustado=20retorno?= =?UTF-8?q?=20para=20json,=20antes=20retornava=20um=20dicion=C3=A1rio=20py?= =?UTF-8?q?thon,=20adicionado=20no=20retorno=20o=20campo=20e-mail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/g_usuario/go/g_usuario_authenticate_service.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/v1/administrativo/services/g_usuario/go/g_usuario_authenticate_service.py b/packages/v1/administrativo/services/g_usuario/go/g_usuario_authenticate_service.py index 4aba069..a4dbba7 100644 --- a/packages/v1/administrativo/services/g_usuario/go/g_usuario_authenticate_service.py +++ b/packages/v1/administrativo/services/g_usuario/go/g_usuario_authenticate_service.py @@ -2,6 +2,7 @@ from fastapi import HTTPException, status from actions.jwt.create_token import CreateToken from packages.v1.administrativo.schemas.g_usuario_schema import GUsuarioAuthenticateSchema from packages.v1.administrativo.actions.g_usuario.g_usuario_get_by_authenticate_action import GetByAuthenticateAction +import json # Funções utilitárias para segurança (hash e verificação de senha) from actions.security.security import Security @@ -46,8 +47,9 @@ class AuthenticateService: jwtUser = { 'usuario_id' : int(get_by_authenticate_result.usuario_id), 'login' : str(get_by_authenticate_result.login), - 'nome' : str(get_by_authenticate_result.login) + 'nome' : str(get_by_authenticate_result.login), + 'email' : str(get_by_authenticate_result.email) } # Retorna o token dos dados do usuário - return create_token.execute('access-token', str(jwtUser)) \ No newline at end of file + return create_token.execute('access-token', json.dumps(jwtUser)) \ No newline at end of file From 6aae0bc478e64d77d27d8efd84fac542e1325d38 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Sat, 20 Sep 2025 12:30:19 -0300 Subject: [PATCH 5/6] [MVPTN-69] feat(CRUD): CRUD completo da tabela g_tb_tipologradouro --- .../g_tb_tipologradouro_delete_action.py | 26 ++++ ..._tipologradouro_get_by_descricao_action.py | 29 +++++ .../g_tb_tipologradouro_index_action.py | 24 ++++ .../g_tb_tipologradouro_save_action.py | 28 +++++ .../g_tb_tipologradouro_show_action.py | 28 +++++ .../g_tb_tipologradouro_update_action.py | 26 ++++ .../g_tb_tipologradouro_controller.py | 113 ++++++++++++++++++ .../endpoints/g_tb_tipologradouro_endpoint.py | 108 +++++++++++++++++ .../g_tb_tipologradouro_delete_repository.py | 41 +++++++ ...ologradouro_get_by_descricao_repository.py | 29 +++++ .../g_tb_tipologradouro_index_repository.py | 23 ++++ .../g_tb_tipologradouro_save_repository.py | 61 ++++++++++ .../g_tb_tipologradouro_show_repository.py | 46 +++++++ .../g_tb_tipologradouro_update_repository.py | 66 ++++++++++ .../schemas/g_tb_tipologradouro_schema.py | 109 +++++++++++++++++ .../go/g_tb_tipologradouro_delete_service.py | 27 +++++ ...tb_tipologradouro_get_descricao_service.py | 38 ++++++ .../go/g_tb_tipologradouro_index_service.py | 32 +++++ .../go/g_tb_tipologradouro_save_service.py | 70 +++++++++++ .../go/g_tb_tipologradouro_show_service.py | 35 ++++++ .../go/g_tb_tipologradouro_update_service.py | 23 ++++ packages/v1/api.py | 6 + 22 files changed, 988 insertions(+) create mode 100644 packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_delete_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_index_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_save_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_show_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_update_action.py create mode 100644 packages/v1/administrativo/controllers/g_tb_tipologradouro_controller.py create mode 100644 packages/v1/administrativo/endpoints/g_tb_tipologradouro_endpoint.py create mode 100644 packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_delete_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_index_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_save_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_show_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_update_repository.py create mode 100644 packages/v1/administrativo/schemas/g_tb_tipologradouro_schema.py create mode 100644 packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_delete_service.py create mode 100644 packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_get_descricao_service.py create mode 100644 packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_index_service.py create mode 100644 packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_save_service.py create mode 100644 packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_show_service.py create mode 100644 packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_update_service.py diff --git a/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_delete_action.py b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_delete_action.py new file mode 100644 index 0000000..27f11d4 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_delete_action.py @@ -0,0 +1,26 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroIdSchema +from packages.v1.administrativo.repositories.g_tb_tipologradouro.g_tb_tipologradouro_delete_repository import DeleteRepository + + +class DeleteAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + """ + Executa a operação de exclusão no banco de dados. + + Args: + tipologradouro_schema (GTbTipologradouroIdSchema): O esquema com o ID a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento do repositório + delete_repository = DeleteRepository() + + # Execução do repositório + return delete_repository.execute(tipologradouro_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_action.py b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_action.py new file mode 100644 index 0000000..27d2e7e --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_action.py @@ -0,0 +1,29 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroDescricaoSchema +from packages.v1.administrativo.repositories.g_tb_tipologradouro.g_tb_tipologradouro_get_by_descricao_repository import GetByDescricaoRepository + + +class GetByDescricaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela g_tb_tipologradouro por descrição. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroDescricaoSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + tipologradouro_schema (GTbTipologradouroDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento do repositório + show_repository = GetByDescricaoRepository() + + # Execução do repositório + response = show_repository.execute(tipologradouro_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_index_action.py b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_index_action.py new file mode 100644 index 0000000..fa9ba06 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_index_action.py @@ -0,0 +1,24 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.repositories.g_tb_tipologradouro.g_tb_tipologradouro_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela g_tb_tipologradouro. + """ + + def execute(self): + """ + Executa a operação de listagem no banco de dados. + + Returns: + A lista de todos os registros. + """ + # Instanciamento do repositório + index_repository = IndexRepository() + + # Execução do repositório + response = index_repository.execute() + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_save_action.py b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_save_action.py new file mode 100644 index 0000000..34925c3 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_save_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroSaveSchema +from packages.v1.administrativo.repositories.g_tb_tipologradouro.g_tb_tipologradouro_save_repository import SaveRepository + +class SaveAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvar um novo registro na tabela g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroSaveSchema): + """ + Executa a operação de salvamento. + + Args: + tipologradouro_schema (GTbTipologradouroSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O resultado da operação de salvamento. + """ + # Instanciamento do repositório + save_repository = SaveRepository() + + # Execução do repositório + response = save_repository.execute(tipologradouro_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_show_action.py b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_show_action.py new file mode 100644 index 0000000..ce4731f --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_show_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroIdSchema +from packages.v1.administrativo.repositories.g_tb_tipologradouro.g_tb_tipologradouro_show_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 g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + """ + Executa a operação de exibição. + + Args: + tipologradouro_schema (GTbTipologradouroIdSchema): O esquema com o ID do registro a ser exibido. + + Returns: + O resultado da operação de exibição. + """ + # Instanciamento do repositório + show_repository = ShowRepository() + + # Execução do repositório + response = show_repository.execute(tipologradouro_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_update_action.py b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_update_action.py new file mode 100644 index 0000000..ebcd3c7 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_tipologradouro/g_tb_tipologradouro_update_action.py @@ -0,0 +1,26 @@ +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroUpdateSchema +from packages.v1.administrativo.repositories.g_tb_tipologradouro.g_tb_tipologradouro_update_repository import UpdateRepository + + +class UpdateAction: + """ + Serviço responsável por encapsular a lógica de negócio para a atualização + de um registro na tabela g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_id: int, tipologradouro_schema: GTbTipoLogradouroUpdateSchema): + """ + Executa a operação de atualização. + + Args: + tipologradouro_id (int): O ID do registro a ser atualizado. + tipologradouro_schema (GTbTipologradouroUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instância o repositório de atualização + update_repository = UpdateRepository() + + # Chama o método de execução do repositório para realizar a atualização + return update_repository.execute(tipologradouro_id, tipologradouro_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/g_tb_tipologradouro_controller.py b/packages/v1/administrativo/controllers/g_tb_tipologradouro_controller.py new file mode 100644 index 0000000..5458979 --- /dev/null +++ b/packages/v1/administrativo/controllers/g_tb_tipologradouro_controller.py @@ -0,0 +1,113 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import ( + GTbTipoLogradouroSchema, + GTbTipoLogradouroSaveSchema, + GTbTipoLogradouroUpdateSchema, + GTbTipoLogradouroIdSchema, + GTbTipoLogradouroDescricaoSchema +) + +class GTbTipologradouroController: + + def __init__(self): + # Action responsável por carregar as services de acordo 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("g_tb_tipologradouro") + pass + + # Lista todos os registros de tipologradouro + def index(self): + + # Importação da classe desejada + index_service = self.dynamic_import.service("g_tb_tipologradouro_index_service", "IndexService") + + # Instância da classe service + self.index_service = index_service() + + # Lista todos os registros de tipologradouro + return { + 'message': 'Registros de tipologradouro localizados com sucesso', + 'data': self.index_service.execute() + } + + + # Busca um registro de tipologradouro específico pelo ID + def show(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('g_tb_tipologradouro_show_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de tipologradouro desejado + return { + 'message': 'Registro de tipologradouro localizado com sucesso', + 'data': self.show_service.execute(tipologradouro_schema) + } + + + # Busca um registro de tipologradouro pela descrição + def get_by_descricao(self, tipologradouro_schema: GTbTipoLogradouroDescricaoSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('g_tb_tipologradouro_get_descricao_service', 'GetByDescricaoService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de tipologradouro desejado + return { + 'message': 'Registro de tipologradouro localizado com sucesso', + 'data': self.show_service.execute(tipologradouro_schema, True) + } + + + # Cadastra um novo registro de tipologradouro + def save(self, tipologradouro_schema: GTbTipoLogradouroSaveSchema): + + #Importação da classe desejada + save_service = self.dynamic_import.service('g_tb_tipologradouro_save_service', 'SaveService') + + # Instância da classe desejada + self.save_service = save_service() + # Busca e retorna o registro de tipologradouro desejado + return { + 'message': 'Registro de tipologradouro salvo com sucesso', + 'data': self.save_service.execute(tipologradouro_schema) + } + + # Atualiza os dados de um registro de tipologradouro + def update(self, tipologradouro_id: int, tipologradouro_schema: GTbTipoLogradouroUpdateSchema): + + #Importação da classe desejada + update_service = self.dynamic_import.service('g_tb_tipologradouro_update_service', 'UpdateService') + + # Instância da classe desejada + self.update_service = update_service() + + # Busca e retorna o registro de tipologradouro desejado + return { + 'message': 'Registro de tipologradouro atualizado com sucesso', + 'data': self.update_service.execute(tipologradouro_id, tipologradouro_schema) + } + + # Exclui um registro de tipologradouro + def delete(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + + #Importação da classe desejada + delete_service = self.dynamic_import.service('g_tb_tipologradouro_delete_service', 'DeleteService') + + # Instância da classe desejada + self.delete_service = delete_service() + + # Busca e retorna o registro de tipologradouro desejado + return { + 'message': 'Registro de tipologradouro removido com sucesso', + 'data': self.delete_service.execute(tipologradouro_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/g_tb_tipologradouro_endpoint.py b/packages/v1/administrativo/endpoints/g_tb_tipologradouro_endpoint.py new file mode 100644 index 0000000..8a988d4 --- /dev/null +++ b/packages/v1/administrativo/endpoints/g_tb_tipologradouro_endpoint.py @@ -0,0 +1,108 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user +from packages.v1.administrativo.controllers.g_tb_tipologradouro_controller import GTbTipologradouroController +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import ( + GTbTipoLogradouroSchema, + GTbTipoLogradouroSaveSchema, + GTbTipoLogradouroUpdateSchema, + GTbTipoLogradouroIdSchema +) + +# Inicializa o roteador para as rotas do tipo de reconhecimento +router = APIRouter() + +# Instanciamento do controller desejado +g_tb_tipologradouro_controller = GTbTipologradouroController() + +# Lista todos os registros de tipologradouro +@router.get('/', + status_code=status.HTTP_200_OK, + summary='Lista todos os registros de tipologradouro cadastrados', + response_description='Lista todos os registros de tipologradouro cadastrados') +async def index(current_user: dict = Depends(get_current_user)): + + # Busca todos os registros de tipologradouro cadastrados + response = g_tb_tipologradouro_controller.index() + + # Retorna os dados localizados + return response + + +# Localiza um registro de tipologradouro pela descrição +@router.get('/descricao', + status_code=status.HTTP_200_OK, + summary='Busca um registro de tipologradouro em específico pela descrição', + response_description='Busca um registro de tipologradouro em específico') +async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + tipologradouro_schema = GTbTipoLogradouroSchema(descricao=descricao) + + # Busca um registro de tipologradouro específico pela descrição + response = g_tb_tipologradouro_controller.get_by_descricao(tipologradouro_schema) + + # Retorna os dados localizados + return response + + +# Localiza um registro de tipologradouro pelo ID +@router.get('/{tb_tipologradouro_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de tipologradouro em específico pelo ID', + response_description='Busca um registro de tipologradouro em específico') +async def show(tb_tipologradouro_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + tipologradouro_schema = GTbTipoLogradouroIdSchema(tb_tipologradouro_id=tb_tipologradouro_id) + + # Busca um registro de tipologradouro específico pelo ID + response = g_tb_tipologradouro_controller.show(tipologradouro_schema) + + # Retorna os dados localizados + return response + + +# Cadastro de registro de tipologradouro +@router.post('/', + status_code=status.HTTP_201_CREATED, + summary='Cadastra um registro de tipologradouro', + response_description='Cadastra um registro de tipologradouro') +async def save(tipologradouro_schema: GTbTipoLogradouroSaveSchema, current_user: dict = Depends(get_current_user)): + + # Efetua o cadastro no banco de dados + response = g_tb_tipologradouro_controller.save(tipologradouro_schema) + + # Retorna os dados localizados + return response + + +# Atualiza os dados de um registro de tipologradouro +@router.put('/{tb_tipologradouro_id}', + status_code=status.HTTP_200_OK, + summary='Atualiza um registro de tipologradouro', + response_description='Atualiza um registro de tipologradouro') +async def update(tb_tipologradouro_id: int, tipologradouro_schema: GTbTipoLogradouroUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Efetua a atualização dos dados + response = g_tb_tipologradouro_controller.update(tb_tipologradouro_id, tipologradouro_schema) + + # Retorna os dados localizados + return response + +# Exclui um determinado registro de tipologradouro +@router.delete('/{tb_tipologradouro_id}', + status_code=status.HTTP_200_OK, + summary='Remove um registro de tipologradouro', + response_description='Remove um registro de tipologradouro') +async def delete(tb_tipologradouro_id: int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + tipologradouro_schema = GTbTipoLogradouroIdSchema(tb_tipologradouro_id=tb_tipologradouro_id) + + # Efetua a exclusão do registro de tipologradouro + response = g_tb_tipologradouro_controller.delete(tipologradouro_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_delete_repository.py b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_delete_repository.py new file mode 100644 index 0000000..d23b078 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_delete_repository.py @@ -0,0 +1,41 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroIdSchema +from fastapi import HTTPException, status + +class DeleteRepository(BaseRepository): + """ + Repositório para a operação de exclusão de um registro na tabela + g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + """ + Executa a consulta SQL para remover um registro pelo ID. + + Args: + tipologradouro_schema (GTbTipologradouroIdSchema): O esquema com o ID a ser removido. + + Returns: + O resultado da operação de exclusão. + """ + try: + # Montagem do sql + sql = """ DELETE FROM G_TB_TIPOLOGRADOURO WHERE TB_TIPOLOGRADOURO_ID = :tipologradouro_id """ + + # Preenchimento de parâmetros + params = { + "tipologradouro_id": tipologradouro_schema.tb_tipologradouro_id + } + + # Execução do sql + response = self.run(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + # Informa que houve uma falha na exclusão + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao excluir TIPOLOGRADOURO: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_repository.py b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_repository.py new file mode 100644 index 0000000..3439f4e --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_get_by_descricao_repository.py @@ -0,0 +1,29 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroDescricaoSchema + +class GetByDescricaoRepository(BaseRepository): + """ + Repositório para a operação de busca de um registro na tabela + g_tb_tipologradouro por descricao. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroDescricaoSchema): + """ + Executa a consulta SQL para buscar um registro pela descricao. + + Args: + tipologradouro_schema (GTbTipoLogradouroDescricaoSchema): O esquema com a descricao a ser buscada. + + Returns: + Um dicionário contendo os dados do registro ou None se não for encontrado. + """ + # Montagem do SQL + sql = """ SELECT * FROM G_TB_TIPOLOGRADOURO WHERE DESCRICAO = :descricao """ + + # Preenchimento de parâmetros + params = { + 'descricao': tipologradouro_schema.descricao + } + + # Execução do sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_index_repository.py b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_index_repository.py new file mode 100644 index 0000000..ae76ab0 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_index_repository.py @@ -0,0 +1,23 @@ +from abstracts.repository import BaseRepository + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela g_tb_tipologradouro. + """ + + def execute(self): + """ + Executa a consulta SQL para buscar todos os registros. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL + sql = """ SELECT * FROM G_TB_TIPOLOGRADOURO """ + + # Execução do sql + response = self.fetch_all(sql) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_save_repository.py b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_save_repository.py new file mode 100644 index 0000000..7fca22f --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_save_repository.py @@ -0,0 +1,61 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroSaveSchema + + +class SaveRepository(BaseRepository): + """ + Repositório para a operação de salvamento de um novo registro na tabela g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroSaveSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + tipologradouro_schema (GTbTipoLogradouroSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + # Montagem do SQL + sql = """ INSERT INTO G_TB_TIPOLOGRADOURO( + TB_TIPOLOGRADOURO_ID, + DESCRICAO, + SITUACAO, + SISTEMA_ID, + SITUACAO_ID, + ONR_TIPO_LOGRADOURO_ID + ) VALUES ( + :tb_tipologradouro_id, + :descricao, + :situacao, + :sistema_id, + :situacao_id, + :onr_tipo_logradouro_id + ) RETURNING *;""" + + # Preenchimento de parâmetros + params = { + 'tb_tipologradouro_id': tipologradouro_schema.tb_tipologradouro_id, + 'descricao': tipologradouro_schema.descricao, + 'situacao': tipologradouro_schema.situacao, + 'sistema_id': tipologradouro_schema.sistema_id, + 'situacao_id': tipologradouro_schema.situacao_id, + 'onr_tipo_logradouro_id': tipologradouro_schema.onr_tipo_logradouro_id + } + + # Execução do sql + return self.run_and_return(sql, params) + + except Exception as e: + + # Informa que houve uma falha no salvamento do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar G_TB_TIPOLOGRADOURO: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_show_repository.py b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_show_repository.py new file mode 100644 index 0000000..fe12c1b --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_show_repository.py @@ -0,0 +1,46 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroIdSchema +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + """ + Busca um registro específico de g_tb_tipologradouro pelo ID. + + Args: + tipologradouro_schema (GTbTipoLogradouroIdSchema): O esquema que contém o ID do registro. + + 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 + sql = "SELECT * FROM G_TB_TIPOLOGRADOURO WHERE TB_TIPOLOGRADOURO_ID = :tb_tipologradouro_id" + + # Preenchimento de parâmetros + params = { + 'tb_tipologradouro_id': tipologradouro_schema.tb_tipologradouro_id + } + + # Execução do SQL + result = self.fetch_one(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: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_update_repository.py b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_update_repository.py new file mode 100644 index 0000000..b4031ec --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_tipologradouro/g_tb_tipologradouro_update_repository.py @@ -0,0 +1,66 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroUpdateSchema +from fastapi import HTTPException, status + +class UpdateRepository(BaseRepository): + """ + Repositório para a operação de atualização na tabela G_TB_TIPOLOGRADOURO. + """ + + def execute(self, tipologradouro_id : int, tipologradouro_schema: GTbTipoLogradouroUpdateSchema): + """ + Executa a atualização de um registro na tabela. + + Args: + tipologradouro_id (int): O ID do registro a ser atualizado. + tipologradouro_schema (GTbTipoLogradouroUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O registro atualizado. + + Raises: + HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização. + """ + try: + updates = [] + params = {} + + if tipologradouro_schema.descricao is not None: + updates.append("DESCRICAO = :descricao") + params["descricao"] = tipologradouro_schema.descricao + + if tipologradouro_schema.situacao is not None: + updates.append("SITUACAO = :situacao") + params["situacao"] = tipologradouro_schema.situacao + + if tipologradouro_schema.sistema_id is not None: + updates.append("SISTEMA_ID = :sistema_id") + params["sistema_id"] = tipologradouro_schema.sistema_id + + + if not updates: + return False + + params["tb_tipologradouro_id"] = tipologradouro_id + sql = f"UPDATE G_TB_TIPOLOGRADOURO SET {', '.join(updates)} WHERE TB_TIPOLOGRADOURO_ID = :tb_tipologradouro_id RETURNING *;" + + # Executa a query + result = self.run_and_return(sql, params) + + if not result: + # Informa que não existe o registro a ser modificado + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail='Nenhum G_TB_TIPOLOGRADOURO localizado para esta solicitação' + ) + + # Se houver um resultado, a atualização foi bem-sucedida + if result: + return result + + except Exception as e: + # Informa que houve uma falha na atualização + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao atualizar o G_TB_TIPOLOGRADOURO: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/g_tb_tipologradouro_schema.py b/packages/v1/administrativo/schemas/g_tb_tipologradouro_schema.py new file mode 100644 index 0000000..c5efa68 --- /dev/null +++ b/packages/v1/administrativo/schemas/g_tb_tipologradouro_schema.py @@ -0,0 +1,109 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional + +# Funções para sanitização de entradas (evitar XSS, SQLi etc.) +from actions.validations.text import Text + +# ---------------------------------------------------- +# Schema base +# ---------------------------------------------------- +class GTbTipoLogradouroSchema(BaseModel): + tb_tipologradouro_id: Optional[float] = None + descricao: Optional[str] = None + situacao: Optional[str] = None + sistema_id: Optional[float] = None + situacao_id: Optional[float] = None + onr_tipo_logradouro_id: Optional[float] = None + + class Config: + from_attributes = True + + +# ---------------------------------------------------- +# Schema para localizar um g_tb_tipologradouro especifico pelo ID (GET) +# ---------------------------------------------------- +class GTbTipoLogradouroIdSchema(BaseModel): + tb_tipologradouro_id: float + + +# ---------------------------------------------------- +# Schema para localizar um g_tb_tipologradouro especifico pela descrição (GET) +# ---------------------------------------------------- +class GTbTipoLogradouroDescricaoSchema(BaseModel): + descricao: str + + +# ---------------------------------------------------- +# Schema para criação de novo g_tb_tipologradouro (POST) +# ---------------------------------------------------- +class GTbTipoLogradouroSaveSchema(BaseModel): + tb_tipologradouro_id: Optional[float] = None + descricao: str + situacao: str + sistema_id: Optional[float] = None + situacao_id: Optional[float] = None + onr_tipo_logradouro_id: Optional[float] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self + + +# ---------------------------------------------------- +# Schema para atualizar g_tb_tipologradouro (PUT) +# ---------------------------------------------------- +class GTbTipoLogradouroUpdateSchema(BaseModel): + descricao: Optional[str] = None + situacao: Optional[str] = None + sistema_id: Optional[float] = None + situacao_id: Optional[float] = None + onr_tipo_logradouro_id: Optional[float] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_delete_service.py b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_delete_service.py new file mode 100644 index 0000000..5f406a9 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_delete_service.py @@ -0,0 +1,27 @@ +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroIdSchema +from packages.v1.administrativo.actions.g_tb_tipologradouro.g_tb_tipologradouro_delete_action import DeleteAction + +class DeleteService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela g_tb_tipologradouro. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroIdSchema): + """ + Executa a operação de exclusão do registro no banco de dados. + + Args: + tipologradouro_schema (GTbTipoLogradouroIdSchema): O esquema com o ID do registro a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento da ação + delete_action = DeleteAction() + + # Executa a ação em questão + data = delete_action.execute(tipologradouro_schema) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_get_descricao_service.py b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_get_descricao_service.py new file mode 100644 index 0000000..58dcff1 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_get_descricao_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroDescricaoSchema +from packages.v1.administrativo.actions.g_tb_tipologradouro.g_tb_tipologradouro_get_by_descricao_action import GetByDescricaoAction + +class GetByDescricaoService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela g_tb_tipologradouro pela sua descrição. + """ + + def execute(self, tipologradouro_schema: GTbTipoLogradouroDescricaoSchema, messageValidate: bool): + """ + Executa a operação de busca no banco de dados. + + Args: + tipologradouro_schema (GTbTipoLogradouroDescricaoSchema): O esquema com a descrição a ser buscada. + 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 = GetByDescricaoAction() + + # Executa a ação em questão + data = show_action.execute(tipologradouro_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 registro de G_TB_TIPOLOGRADOURO' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_index_service.py b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_index_service.py new file mode 100644 index 0000000..0774786 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_index_service.py @@ -0,0 +1,32 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.actions.g_tb_tipologradouro.g_tb_tipologradouro_index_action import IndexAction + +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela g_tb_tipologradouro. + """ + + def execute(self): + """ + Executa a operação de busca de todos os registros no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação + index_action = IndexAction() + + # Executa a busca de todas as ações + data = index_action.execute() + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de G_TB_TIPOLOGRADOURO' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_save_service.py b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_save_service.py new file mode 100644 index 0000000..462a8cc --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_save_service.py @@ -0,0 +1,70 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema +from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroSaveSchema, GTbTipoLogradouroDescricaoSchema +from packages.v1.administrativo.actions.g_tb_tipologradouro.g_tb_tipologradouro_save_action import SaveAction +from fastapi import HTTPException, status + +class SaveService: + + def __init__(self): + # Ação responsável por carregar as services de acordo 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("g_tb_tipologradouro") + pass + + # Cadastra o novo G_TB_TIPOLOGRADOURO + def execute(self, tipologradouro_schema: GTbTipoLogradouroSaveSchema): + + # Armazena possíveis erros + errors = [] + + # Verifica se a descrição já está sendo utilizada + # Importação de service + descricao_service = self.dynamic_import.service("g_tb_tipologradouro_get_descricao_service", "GetByDescricaoService") + + # Instanciamento da service + self.descricao_service = descricao_service() + + # Verifica se a descrição já está sendo utilizada + self.response = self.descricao_service.execute(GTbTipoLogradouroDescricaoSchema(descricao=tipologradouro_schema.descricao), False) + + # Se houver retorno significa que a descrição já está sendo utilizada + if self.response: + errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'}) + + # Se houver erros, lança a exceção + if errors: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=errors + ) + + # Verifica se precisa gerar o ID de sequência + if not tipologradouro_schema.tb_tipologradouro_id: + + # Crio um objeto de sequencia + sequencia_schema = GSequenciaSchema() + + # Define os dados para atualizar a sequencia + sequencia_schema.tabela = 'G_TB_TIPOLOGRADOURO' + + # Busco a sequência atualizada + generate = GenerateService() + + # Busco a sequência atualizada + sequencia = generate.execute(sequencia_schema) + + # Atualiza os dados da chave primária + tipologradouro_schema.tb_tipologradouro_id = sequencia.sequencia + + # Instanciamento de ações + save_action = SaveAction() + + # Retorna o resultado da operação + return save_action.execute(tipologradouro_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_show_service.py b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_show_service.py new file mode 100644 index 0000000..67a3361 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_show_service.py @@ -0,0 +1,35 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroIdSchema +from packages.v1.administrativo.actions.g_tb_tipologradouro.g_tb_tipologradouro_show_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 g_tb_tipologradouro. + """ + + def execute(self, g_tb_tipologradouro_schema: GTbTipoLogradouroIdSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + g_tb_tipologradouro_schema (GTbTipoLogradouroIdSchema): O esquema com o ID a ser buscado. + + Returns: + O resultado da busca. + """ + # Instanciamento da ação + show_action = ShowAction() + + # Executa a ação em questão + data = show_action.execute(g_tb_tipologradouro_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 Tipo de Logradouro' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_update_service.py b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_update_service.py new file mode 100644 index 0000000..6090710 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_tipologradouro/go/g_tb_tipologradouro_update_service.py @@ -0,0 +1,23 @@ +from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import GTbTipoLogradouroUpdateSchema +from packages.v1.administrativo.actions.g_tb_tipologradouro.g_tb_tipologradouro_update_action import UpdateAction + +class UpdateService: + """ + Serviço para a operação de atualização de um registro na tabela + g_tb_tipologradouro. + """ + def execute(self, g_tb_tipologradouro_id : int, g_tb_tipologradouro_schema: GTbTipoLogradouroUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + g_tb_tipologradouro_schema (GTbTipoLogradouroUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instanciamento de ações + update_action = UpdateAction() + + # Retorna o resultado da operação + return update_action.execute(g_tb_tipologradouro_id, g_tb_tipologradouro_schema) \ No newline at end of file diff --git a/packages/v1/api.py b/packages/v1/api.py index 80c9b25..cf8d438 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -14,6 +14,7 @@ from packages.v1.administrativo.endpoints import g_tb_regimebens_endpoint from packages.v1.administrativo.endpoints import t_censec_endpoint from packages.v1.administrativo.endpoints import t_censec_naturezalitigio_endpoint from packages.v1.administrativo.endpoints import g_tb_bairro_endpoint +from packages.v1.administrativo.endpoints import g_tb_tipologradouro_endpoint # Cria uma instância do APIRouter que vai agregar todas as rotas da API api_router = APIRouter() @@ -79,4 +80,9 @@ api_router.include_router( # Inclui as rotas de t_censec_naturezalitigio api_router.include_router( g_tb_bairro_endpoint.router, prefix="/administrativo/g_tb_bairro", tags=["CENSEC - Bairro"] +) + +# Inclui as rotas de g_tb_tipologradouro +api_router.include_router( + g_tb_tipologradouro_endpoint.router, prefix="/administrativo/g_tb_tipologradouro", tags=["Tipo logradouro"] ) \ No newline at end of file From 0a6eb89638beff6df11a5c4c108268052d9fc8fc Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Sat, 20 Sep 2025 19:41:15 -0300 Subject: [PATCH 6/6] [MVPTN-12] feat(CRUD): Criado o CRUD completo da tabela g_tb_estadocivil --- Orius.postman_collection.json | 1168 ++++++++++++++++- .../g_tb_estadocivil_delete_action.py | 26 + ..._tb_estadocivil_get_by_descricao_action.py | 29 + .../g_tb_estadocivil_index_action.py | 24 + .../g_tb_estadocivil_save_action.py | 28 + .../g_tb_estadocivil_show_action.py | 28 + .../g_tb_estadocivil_update_action.py | 26 + .../g_tb_estadocivil_controller.py | 113 ++ .../endpoints/g_tb_estadocivil_endpoint.py | 108 ++ .../g_tb_estadocivil_delete_repository.py | 41 + ...estadocivil_get_by_descricao_repository.py | 29 + .../g_tb_estadocivil_index_repository.py | 23 + .../g_tb_estadocivil_save_repository.py | 59 + .../g_tb_estadocivil_show_repository.py | 46 + .../g_tb_estadocivil_update_repository.py | 69 + .../schemas/g_tb_estadocivil_schema.py | 114 ++ .../go/g_tb_estadocivil_delete_service.py | 27 + .../g_tb_estadocivil_get_descricao_service.py | 38 + .../go/g_tb_estadocivil_index_service.py | 32 + .../go/g_tb_estadocivil_save_service.py | 74 ++ .../go/g_tb_estadocivil_show_service.py | 35 + .../go/g_tb_estadocivil_update_service.py | 23 + packages/v1/api.py | 6 + 23 files changed, 2162 insertions(+), 4 deletions(-) create mode 100644 packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_delete_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_index_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_save_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_show_action.py create mode 100644 packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_update_action.py create mode 100644 packages/v1/administrativo/controllers/g_tb_estadocivil_controller.py create mode 100644 packages/v1/administrativo/endpoints/g_tb_estadocivil_endpoint.py create mode 100644 packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_delete_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_index_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_save_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_show_repository.py create mode 100644 packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_update_repository.py create mode 100644 packages/v1/administrativo/schemas/g_tb_estadocivil_schema.py create mode 100644 packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_delete_service.py create mode 100644 packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_get_descricao_service.py create mode 100644 packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_index_service.py create mode 100644 packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_save_service.py create mode 100644 packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_show_service.py create mode 100644 packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_update_service.py diff --git a/Orius.postman_collection.json b/Orius.postman_collection.json index cd8633f..2f7056a 100644 --- a/Orius.postman_collection.json +++ b/Orius.postman_collection.json @@ -3594,7 +3594,7 @@ "urlencoded": [] }, "url": { - "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/descricao?descricao=RCTO - Testamentos", + "raw": "{{BaseUrlV1}}administrativo/t_censec_qualidade/descricao?descricao=OUTORGANTE", "host": [ "{{BaseUrlV1}}administrativo" ], @@ -3605,7 +3605,7 @@ "query": [ { "key": "descricao", - "value": "RCTO - Testamentos" + "value": "OUTORGANTE" } ] } @@ -3791,6 +3791,382 @@ } ] }, + { + "name": "CENSEC - Bairro", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tbBairroId\", response.data.tb_bairro_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/descricao?descricao=BAIRRO PRIMAVERA II", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "BAIRRO PRIMAVERA II" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/{{tbBairroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "{{tbBairroId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/{{tbBairroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "{{tbBairroId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_bairro/{{tbBairroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_bairro", + "{{tbBairroId}}" + ] + } + }, + "response": [] + } + ] + }, { "name": "CENSEC - Natureza Litigio", "item": [ @@ -4291,7 +4667,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}}\r\n}", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}},\r\n \"situacao_id\": {{$randomInt}},\r\n \"onr_tipo_logradouro_id\": {{$randomInt}}\r\n}", "options": { "raw": { "language": "json" @@ -4555,6 +4931,758 @@ } ] }, + { + "name": "Estado civil", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_estadocivil", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_estadocivil" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"tBestadoCivilId\", response.data.tb_estadocivil_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}},\r\n \"tipo\": {{$randomInt}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_estadocivil", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_estadocivil" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_estadocivil/descricao?descricao=Separado(a)", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_estadocivil", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "Separado(a)" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_estadocivil/{{tBestadoCivilId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_estadocivil", + "{{tBestadoCivilId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}},\r\n \"tipo\": {{$randomInt}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_estadocivil/{{tBestadoCivilId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_estadocivil", + "{{tBestadoCivilId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_estadocivil/{{tBestadoCivilId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_estadocivil", + "{{tBestadoCivilId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Tipo logradouro", + "item": [ + { + "name": "GET", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_tipologradouro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_tipologradouro" + ] + } + }, + "response": [] + }, + { + "name": "POST", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const response = pm.response.json();\r", + "\r", + "// Salvando em variáveis da *collection*\r", + "pm.collectionVariables.set(\"gTbTipoLogradouroId\", response.data.tb_tipologradouro_id);\r", + "\r", + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}},\r\n \"situacao_id\": {{$randomInt}},\r\n \"onr_tipo_logradouro_id\": {{onrTipoLogradouroId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_tipologradouro", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_tipologradouro" + ] + } + }, + "response": [] + }, + { + "name": "GET DESCRIÇÃO", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [] + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_tipologradouro/descricao?descricao=eu", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_tipologradouro", + "descricao" + ], + "query": [ + { + "key": "descricao", + "value": "eu" + } + ] + } + }, + "response": [] + }, + { + "name": "GET ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_tipologradouro/{{gTbTipoLogradouroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_tipologradouro", + "{{gTbTipoLogradouroId}}" + ] + } + }, + "response": [] + }, + { + "name": "PUT", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"descricao\": \"{{$randomFullName}}\",\r\n \"situacao\": \"{{status}}\",\r\n \"sistema_id\": {{sistemaId}},\r\n \"situacao_id\": {{$randomInt}},\r\n \"onr_tipo_logradouro_id\": {{onrTipoLogradouroId}}\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_tipologradouro/{{gTbTipoLogradouroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_tipologradouro", + "{{gTbTipoLogradouroId}}" + ] + } + }, + "response": [] + }, + { + "name": "DELETE", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code é 201 ou 200\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r", + "});\r", + "\r", + "pm.test(\"Resposta contém ID ou confirmação\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r", + "});\r", + "\r", + "pm.test(\"Mensagem indica sucesso\", function () {\r", + " const jsonData = pm.response.json();\r", + " pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseUrlV1}}administrativo/g_tb_tipologradouro/{{gTbTipoLogradouroId}}", + "host": [ + "{{BaseUrlV1}}administrativo" + ], + "path": [ + "g_tb_tipologradouro", + "{{gTbTipoLogradouroId}}" + ] + } + }, + "response": [] + } + ] + }, { "name": "Andamento Serviço", "item": [ @@ -5042,7 +6170,19 @@ "const randomSistemaID = sistemaIdList[Math.floor(Math.random() * sistemaIdList.length)];\r", "\r", "// Armazena como variável da collection\r", - "pm.collectionVariables.set(\"sistemaId\", randomSistemaID);" + "pm.collectionVariables.set(\"sistemaId\", randomSistemaID);\r", + "\r", + "\r", + "\r", + "\r", + "// Lista de valores possíveis\r", + "const onrTipoLogradouroList = [311, 310, 1, 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 309, 308];\r", + "\r", + "// Escolhe um valor aleatório\r", + "const randOnrTipoLogradouroId = onrTipoLogradouroList[Math.floor(Math.random() * onrTipoLogradouroList.length)];\r", + "\r", + "// Armazena como variável da collection\r", + "pm.collectionVariables.set(\"onrTipoLogradouroId\", randOnrTipoLogradouroId);" ] } }, @@ -5148,8 +6288,28 @@ }, { "key": "censecQualidadeId", + "value": "" + }, + { + "key": "tbBairroId", + "value": "" + }, + { + "key": "gTbTipoLogradouroId", + "value": "" + }, + { + "key": "onrTipoLogradouroId", + "value": "" + }, + { + "key": "tBestadoCivilid", "value": "", "type": "default" + }, + { + "key": "tBestadoCivilId", + "value": "" } ] } \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_delete_action.py b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_delete_action.py new file mode 100644 index 0000000..6940c50 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_delete_action.py @@ -0,0 +1,26 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilIdSchema +from packages.v1.administrativo.repositories.g_tb_estadocivil.g_tb_estadocivil_delete_repository import DeleteRepository + + +class DeleteAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela g_tb_estadocivil. + """ + + def execute(self, estadocivil_schema: GTbEstadoCivilIdSchema): + """ + Executa a operação de exclusão no banco de dados. + + Args: + estadocivil_schema (GTbEstadoCivilIdSchema): O esquema com o ID a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento do repositório + delete_repository = DeleteRepository() + + # Execução do repositório + return delete_repository.execute(estadocivil_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_action.py b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_action.py new file mode 100644 index 0000000..eea4a4c --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_action.py @@ -0,0 +1,29 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilDescricaoSchema +from packages.v1.administrativo.repositories.g_tb_estadocivil.g_tb_estadocivil_get_by_descricao_repository import GetByDescricaoRepository + + +class GetByDescricaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela g_tb_estadocivil por descrição. + """ + + def execute(self, estadocivil_schema: GTbEstadoCivilDescricaoSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + estadocivil_schema (GTbEstadoCivilDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + O registro encontrado ou None. + """ + # Instanciamento do repositório + show_repository = GetByDescricaoRepository() + + # Execução do repositório + response = show_repository.execute(estadocivil_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_index_action.py b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_index_action.py new file mode 100644 index 0000000..19dc7ae --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_index_action.py @@ -0,0 +1,24 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.repositories.g_tb_estadocivil.g_tb_estadocivil_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela g_tb_estadocivil. + """ + + def execute(self): + """ + Executa a operação de listagem no banco de dados. + + Returns: + A lista de todos os registros. + """ + # Instanciamento do repositório + index_repository = IndexRepository() + + # Execução do repositório + response = index_repository.execute() + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_save_action.py b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_save_action.py new file mode 100644 index 0000000..4859942 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_save_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilSaveSchema +from packages.v1.administrativo.repositories.g_tb_estadocivil.g_tb_estadocivil_save_repository import SaveRepository + +class SaveAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvar um novo registro na tabela g_tb_estadocivil. + """ + + def execute(self, estadocivil_schema: GTbEstadoCivilSaveSchema): + """ + Executa a operação de salvamento. + + Args: + estadocivil_schema (GTbEstadoCivilSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O resultado da operação de salvamento. + """ + # Instanciamento do repositório + save_repository = SaveRepository() + + # Execução do repositório + response = save_repository.execute(estadocivil_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_show_action.py b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_show_action.py new file mode 100644 index 0000000..2d1cb37 --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_show_action.py @@ -0,0 +1,28 @@ +from abstracts.action import BaseAction +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilIdSchema +from packages.v1.administrativo.repositories.g_tb_estadocivil.g_tb_estadocivil_show_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 g_tb_estadocivil. + """ + + def execute(self, estadocivil_schema: GTbEstadoCivilIdSchema): + """ + Executa a operação de exibição. + + Args: + estadocivil_schema (GTbEstadoCivilIdSchema): O esquema com o 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(estadocivil_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_update_action.py b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_update_action.py new file mode 100644 index 0000000..d3f4e2c --- /dev/null +++ b/packages/v1/administrativo/actions/g_tb_estadocivil/g_tb_estadocivil_update_action.py @@ -0,0 +1,26 @@ +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilUpdateSchema +from packages.v1.administrativo.repositories.g_tb_estadocivil.g_tb_estadocivil_update_repository import UpdateRepository + + +class UpdateAction: + """ + Service responsável por encapsular a lógica de negócio para a atualização + de um registro na tabela g_tb_estadocivil. + """ + + def execute(self, tb_estadocivil_id: int, estadocivil_schema: GTbEstadoCivilUpdateSchema): + """ + Executa a operação de atualização. + + Args: + tb_estadocivil_id (int): O ID do registro a ser atualizado. + estadocivil_schema (GTbEstadoCivilUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instância o repositório de atualização + update_repository = UpdateRepository() + + # Chama o método de execução do repositório para realizar a atualização + return update_repository.execute(tb_estadocivil_id, estadocivil_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/g_tb_estadocivil_controller.py b/packages/v1/administrativo/controllers/g_tb_estadocivil_controller.py new file mode 100644 index 0000000..d0585bb --- /dev/null +++ b/packages/v1/administrativo/controllers/g_tb_estadocivil_controller.py @@ -0,0 +1,113 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import ( + GTbEstadoCivilSchema, + GTbEstadoCivilSaveSchema, + GTbEstadoCivilUpdateSchema, + GTbEstadoCivilIdSchema, + GTbEstadoCivilDescricaoSchema +) + +class GTbEstadoCivilController: + + def __init__(self): + # Action responsável por carregar as services de acordo 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("g_tb_estadocivil") + pass + + # Lista todos os registros de estadocivil + def index(self): + + # Importação da classe desejada + indexService = self.dynamic_import.service("g_tb_estadocivil_index_service", "IndexService") + + # Instância da classe service + self.indexService = indexService() + + # Lista todos os registros de estadocivil + return { + 'message': 'Registros de estadocivil localizados com sucesso', + 'data': self.indexService.execute() + } + + + # Busca um registro de estadocivil específico pelo ID + def show(self, estadocivil_schema: GTbEstadoCivilIdSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('g_tb_estadocivil_show_service', 'ShowService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de estadocivil desejado + return { + 'message': 'Registro de estadocivil localizado com sucesso', + 'data': self.show_service.execute(estadocivil_schema) + } + + + # Busca um registro de estadocivil pela descrição + def get_by_descricao(self, estadocivil_schema: GTbEstadoCivilDescricaoSchema): + + #Importação da classe desejada + show_service = self.dynamic_import.service('g_tb_estadocivil_get_descricao_service', 'GetByDescricaoService') + + # Instância da classe desejada + self.show_service = show_service() + + # Busca e retorna o registro de estadocivil desejado + return { + 'message': 'Registro de estadocivil localizado com sucesso', + 'data': self.show_service.execute(estadocivil_schema, True) + } + + + # Cadastra um novo registro de estadocivil + def save(self, estadocivil_schema: GTbEstadoCivilSaveSchema): + + #Importação da classe desejada + save_service = self.dynamic_import.service('g_tb_estadocivil_save_service', 'SaveService') + + # Instância da classe desejada + self.save_service = save_service() + # Busca e retorna o registro de estadocivil desejado + return { + 'message': 'Registro de estadocivil salvo com sucesso', + 'data': self.save_service.execute(estadocivil_schema) + } + + # Atualiza os dados de um registro de estadocivil + def update(self, tb_estadocivil_id: int, estadocivil_schema: GTbEstadoCivilUpdateSchema): + + #Importação da classe desejada + update_service = self.dynamic_import.service('g_tb_estadocivil_update_service', 'UpdateService') + + # Instância da classe desejada + self.update_service = update_service() + + # Busca e retorna o registro de estadocivil desejado + return { + 'message': 'Registro de estadocivil atualizado com sucesso', + 'data': self.update_service.execute(tb_estadocivil_id, estadocivil_schema) + } + + # Exclui um registro de estadocivil + def delete(self, estadocivil_schema: GTbEstadoCivilIdSchema): + + #Importação da classe desejada + delete_service = self.dynamic_import.service('g_tb_estadocivil_delete_service', 'DeleteService') + + # Instância da classe desejada + self.delete_service = delete_service() + + # Busca e retorna o registro de estadocivil desejado + return { + 'message': 'Registro de estadocivil removido com sucesso', + 'data': self.delete_service.execute(estadocivil_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/g_tb_estadocivil_endpoint.py b/packages/v1/administrativo/endpoints/g_tb_estadocivil_endpoint.py new file mode 100644 index 0000000..a0a177d --- /dev/null +++ b/packages/v1/administrativo/endpoints/g_tb_estadocivil_endpoint.py @@ -0,0 +1,108 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user +from packages.v1.administrativo.controllers.g_tb_estadocivil_controller import GTbEstadoCivilController +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import ( + GTbEstadoCivilSchema, + GTbEstadoCivilSaveSchema, + GTbEstadoCivilUpdateSchema, + GTbEstadoCivilIdSchema +) + +# Inicializa o roteador para as rotas do tipo de reconhecimento +router = APIRouter() + +# Instanciamento do controller desejado +g_tb_estadocivil_controller = GTbEstadoCivilController() + +# Lista todos os registros de estadocivil +@router.get('/', + status_code=status.HTTP_200_OK, + summary='Lista todos os registros de estadocivil cadastrados', + response_description='Lista todos os registros de estadocivil cadastrados') +async def index(current_user: dict = Depends(get_current_user)): + + # Busca todos os registros de estadocivil cadastrados + response = g_tb_estadocivil_controller.index() + + # Retorna os dados localizados + return response + + +# Localiza um registro de estadocivil pela descrição +@router.get('/descricao', + status_code=status.HTTP_200_OK, + summary='Busca um registro de estadocivil em específico pela descrição', + response_description='Busca um registro de estadocivil em específico') +async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + estadocivil_schema = GTbEstadoCivilSchema(descricao=descricao) + + # Busca um registro de estadocivil específico pela descrição + response = g_tb_estadocivil_controller.get_by_descricao(estadocivil_schema) + + # Retorna os dados localizados + return response + + +# Localiza um registro de estadocivil pelo ID +@router.get('/{tb_estadocivil_id}', + status_code=status.HTTP_200_OK, + summary='Busca um registro de estadocivil em específico pelo ID', + response_description='Busca um registro de estadocivil em específico') +async def show(tb_estadocivil_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + estadocivil_schema = GTbEstadoCivilIdSchema(tb_estadocivil_id=tb_estadocivil_id) + + # Busca um registro de estadocivil específico pelo ID + response = g_tb_estadocivil_controller.show(estadocivil_schema) + + # Retorna os dados localizados + return response + + +# Cadastro de registro de estadocivil +@router.post('/', + status_code=status.HTTP_201_CREATED, + summary='Cadastra um registro de estadocivil', + response_description='Cadastra um registro de estadocivil') +async def save(estadocivil_schema: GTbEstadoCivilSaveSchema, current_user: dict = Depends(get_current_user)): + + # Efetua o cadastro no banco de dados + response = g_tb_estadocivil_controller.save(estadocivil_schema) + + # Retorna os dados localizados + return response + + +# Atualiza os dados de um registro de estadocivil +@router.put('/{tb_estadocivil_id}', + status_code=status.HTTP_200_OK, + summary='Atualiza um registro de estadocivil', + response_description='Atualiza um registro de estadocivil') +async def update(tb_estadocivil_id: int, estadocivil_schema: GTbEstadoCivilUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Efetua a atualização dos dados + response = g_tb_estadocivil_controller.update(tb_estadocivil_id, estadocivil_schema) + + # Retorna os dados localizados + return response + +# Exclui um determinado registro de estadocivil +@router.delete('/{tb_estadocivil_id}', + status_code=status.HTTP_200_OK, + summary='Remove um registro de estadocivil', + response_description='Remove um registro de estadocivil') +async def delete(tb_estadocivil_id: int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos + estadocivil_schema = GTbEstadoCivilIdSchema(tb_estadocivil_id=tb_estadocivil_id) + + # Efetua a exclusão do registro de estadocivil + response = g_tb_estadocivil_controller.delete(estadocivil_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_delete_repository.py b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_delete_repository.py new file mode 100644 index 0000000..9168f52 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_delete_repository.py @@ -0,0 +1,41 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilIdSchema +from fastapi import HTTPException, status + +class DeleteRepository(BaseRepository): + """ + Repositório para a operação de exclusão de um registro na tabela + g_tb_estadocivil. + """ + + def execute(self, estadocivil_schema: GTbEstadoCivilIdSchema): + """ + Executa a consulta SQL para remover um registro pelo ID. + + Args: + estadocivil_schema (GTbEstadoCivilIdSchema): O esquema com o ID a ser removido. + + Returns: + O resultado da operação de exclusão. + """ + try: + # Montagem do sql + sql = """ DELETE FROM G_TB_ESTADOCIVIL WHERE TB_ESTADOCIVIL_ID = :tb_estadocivil_id """ + + # Preenchimento de parâmetros + params = { + "tb_estadocivil_id": estadocivil_schema.tb_estadocivil_id + } + + # Execução do sql + response = self.run(sql, params) + + # Retorna o resultado + return response + + except Exception as e: + # Informa que houve uma falha na exclusão + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao excluir G_TB_ESTADOCIVIL: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_repository.py b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_repository.py new file mode 100644 index 0000000..9850878 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_get_by_descricao_repository.py @@ -0,0 +1,29 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilDescricaoSchema + +class GetByDescricaoRepository(BaseRepository): + """ + Repositório para a operação de busca de um registro na tabela + g_tb_estadocivil por descrição. + """ + + def execute(self, estadocivil_schema: GTbEstadoCivilDescricaoSchema): + """ + Executa a consulta SQL para buscar um registro pela descrição. + + Args: + estadocivil_schema (GTbEstadoCivilDescricaoSchema): O esquema com a descrição a ser buscada. + + Returns: + Um dicionário contendo os dados do registro ou None se não for encontrado. + """ + # Montagem do SQL + sql = """ SELECT * FROM G_TB_ESTADOCIVIL WHERE DESCRICAO = :descricao """ + + # Preenchimento de parâmetros + params = { + 'descricao': estadocivil_schema.descricao + } + + # Execução do sql + return self.fetch_one(sql, params) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_index_repository.py b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_index_repository.py new file mode 100644 index 0000000..d8091ed --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_index_repository.py @@ -0,0 +1,23 @@ +from abstracts.repository import BaseRepository + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela G_TB_ESTADOCIVIL. + """ + + def execute(self): + """ + Executa a consulta SQL para buscar todos os registros. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL + sql = """ SELECT * FROM G_TB_ESTADOCIVIL """ + + # Execução do sql + response = self.fetch_all(sql) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_save_repository.py b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_save_repository.py new file mode 100644 index 0000000..b9b7622 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_save_repository.py @@ -0,0 +1,59 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilSaveSchema + + +class SaveRepository(BaseRepository): + """ + Repositório para a operação de salvamento de um novo registro na tabela G_TB_ESTADOCIVIL. + """ + + def execute(self, estado_civil_schema: GTbEstadoCivilSaveSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + estado_civil_schema (GTBEstadoCivilSaveSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + + # Montagem do SQL + sql = """ INSERT INTO G_TB_ESTADOCIVIL( + TB_ESTADOCIVIL_ID, + DESCRICAO, + SITUACAO, + SISTEMA_ID, + TIPO + ) VALUES ( + :tb_estadocivil_id, + :descricao, + :situacao, + :sistema_id, + :tipo + ) RETURNING *;""" + + # Preenchimento de parâmetros + params = { + 'tb_estadocivil_id': estado_civil_schema.tb_estadocivil_id, + 'descricao': estado_civil_schema.descricao, + 'situacao': estado_civil_schema.situacao, + 'sistema_id': estado_civil_schema.sistema_id, + 'tipo': estado_civil_schema.tipo + } + + # Execução do sql + return self.run_and_return(sql, params) + + except Exception as e: + + # Informa que houve uma falha no salvamento do registro + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar Estado Civil: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_show_repository.py b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_show_repository.py new file mode 100644 index 0000000..0edafe4 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_show_repository.py @@ -0,0 +1,46 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilIdSchema +from fastapi import HTTPException, status + +class ShowRepository(BaseRepository): + """ + Repositório para a operação de exibição de um registro na tabela G_TB_ESTADOCIVIL. + """ + + def execute(self, estado_civil_schema: GTbEstadoCivilIdSchema): + """ + Busca um registro específico de Estado Civil pelo ID. + + Args: + estado_civil_schema (GTBEstadoCivilIdSchema): O esquema que contém o ID do registro. + + 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 + sql = "SELECT * FROM G_TB_ESTADOCIVIL WHERE TB_ESTADOCIVIL_ID = :tb_estadocivil_id" + + # Preenchimento de parâmetros + params = { + 'tb_estadocivil_id': estado_civil_schema.tb_estadocivil_id + } + + # Execução do SQL + result = self.fetch_one(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: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"Erro ao buscar registro: {str(e)}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_update_repository.py b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_update_repository.py new file mode 100644 index 0000000..1974819 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_tb_estadocivil/g_tb_estadocivil_update_repository.py @@ -0,0 +1,69 @@ +from abstracts.repository import BaseRepository +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilUpdateSchema +from fastapi import HTTPException, status + +class UpdateRepository(BaseRepository): + """ + Repositório para a operação de atualização na tabela G_TB_ESTADOCIVIL. + """ + + def execute(self, tb_estadocivil_id: int, estado_civil_schema: GTbEstadoCivilUpdateSchema): + """ + Executa a atualização de um registro na tabela. + + Args: + tb_estadocivil_id (int): O ID do registro a ser atualizado. + estado_civil_schema (GTBEstadoCivilUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O registro atualizado. + + Raises: + HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização. + """ + try: + updates = [] + params = {} + + if estado_civil_schema.descricao is not None: + updates.append("DESCRICAO = :descricao") + params["descricao"] = estado_civil_schema.descricao + + if estado_civil_schema.situacao is not None: + updates.append("SITUACAO = :situacao") + params["situacao"] = estado_civil_schema.situacao + + if estado_civil_schema.sistema_id is not None: + updates.append("SISTEMA_ID = :sistema_id") + params["sistema_id"] = estado_civil_schema.sistema_id + + if estado_civil_schema.tipo is not None: + updates.append("TIPO = :tipo") + params["tipo"] = estado_civil_schema.tipo + + if not updates: + return False + + params["tb_estadocivil_id"] = tb_estadocivil_id + sql = f"UPDATE G_TB_ESTADOCIVIL SET {', '.join(updates)} WHERE TB_ESTADOCIVIL_ID = :tb_estadocivil_id RETURNING *;" + + # Executa a query + result = self.run_and_return(sql, params) + + if not result.tb_estadocivil_id: + # Informa que não existe o registro a ser modificado + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail='Nenhum Estado Civil localizado para esta solicitação' + ) + + # Se houver um resultado, a atualização foi bem-sucedida + if result: + return result + + except Exception as e: + # Informa que houve uma falha na atualização + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao atualizar o Estado Civil: {e}" + ) \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/g_tb_estadocivil_schema.py b/packages/v1/administrativo/schemas/g_tb_estadocivil_schema.py new file mode 100644 index 0000000..a0de956 --- /dev/null +++ b/packages/v1/administrativo/schemas/g_tb_estadocivil_schema.py @@ -0,0 +1,114 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional + +# Funções para sanitização de entradas (evitar XSS, SQLi etc.) +from actions.validations.text import Text + +# ---------------------------------------------------- +# Schema base +# ---------------------------------------------------- +class GTbEstadoCivilSchema(BaseModel): + tb_estadocivil_id: Optional[int] = None + descricao: Optional[str] = None + situacao: Optional[str] = None + sistema_id: Optional[int] = None + tipo: Optional[int] = None + + class Config: + from_attributes = True + + +# ---------------------------------------------------- +# Schema para localizar um Estado Civil especifico pelo ID (GET) +# ---------------------------------------------------- +class GTbEstadoCivilIdSchema(BaseModel): + tb_estadocivil_id: int + + +# ---------------------------------------------------- +# Schema para localizar um Estado Civil especifico pela descrição (GET) +# ---------------------------------------------------- +class GTbEstadoCivilDescricaoSchema(BaseModel): + descricao: str + + +# ---------------------------------------------------- +# Schema para criação de novo Estado Civil (POST) +# ---------------------------------------------------- +class GTbEstadoCivilSaveSchema(BaseModel): + tb_estadocivil_id: Optional[int] = None + descricao: str + situacao: str + sistema_id: int + tipo: int + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if self.sistema_id is None: + errors.append({'input': 'sistema_id', 'message': 'O sistema_id é obrigatório.'}) + + if self.tipo is None: + errors.append({'input': 'tipo', 'message': 'O tipo é obrigatório.'}) + + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self + + +# ---------------------------------------------------- +# Schema para atualizar Estado Civil (PUT) +# ---------------------------------------------------- +class GTbEstadoCivilUpdateSchema(BaseModel): + + descricao: Optional[str] = None + situacao: Optional[str] = None + sistema_id: Optional[int] = None + tipo: Optional[int] = None + + # Sanitiza os inputs enviados + @field_validator('descricao', 'situacao') + def sanitize_fields(cls, v): + if v: + return Text.sanitize_input(v) + return v + + # Verifica se os campos obrigatórios foram enviados + @model_validator(mode='after') + def validate_all_fields(self): + errors = [] + + if not self.descricao or len(self.descricao.strip()) == 0: + errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'}) + + if not self.situacao or len(self.situacao.strip()) == 0: + errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'}) + + if errors: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=errors + ) + + return self \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_delete_service.py b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_delete_service.py new file mode 100644 index 0000000..217ef04 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_delete_service.py @@ -0,0 +1,27 @@ +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilIdSchema +from packages.v1.administrativo.actions.g_tb_estadocivil.g_tb_estadocivil_delete_action import DeleteAction + +class DeleteService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de exclusão de um registro na tabela G_TB_ESTADOCIVIL. + """ + + def execute(self, estado_civil_schema: GTbEstadoCivilIdSchema): + """ + Executa a operação de exclusão do registro no banco de dados. + + Args: + estado_civil_schema (GTBEstadoCivilIdSchema): O esquema com o ID do registro a ser excluído. + + Returns: + O resultado da operação de exclusão. + """ + # Instanciamento da ação + delete_action = DeleteAction() + + # Executa a ação em questão + data = delete_action.execute(estado_civil_schema) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_get_descricao_service.py b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_get_descricao_service.py new file mode 100644 index 0000000..a4707e3 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_get_descricao_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilDescricaoSchema +from packages.v1.administrativo.actions.g_tb_estadocivil.g_tb_estadocivil_get_by_descricao_action import GetByDescricaoAction + +class GetByDescricaoService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de busca de um registro na tabela G_TB_ESTADOCIVIL pela sua descrição. + """ + + def execute(self, estado_civil_schema: GTbEstadoCivilDescricaoSchema, messageValidate: bool): + """ + Executa a operação de busca no banco de dados. + + Args: + estado_civil_schema (GTBEstadoCivilDescricaoSchema): O esquema com a descrição a ser buscada. + 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 = GetByDescricaoAction() + + # Executa a ação em questão + data = show_action.execute(estado_civil_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 registro de Estado Civil' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_index_service.py b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_index_service.py new file mode 100644 index 0000000..7098ca5 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_index_service.py @@ -0,0 +1,32 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.actions.g_tb_estadocivil.g_tb_estadocivil_index_action import IndexAction + +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela G_TB_ESTADOCIVIL. + """ + + def execute(self): + """ + Executa a operação de busca de todos os registros no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação + index_action = IndexAction() + + # Executa a busca de todas as ações + data = index_action.execute() + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de Estado Civil' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_save_service.py b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_save_service.py new file mode 100644 index 0000000..ddf9ba7 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_save_service.py @@ -0,0 +1,74 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema +from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilSaveSchema, GTbEstadoCivilDescricaoSchema +from packages.v1.administrativo.actions.g_tb_estadocivil.g_tb_estadocivil_save_action import SaveAction +from fastapi import HTTPException, status + +class SaveService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvamento de um novo registro na tabela G_TB_ESTADOCIVIL. + """ + + def __init__(self): + # Ação responsável por carregar as services de acordo 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("g_tb_estadocivil") + pass + + # Cadastra o novo Estado Civil + def execute(self, estado_civil_schema: GTbEstadoCivilSaveSchema): + + # Armazena possíveis erros + errors = [] + + # Verifica se a descrição já está sendo utilizada + # Importação de service + descricao_service = self.dynamic_import.service("g_tb_estadocivil_get_descricao_service", "GetByDescricaoService") + + # Instanciamento da service + self.descricao_service = descricao_service() + + # Verifica se a descrição já está sendo utilizada + self.response = self.descricao_service.execute(GTbEstadoCivilDescricaoSchema(descricao=estado_civil_schema.descricao), False) + + # Se houver retorno significa que a descrição já está sendo utilizada + if self.response: + errors.append({'input': 'descricao', 'message': 'a descrição do Estado Civil informada já está sendo utilizada.'}) + + # Se houver erros, lança a exceção + if errors: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=errors + ) + + # Verifica se precisa gerar o ID de sequência + if not estado_civil_schema.tb_estadocivil_id: + + # Crio um objeto de sequencia + sequencia_schema = GSequenciaSchema() + + # Define os dados para atualizar a sequencia + sequencia_schema.tabela = 'G_TB_ESTADOCIVIL' + + # Busco a sequência atualizada + generate = GenerateService() + + # Busco a sequência atualizada + sequencia = generate.execute(sequencia_schema) + + # Atualiza os dados da chave primária + estado_civil_schema.tb_estadocivil_id = sequencia.sequencia + + # Instanciamento de ações + save_action = SaveAction() + + # Retorna o resultado da operação + return save_action.execute(estado_civil_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_show_service.py b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_show_service.py new file mode 100644 index 0000000..ed03acb --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_show_service.py @@ -0,0 +1,35 @@ +from fastapi import HTTPException, status +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilIdSchema +from packages.v1.administrativo.actions.g_tb_estadocivil.g_tb_estadocivil_show_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 G_TB_ESTADOCIVIL. + """ + + def execute(self, estado_civil_schema: GTbEstadoCivilIdSchema): + """ + Executa a operação de busca no banco de dados. + + Args: + estado_civil_schema (GTBEstadoCivilIdSchema): O esquema com o ID a ser buscado. + + Returns: + O resultado da busca. + """ + # Instanciamento da ação + show_action = ShowAction() + + # Executa a ação em questão + data = show_action.execute(estado_civil_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 Estado Civil' + ) + + # Retorno da informação + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_update_service.py b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_update_service.py new file mode 100644 index 0000000..e142d01 --- /dev/null +++ b/packages/v1/administrativo/services/g_tb_estadocivil/go/g_tb_estadocivil_update_service.py @@ -0,0 +1,23 @@ +from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import GTbEstadoCivilUpdateSchema +from packages.v1.administrativo.actions.g_tb_estadocivil.g_tb_estadocivil_update_action import UpdateAction + +class UpdateService: + """ + Serviço para a operação de atualização de um registro na tabela + G_TB_ESTADOCIVIL. + """ + def execute(self, tb_estadocivil_id : int, estado_civil_schema: GTbEstadoCivilUpdateSchema): + """ + Executa a operação de atualização no banco de dados. + + Args: + estado_civil_schema (GTBEstadoCivilUpdateSchema): O esquema com os dados a serem atualizados. + + Returns: + O resultado da operação de atualização. + """ + # Instanciamento de ações + update_action = UpdateAction() + + # Retorna o resultado da operação + return update_action.execute(tb_estadocivil_id, estado_civil_schema) \ No newline at end of file diff --git a/packages/v1/api.py b/packages/v1/api.py index 1b392e4..66d34d2 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -14,6 +14,7 @@ from packages.v1.administrativo.endpoints import g_tb_regimebens_endpoint from packages.v1.administrativo.endpoints import t_censec_endpoint from packages.v1.administrativo.endpoints import t_censec_naturezalitigio_endpoint from packages.v1.administrativo.endpoints import t_censec_qualidade_endpoint +from packages.v1.administrativo.endpoints import g_tb_estadocivil_endpoint # Cria uma instância do APIRouter que vai agregar todas as rotas da API api_router = APIRouter() @@ -79,4 +80,9 @@ api_router.include_router( # Inclui as rotas de t_censec_qualidade api_router.include_router( t_censec_qualidade_endpoint.router, prefix="/administrativo/t_censec_qualidade", tags=["CENSEC - Qualidade"] +) + +# Inclui as rotas de g_tb_estadocivil +api_router.include_router( + g_tb_estadocivil_endpoint.router, prefix="/administrativo/g_tb_estadocivil", tags=["Estado Civil"] ) \ No newline at end of file