const _        = require('underscore');
const Backbone = require('backbone');

const model = Backbone.Model.extend({
    idAttribute: 'id',

    defaults: function () {
        return {
            id:          undefined,
            name:        '',
            nickname:    '',
            email:       '',
            is_disabled: false,
            roles:       [],
            permissions: null
        };
    },

    /**
     * @returns {Boolean}
     */
    isAdmin: function () {
        return _.indexOf(this.get('roles'), 'admin') !== -1;
    },

    /**
     * Checks if the perm has either `view` or `manage` value
     *
     * @param   {String}  item
     * @returns {Boolean}
     */
    canView: function (item) {
        let permissions = this.get('permissions');
        return permissions !== null && typeof permissions[item] !== 'undefined' && ['view', 'manage'].indexOf(permissions[item]) !== -1;
    },

    /**
     * Checks if the perm has `manage` value
     *
     * @param   {String}  item
     * @returns {Boolean}
     */
    canManage: function (item) {
        let permissions = this.get('permissions');
        return permissions !== null && typeof permissions[item] !== 'undefined' && permissions[item] === 'manage';
    }
});

module.exports = {
    Model:      model,
    Collection: Backbone.Collection.extend({
        model: model
    })
};