You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

79 lines
2.0 KiB

const pagination = _req.getValues('pagination',_val.map());
const filter = _req.getValues('filter',_val.map());
const pageSize = 10;
let 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.page = 100;
}
const queryFilter = _val.list();
let queryWhere = '';
if (filter != null) {
if (filter.getString('data_criacao') != '') {
queryWhere += ' AND encomenda.data_criacao = ?::date';
queryFilter.add(`${ filter.getString('data_criacao') }`);
}
if (filter.getString('data_envio') != '') {
queryWhere += ' AND encomenda.data_envio = ?::date';
queryFilter.add(`${ filter.getString('data_envio') }`);
}
if (filter.getInt('status') > 0) {
queryWhere += ' AND encomenda.status = ?::int';
queryFilter.add(`${ filter.getInt('status') }`);
}
}
const dbEncomendas = _db.query(`
SELECT
encomenda.uid,
encomenda.valor,
encomenda.data_criacao,
encomenda.data_envio,
status_encomenda.status as status_nome,
status_encomenda.id as status_id
FROM encomenda
INNER JOIN status_encomenda ON status_encomenda.id = encomenda.status
WHERE 1 = 1
${queryWhere}
LIMIT ${page.size} OFFSET ${page.start}
`, queryFilter);
const encomendas = _val.list();
for (const encomenda of dbEncomendas) {
encomendas.add(
_val.map()
.set("uid", encomenda.getString('uid'))
.set("data_criacao", encomenda.getString('data_criacao'))
.set("data_envio", encomenda.getString('data_envio'))
.set("valor", encomenda.getFloat('valor').toFixed(2))
.set("status",
_val.map()
.set('nome', encomenda.getString('status_nome'))
.set('id', encomenda.getInt('status_id'))
)
)
}
_out.json(
_val.map()
.set("results", encomendas)
.set("total",
_db.queryFirst(`
SELECT COUNT(1) AS total
FROM encomenda
WHERE 1 = 1
${queryWhere}
`, queryFilter).getInt('total')
)
);