From 9346bffa3e6d0fc69ce3aff2c5f3a2a6a1ddd669 Mon Sep 17 00:00:00 2001
From: Pietro Polinari Cavassin <ppc19@inf.ufpr.br>
Date: Fri, 16 Sep 2022 10:54:32 -0300
Subject: [PATCH] Add region and state not filter

---
 src/libs/routes/city.js   | 34 +++++++++++++++++++++++++++++++++-
 src/libs/routes/region.js | 10 ++++++++++
 src/libs/routes/state.js  |  9 +++++++++
 3 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/src/libs/routes/city.js b/src/libs/routes/city.js
index 1686c850..fc697a9f 100644
--- a/src/libs/routes/city.js
+++ b/src/libs/routes/city.js
@@ -69,6 +69,22 @@ rqf.addField({
         foreign: 'estado_id',
         foreignTable: 'municipio'
     }
+}).addValue({
+    name: 'state_not',
+    table: 'estado',
+    tableField: ['nome', 'id'],
+    resultField: ['state_name', 'state_id'],
+    where: {
+        relation: '<>',
+        type: 'integer',
+        field: 'estado_id',
+        table: 'municipio'
+    },
+    join: {
+        primary: 'id',
+        foreign: 'estado_id',
+        foreignTable: 'municipio'
+    }
 }).addField({
     name: 'search',
     field: false,
@@ -100,7 +116,23 @@ rqf.addField({
         type: 'integer',
         field: 'microrregiao_id'
     }
-});
+}).addValueToField({
+    name: 'region',
+    table: 'estado',
+    tableField: 'regiao_id',
+    resultField: 'region_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'regiao_id',
+        table: 'estado'
+    },
+    join: {
+        primary: 'id',
+        foreign: 'estado_id',
+        foreignTable: 'municipio'
+    }
+}, 'filter');
 
 // Return all cities
 cityApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
diff --git a/src/libs/routes/region.js b/src/libs/routes/region.js
index b1076e64..5df65e72 100644
--- a/src/libs/routes/region.js
+++ b/src/libs/routes/region.js
@@ -36,6 +36,16 @@ rqf.addField({
         field: 'id',
         table: '@'
     }
+}).addValue({
+    name: 'id_not',
+    table: '@',
+    tableField: 'id',
+    where: {
+        relation: '<>',
+        type: 'integer',
+        field: 'id',
+        table: '@'
+    }
 }).addField({
     name: 'search',
     field: false,
diff --git a/src/libs/routes/state.js b/src/libs/routes/state.js
index 453ca6eb..c9830b20 100644
--- a/src/libs/routes/state.js
+++ b/src/libs/routes/state.js
@@ -53,6 +53,15 @@ rqf.addField({
         type: 'integer',
         field: 'id'
     }
+}).addValue({
+    name: 'id_not',
+    table: 'estado',
+    tableField: 'id',
+    where: {
+        relation: '<>',
+        type: 'integer',
+        field: 'id'
+    }
 }).addValue({
     name: 'region',
     table: 'regiao',
-- 
GitLab