articulos.js 1.38 KB
var bookshelf = require('bookshelf')(knex);
bookshelf.plugin('pagination');

const ArticuloImagen = bookshelf.Model.extend({
  tableName: 'ARTICULOS_IMAGEN'
});

const Articulo = bookshelf.Model.extend({
  tableName: 'ARTICULOS',
  imagenes: function () {
    return this.hasMany(ArticuloImagen, 'id_articulo', 'id');
  }
});

router.get('/articulos/:page', (req, res) => {

  Articulo
    .query((qb) => {
      qb.where('NHA', 0);
      qb.where('PreVen', '>', 0);
    })
    .orderBy('id', 'asc')
    .fetchPage({
      pageSize: 150,
      page: req.params.page,
      withRelated: ['imagenes']
    })    
    .then(data => {

      var promisesCodBar = [];

      data.forEach(articulo => {

        promisesCodBar.push(
          knex('CODBAR').where({
            CodSec: articulo.get('CodSec'),
            CodArt: articulo.get('CodArt')
          })
        );
      });

      Promise.all(promisesCodBar).then((codigoBarra) => {

        codigoBarra.forEach(codigo => {
          codigo = codigo[0];

          if (codigo) {

            let articulo = data.filter(art => {
              return art.get('CodArt') == codigo.CodArt;
            });

            articulo[0].set('codigoBarra', codigo.CodBar);
          }
        });
        res.status(200).send(
          {
            data: data,
            pagination: data.pagination,
          });
      });

    });
});

module.exports = router;