const models = require('../models') const vegetableTypes = models.vegetableTypes class VegetableTypes { static getAll (req, callback) { vegetableTypes.findAndCountAll({ order: [ ['name', 'ASC'] ], include: [{ model: models.vegetables, as: 'Vegetables', order: [ ['name', 'ASC'] ] }] }) .then(items => { if (!items) { callback(new Error('No vegetable type found'), 204) return false } let res = [] for (let i = 0; i < items.rows.length; i += 1) { let type = items[i].rows.toJSON() let vegetables = [] for (let j = 0; j < type.Vegetables.length; j += 1) { let k = 0 for (k = 0; k < vegetables.length; k += 1) { if (type.Vegetables[j].name < vegetables[k]) { break } } vegetables.splice(k, 0, type.Vegetables[j]) } type.Vegetables = vegetables res.push(type) } callback(null, { count: items.count, rows: res }) }) .catch((e) => { callback(e, null) }) } createOne (req, callback) { vegetableTypes.create(req.body) .then(item => { callback(null, item) }) .catch(e => { callback(e, null) }) } static getOne (req, callback) { vegetableTypes.findById( req.params.vegetableTypesId, { include: [{ model: models.vegetables, as: 'Vegetables', order: [ ['name', 'ASC'] ] }] }) .then(item => { if (!item) { callback(new Error('Item vegetable type not found'), 404) return false } callback(null, item) }) .catch((e) => { callback(e, null) }) } patchOne (req, callback) { VegetableTypes.getOne(req, (err, item) => { if (err) { callback(err, item) return false } item.update(req.body) .then(animal => { callback(null, animal) }) .catch(e => { callback(e, null) }) }) } deleteOne (req, callback) { VegetableTypes.getOne(req, (err, item) => { if (err) { callback(err, item) return false } vegetableTypes.destroy({ where: { id: req.params.vegetableTypesId } }) .then(deleted => { if (deleted === 0) { callback(new Error('Error when trying to delete item')) return false } callback(null, null) }) .catch(e => { callback(e, null) }) }) } } module.exports = VegetableTypes