var EditarPermissoesController = ControllerBase.extend({
    

    framework: 'knockout',

    ajax: function () {

        return {
            url: '/Usuario/_EditarPermissoes',
            type: 'post',
            cache: false
        };
    },

    antesBinding: function () {
        this.appendToModel({ name: 'permissoes', value: [{ Descricao: 'Permitido', Valor: true }, { Descricao: 'Não Permitido', Valor: false }] });
        this.appendToModel({ name: 'funcionalidadeSelecionada' });
    },
    
    expandir: function (model) {

        if (!model.expandido) {
            model.expandido = ko.observable(false);
        }

        model.expandido(!model.expandido());
    },
    
    expandirFuncionalidade: function(model) {

        this.expandir(model);
        
        if (!model.expandido()) {
            return;
        }
        
        global.ajax({            
            url: '/Usuario/ListarFuncionalidades',
            type: 'post',
            data: {
                codigoModulo: model.Codigo()
            },
            success: function(data) {
                
                var arr = ko.mapping.fromJS(data)();
                model.Funcionalidades(arr);
                
            }
        });

    },
    
    selecionarFuncionalidade: function(model) {
        this.model.funcionalidadeSelecionada(model);
    },
    
    expandirGrupo: function (model) {

        model.expandido(!model.expandido());

        if (!model.expandido()) return;

        if (model.Grupos && model.Grupos() && model.Grupos().length > 0) return;

        global.ajax({
            url: '/Usuario/ListarGrupos',
            type: 'post',
            data: {
                codigoUsuario: model.Codigo()
            },
            success: function (data) {
                var arr = ko.mapping.fromJS(data)();
                model.Grupos(arr);
            }
        });

    },
    
    expandirUsuarios: function(model) {

        this.expandir(model);
        
        if (!model.expandido()) {
            return;
        }
        

        global.ajax({
            url: '/Usuario/ListarUsuarios',
            type: 'post',
            data: {
                codigoModulo: model.Codigo()
            },
            success: function (data) {

                var arr = ko.mapping.fromJS(data)();
                model.Funcionalidades(arr);

            }
        });


    },
    
    expandirAcoes: function(model) {
        
        this.expandir(model);
        
        if (!model.expandido()) {
            return;
        }

    }

});