import { getRecomendElements } from "../../lib/getRecomended"; export default { Query: { recomendedForDish: { def: 'recomendedForDish(dishId: String): [Dish]', fn: async function (parent: any, args: any, context: any) { try { let criteria = {} const RECOMENDED_GROUPID_FOR_DISHES = await Settings.get("RECOMENDED_GROUPID_FOR_DISHES") as string let defaultGroup = null; let listOfAllowedGroups = null; if(RECOMENDED_GROUPID_FOR_DISHES){ defaultGroup = await Group.find({id: RECOMENDED_GROUPID_FOR_DISHES}) listOfAllowedGroups = await Group.getMenuTree(defaultGroup); } else { listOfAllowedGroups = await Group.getMenuTree(); } let dish = await Dish.findOne({id: args.dishId}); criteria['where'] = { 'and': [ { 'parentGroup': { 'in': listOfAllowedGroups } }, { 'balance': { "!=": 0 } }, { 'modifier': false }, { 'isDeleted': false } ] }; if (dish) { criteria['where']['and'].push({'parentGroup': { "!=": dish.parentGroup}}) } const array = await Dish.find(criteria); return getRecomendElements(array, 7); } catch (e) { sails.log.error(e); throw `${JSON.stringify(e)}` } } }, recomendedForOrder: { def: 'recomendedForOrder(orderId: String): [Dish]', fn: async function (parent: any, args: any, context: any) { try { const RECOMENDED_GROUPID_FOR_ORDER = await Settings.get("RECOMENDED_GROUPID_FOR_ORDER") as string let orderDishes = await OrderDish.find({order: args.orderId}); const orderDishIds = orderDishes.map(orderDish => orderDish.dish as string); let criteria = {} let defaultGroup = null; let listOfAllowedGroups = null; if(RECOMENDED_GROUPID_FOR_ORDER){ defaultGroup = await Group.find({id: RECOMENDED_GROUPID_FOR_ORDER}) listOfAllowedGroups = await Group.getMenuTree(defaultGroup); } else { listOfAllowedGroups = await Group.getMenuTree(); } criteria['where'] = { 'and': [ { 'parentGroup': { 'in': listOfAllowedGroups } }, { 'balance': { "!=": 0 } }, { 'modifier': false }, { 'isDeleted': false } ] }; if (orderDishIds.length) { criteria["where"]["and"].push({id : {"!=": orderDishIds}}) } const allDishes = await Dish.find(criteria) return getRecomendElements(allDishes, 7); } catch (e) { sails.log.error(e); throw `${JSON.stringify(e)}` } } } } }