const pagination = _req.getValues('pagination');
|
|
const filter = _req.getValues('filter');
|
|
|
|
const pageSize = 5;
|
|
const page = {start:0,size:pageSize};
|
|
|
|
if (pagination != null) {
|
|
page.size = pagination.getInt('pageSize', pageSize);
|
|
page.start = (pagination.getInt('current', 1) - 1 ) * page.size;
|
|
}
|
|
if (page.size > 100) {
|
|
page.size = 100;
|
|
}
|
|
|
|
let queryWhere = '';
|
|
const queryFilter = _val.list();
|
|
|
|
if (filter != null) {
|
|
if (filter.getString('nome') != null) {
|
|
queryWhere += ` AND cliente.nome LIKE ?`;
|
|
queryFilter.add(`%${ filter.getString('nome') }%`);
|
|
}
|
|
}
|
|
|
|
const dbClientes = _db.query(`
|
|
SELECT
|
|
cliente.nome AS cliente_nome, cliente.email, cliente.uid, pais.nome AS pais_nome
|
|
FROM cliente
|
|
INNER JOIN pais ON pais.uid = cliente.pais_uid
|
|
WHERE 1 = 1
|
|
${queryWhere}
|
|
ORDER BY cliente.id
|
|
LIMIT ${page.size} OFFSET ${page.start}
|
|
`,queryFilter);
|
|
|
|
const clientes = _val.list();
|
|
|
|
for (const dbCliente of dbClientes) {
|
|
clientes.add(
|
|
_val.map()
|
|
.set("nome", dbCliente.getString("cliente_nome"))
|
|
.set("email", dbCliente.getString("email"))
|
|
.set("uid", dbCliente.getString("uid"))
|
|
.set("pais",
|
|
_val.map()
|
|
.set("nome",dbCliente.getString('pais_nome'))
|
|
)
|
|
)
|
|
};
|
|
|
|
_out.json(
|
|
_val.map()
|
|
.set("result", clientes)
|
|
.set("total",
|
|
_db.queryFirst(`
|
|
SELECT COUNT(1) AS total
|
|
FROM cliente
|
|
WHERE 1 = 1
|
|
${queryWhere}`,queryFilter).getInt('total')
|
|
)
|
|
)
|