/**
* @ngdoc directives
* @name MensageriaFilter
* @module s4c.directives.MensageriaFilter.mensageriaFilter
*
* @description
* `MensageriaFilter` Gerenciamento do filtro do módulo de mensageria
*
*/
(function () {
angular.module('s4c.components.mensageria-filter', [])
.directive('mensageriaFilter', MensageriaFilter);
MensageriaFilter.$inject = [
'MensageriaFilter',
'MensageriaService',
'Departamento'
];
function MensageriaFilter(MensageriaFilter, MensageriaService, Departamento) {
return {
restrict: 'E',
templateUrl: 'app/directives/mensageria-filter/mensageria-filter.html',
replace: true,
scope: {},
link: function ($scope, $elem, $attrs) {
angular.extend($scope, {
filters: MensageriaFilter.getInstance($attrs.id).filters,
statuses: [{
value: -1,
label: 'Status'
}, {
value: 0,
label: 'Offline'
}, {
value: 1,
label: 'Online'
}],
departamentos: [],
perfis: [],
carregarPerfil: carregarPerfil,
res: $scope.$root.res
})
$scope.$watch('[filters.status, filters.departamento, filters.perfil]', function () {
MensageriaFilter.getInstance($attrs.id).trigger('filterChanged');
});
Departamento.getAgencias().then(function (departamentos) {
$scope.departamentos = _.map(departamentos, function (departamento) {
return {
value: departamento.id,
label: departamento.nome
};
});
$scope.departamentos.unshift({
value: -1,
label: 'Departamento'
});
$scope.filters.departamento = -1;
});
//$scope.filters.perfil;
/**
* @method carregarPerfil
*/
function carregarPerfil() {
MensageriaService.getPerfisByDepartamento($scope.filters.departamento)
.then(function (perfis) {
$scope.perfis = _.map(perfis, function (perfil) {
return {
value: perfil.id,
label: perfil.nome
};
});
$scope.perfis.unshift({
value: -1,
label: 'Perfil'
});
$scope.filters.perfil = $scope.perfis[0].value;
});
}
}
}
}
}());