var PesquisarUsuarioController = ControllerBase.extend({    
   
    framework: 'knockout',
    
    ajax: function() {
        
        return {
            url: '/Usuario/_Pesquisar',
            type: 'post',
            cache: false
        };
    },
    
    antesBinding: function () {
        this.appendToModel({ name: 'usuarios', value: [] });

    },
    
    renderizado: function() {
        $('input[name=Nome]', this.region.$el).focus();
    },
    
    formConfig: {
        selector: '#form-pesquisar-usuario',
        submit: {
            selector: '#pesquisar-usuarios',
            loadingText: 'Aguarde...',
            callback: 'pesquisar',
            type: 'form',
            modelType: 'js'
        }
    },
    
    pesquisar: function(model) {

        if (model) {
            this.pesquisa = model;
        }

        var self = this;

        global.ajax({
            url: '/Usuario/Pesquisar',
            type: 'post',
            data: {
                nome: model.Nome,
                pagina: model.pagina ? model.pagina : 1,
                tamanhoPagina: 10
            },
            success: function (data) {

                self.carregar(data);
            }
        });
        
    },
    
    carregar: function(data) {

        if (data && data.Entities) {
            this.model.usuarios(data.Entities);
        } else {
            this.model.usuarios(undefined);
        }

        this.paginador = new Paginator({
            container: '#pesquisar-usuario-page-container',
            data: data,
            pageClickCallback: $.proxy(this.paginar, this)
        });

    },
    
    paginar: function (e) {
        this.pesquisa.pagina = e.page;
        this.pesquisar(this.pesquisa);
    },
    
    editar: function(model) {
        

        this.editarUsuarioController = this.showView({
            region: {
                name: 'editarUsuarioRegion',
                selector: '#editar-usuario-region'
            },
            controller: {
                type: EditarUsuarioController,
                args: {
                    codigoUsuario: model.Codigo,
                    sairEdicaoCallback: $.proxy(this.sairEdicao, this)
                }
            }
        });

    },
    
    sairEdicao: function () {

        this.editarUsuarioController.hide();
        this.show();
    },
    
    pesquisarGrupos: function() {
        
        this.gruposUsuarioController = this.showView({
            region: {
                name: 'gruposUsuarioRegion',
                selector: '#grupos-usuario-region'
            },
            controller: {
                type: GruposUsuarioController
            }
        });

    }


});