/**
* @ngdoc service
* @name Permissoes.Service
* @module s4c.services.Permissoes.Service
*
* @description Componente para acesso a api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.services.PermissoesService', [])
.factory('PermissoesService', PermissoesService);
/**
* @method PermissoesService
* @param {*} $http
* @param {*} $q
* @param {*} PERMISSOES_ENUM
* @param {*} AuthService
* @param {*} CamadasService
* @param {*} MainState
*/
function PermissoesService(
AuthService,
PERMISSOES_ENUM,
$q,
$http,
CamadasService,
MainState
) {
var service = {};
/**
* @method getPermissoes
*/
function getPermissoes() {
var p = $q.defer();
service.permissoesVisualizacao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false
};
service.permissoesCriacao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false,
arquivoPublico: false
};
service.permissoesEdicao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false
};
service.permissoesRemocao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false,
arquivoPublico: false
};
service.permissoesExtras = {
responderBriefing: false,
salaDeBriefing: false,
adicionarPresetAgencia: false,
adicionarNota: false,
adicionarArquivo: false,
removerArquivo: false,
removerIncidente: false
};
AuthService.getUserInfo().then(function (userInfo) {
service.permissoesNums = [];
_.each(userInfo.Perfils, function (perfil) {
service.permissoesNums = service.permissoesNums.concat(_.map(perfil.PermissaoAcessos, 'numero'));
});
if (service.permissoesNums.length > 0) {
service.permissoesVisualizacao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_BASE_CONHECIMENTO_PUBLICA);
service.permissoesVisualizacao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_PLANEJAMENTO_PUBLICO);
service.permissoesVisualizacao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_ROTA_PUBLICA);
service.permissoesVisualizacao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_ZONA_OBSERVACAO_PUBLICA);
service.permissoesVisualizacao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_PRESET_PUBLICO);
service.permissoesCriacao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_BASE_CONHECIMENTO_PUBLICA);
service.permissoesCriacao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_PLANEJAMENTO_PUBLICO);
service.permissoesCriacao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_ROTA_PUBLICA);
service.permissoesCriacao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_ZONA_OBSERVACAO_PUBLICA);
service.permissoesCriacao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_PRESET_PUBLICO);
service.permissoesEdicao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_BASE_CONHECIMENTO_PUBLICA);
service.permissoesEdicao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_PLANEJAMENTO_PUBLICO);
service.permissoesEdicao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_ROTA_PUBLICA);
service.permissoesEdicao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_ZONA_OBSERVACAO_PUBLICA);
service.permissoesEdicao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_PRESET_PUBLICO);
service.permissoesRemocao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_BASE_CONHECIMENTO_PUBLICA);
service.permissoesRemocao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_PLANEJAMENTO_PUBLICO);
service.permissoesRemocao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ROTA_PUBLICA);
service.permissoesRemocao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ZONA_OBSERVACAO_PUBLICA);
service.permissoesRemocao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_PRESET_PUBLICO);
service.permissoesCriacao.arquivoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.ADICIONAR_ARQUIVO_PUBLICO);
service.permissoesRemocao.arquivoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ARQUIVO_PUBLICO);
service.permissoesExtras.responderBriefing = _.includes(service.permissoesNums, PERMISSOES_ENUM.RESPONDER_BRIEFING);
service.permissoesExtras.salaDeBriefing = _.includes(service.permissoesNums, PERMISSOES_ENUM.SALA_DE_BRIEFING);
service.permissoesExtras.alterarPresetAgencia = _.includes(service.permissoesNums, PERMISSOES_ENUM.ALTERAR_PRESET_AGENCIA);
service.permissoesExtras.removerIncidente = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_INCIDENTE);
service.permissoesExtras.adicionarNota = _.includes(service.permissoesNums, PERMISSOES_ENUM.ADICIONAR_NOTA);
service.permissoesExtras.adicionarArquivo = _.includes(service.permissoesNums, PERMISSOES_ENUM.ADICIONAR_ARQUIVO);
service.permissoesExtras.removerArquivo = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ARQUIVO);
}
p.resolve(service);
});
return p.promise;
}
/**
* @method atualizarPermissoes
* @param {*} perfil
*/
function atualizarPermissoes(perfil) {
var p = $q.defer();
service.permissoesVisualizacao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false
};
service.permissoesCriacao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false,
arquivoPublico: false
};
service.permissoesEdicao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false
};
service.permissoesRemocao = {
baseConhecimentoPublica: false,
planejamentoPublico: false,
rotaPublica: false,
zonaObservacaoPublica: false,
presetPublico: false,
arquivoPublico: false
};
service.permissoesExtras = {
responderBriefing: false,
salaDeBriefing: false,
adicionarPresetAgencia: false,
adicionarNota: false,
adicionarArquivo: false,
removerArquivo: false,
removerIncidente: false
};
service.permissoesNums = [];
service.permissoesNums = service.permissoesNums.concat(_.map(perfil.permissaoAcessos, 'numero'));
if (service.permissoesNums.length > 0) {
service.permissoesVisualizacao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_BASE_CONHECIMENTO_PUBLICA);
service.permissoesVisualizacao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_PLANEJAMENTO_PUBLICO);
service.permissoesVisualizacao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_ROTA_PUBLICA);
service.permissoesVisualizacao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_ZONA_OBSERVACAO_PUBLICA);
service.permissoesVisualizacao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.VISUALIZAR_PRESET_PUBLICO);
service.permissoesCriacao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_BASE_CONHECIMENTO_PUBLICA);
service.permissoesCriacao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_PLANEJAMENTO_PUBLICO);
service.permissoesCriacao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_ROTA_PUBLICA);
service.permissoesCriacao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_ZONA_OBSERVACAO_PUBLICA);
service.permissoesCriacao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.CRIAR_PRESET_PUBLICO);
service.permissoesEdicao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_BASE_CONHECIMENTO_PUBLICA);
service.permissoesEdicao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_PLANEJAMENTO_PUBLICO);
service.permissoesEdicao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_ROTA_PUBLICA);
service.permissoesEdicao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_ZONA_OBSERVACAO_PUBLICA);
service.permissoesEdicao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.EDITAR_PRESET_PUBLICO);
service.permissoesRemocao.baseConhecimentoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_BASE_CONHECIMENTO_PUBLICA);
service.permissoesRemocao.planejamentoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_PLANEJAMENTO_PUBLICO);
service.permissoesRemocao.rotaPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ROTA_PUBLICA);
service.permissoesRemocao.zonaObservacaoPublica = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ZONA_OBSERVACAO_PUBLICA);
service.permissoesRemocao.presetPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_PRESET_PUBLICO);
service.permissoesCriacao.arquivoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.ADICIONAR_ARQUIVO_PUBLICO);
service.permissoesRemocao.arquivoPublico = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ARQUIVO_PUBLICO);
service.permissoesExtras.responderBriefing = _.includes(service.permissoesNums, PERMISSOES_ENUM.RESPONDER_BRIEFING);
service.permissoesExtras.salaDeBriefing = _.includes(service.permissoesNums, PERMISSOES_ENUM.SALA_DE_BRIEFING);
service.permissoesExtras.alterarPresetAgencia = _.includes(service.permissoesNums, PERMISSOES_ENUM.ALTERAR_PRESET_AGENCIA);
service.permissoesExtras.removerIncidente = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_INCIDENTE);
service.permissoesExtras.adicionarNota = _.includes(service.permissoesNums, PERMISSOES_ENUM.ADICIONAR_NOTA);
service.permissoesExtras.adicionarArquivo = _.includes(service.permissoesNums, PERMISSOES_ENUM.ADICIONAR_ARQUIVO);
service.permissoesExtras.removerArquivo = _.includes(service.permissoesNums, PERMISSOES_ENUM.REMOVER_ARQUIVO);
}
AuthService.getUserInfo().then(function (userInfo) {
_.each(userInfo.Perfils, function (perfil_) {
if (perfil_.id = perfil.id) {
perfil_.PermissaoAcessos = perfil.permissaoAcessos;
}
});
});
p.resolve(service);
return p.promise;
}
/**
* @method verificarPermissaoAreaAtuacao
* @param {*} filtro
*/
function verificarPermissaoAreaAtuacao(filtro) {
var deferred = $q.defer();
$http.post("/permissoes/areaAtuacao", filtro)
.then(function (result) {
var dto = result.data;
var areaAtuacaoDirective = MainState.getDirective('areaAtuacao');
if (!dto.temPermissao) {
areaAtuacaoDirective.carregarLayerAreaAtuacaoNaoPermitida(dto.regioes);
}
deferred.resolve(dto.temPermissao);
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method verificarPermissaoAreaAtuacaoLista
* @param {*} filtros
*/
function verificarPermissaoAreaAtuacaoLista(filtros) {
var deferred = $q.defer();
$http.post("/permissoes/areaAtuacao/list", filtros)
.then(function (result) {
var list = result.data;
var areaAtuacaoDirective = MainState.getDirective('areaAtuacao');
var regioes = [];
_.each(list, function (dto) {
if (!dto.temPermissao) {
//Faço isso para remover regiões repetidas
_.each(dto.regioes, function (regiao) {
if (!verificaExistenciaRegiao(regioes, regiao)) {
regioes.push(regiao);
}
});
}
});
areaAtuacaoDirective.carregarLayerAreaAtuacaoNaoPermitida(regioes);
deferred.resolve(result.data);
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method verificaExistenciaRegiao
* @param {*} regioes
* @param {*} regiaoBuscar
*/
function verificaExistenciaRegiao(regioes, regiaoBuscar) {
for (var i = 0; i < regioes.length; i++) {
if (regioes[i].id == regiaoBuscar.id) {
return true;
}
}
return false;
}
return {
getPermissoes: getPermissoes,
verificarPermissaoAreaAtuacao: verificarPermissaoAreaAtuacao,
verificarPermissaoAreaAtuacaoLista: verificarPermissaoAreaAtuacaoLista,
atualizarPermissoes: atualizarPermissoes
};
}
PermissoesService.$inject = [
'AuthService',
'PERMISSOES_ENUM',
'$q',
'$http',
'CamadasService',
'MainState'
];
}());