module.exports = (server, db) => {
  return {
    index: (req, res, next) => {
      db.query('SELECT SUM(PED_BIST_PROD_QNT) AS PED_BIST_ITENS, PED_BIST_VOUCHER FROM PEDIDOS_BISTRO GROUP BY PED_BIST_VOUCHER ORDER BY PED_BIST_VOUCHER DESC', (error, data) => {
        res.send(data)
        next()
      })
    },

    products: (req, res, next) => {
      let voucher = '#' + req.params.voucher

      let queryString = "SELECT PEDIDOS.*, PRODUTOS.PRODUTO_DESCRICAO, PRODUTOS.PRODUTO_VAL_VENDA FROM PEDIDOS_BISTRO AS PEDIDOS INNER JOIN PRODUTOS ON (PEDIDOS.PED_BIST_PRODUTO_ID = PRODUTOS.PRODUTO_ID) WHERE PED_BIST_VOUCHER = ?"
      let queryData = [voucher]

      db.query(queryString, queryData, (error, data) => {
        res.send(data)
        next()
      })
    },

    store: (req, res, next) => {
      let { items, voucher, table, waiterName, hash } = req.body

      if (! voucher) {
        res.send('Número da comanda inválido.')
        return next()
      }
	  
      let queryString = 'INSERT INTO PEDIDOS_BISTRO (PED_BIST_VOUCHER, PED_BIST_MESA, PED_BIST_GARCON, PED_BIST_PRODUTO_ID, PED_BIST_PROD_ACRESCIMO, PED_BIST_PROD_QNT, PED_BIST_OBSERV, PED_BIST_HASH) VALUES (?, ?, ?, ?, ?, ?, ?, ?);'

      items.forEach(item => {
        let notes = item.notes || ''

        db.query(queryString, ['#'+voucher, table, waiterName, item.id, item.additions, item.quantity, notes, hash])
      })

      res.send('ok')
      next()
    },

    removeProduct: (req, res, next) => {
      let { productId, hash } = req.body

      let queryString = "DELETE FROM PEDIDOS_BISTRO WHERE PED_BIST_PRODUTO_ID = ? AND PED_BIST_HASH = ?;"
      let queryData = [productId, hash]

      db.query(queryString, queryData, (error, data) => {
        res.send(data)
        next()
      })
    },

  }
}
