'use strict';

var async = require('async');
var nconf = require('nconf');

var admin = require('./admin');
var translator = require('../translator');
const groups = require('../groups');

var navigation = module.exports;

navigation.get = function (uid, callback) {
	async.waterfall([
		admin.get,
		function (data, next) {
			data = data.filter(function (item) {
				return item && item.enabled;
			}).map(function (item) {
				item.originalRoute = item.route;

				if (!item.route.startsWith('http')) {
					item.route = nconf.get('relative_path') + item.route;
				}

				Object.keys(item).forEach(function (key) {
					item[key] = translator.unescape(item[key]);
				});

				return item;
			});

			async.filter(data, function (navItem, next) {
				if (!navItem.groups.length) {
					return setImmediate(next, null, true);
				}
				groups.isMemberOfAny(uid, navItem.groups, next);
			}, next);
		},
	], callback);
};