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') ) );