/**
* @ngdoc controllers
* @name Alarmes.Controller
* @module s4c.components.admin.controllers.Alarmes
*
* @description
* `AdminAlarmesCtrl` Controller da tela de Alarmes do módulo de administração
*
*
*/
(function () {
'use strict';
angular.module('s4c.controllers.AdminAlarmesCtrl', [
'ngMaterial',
's4c.services.Departamento',
's4c.services.Alarme',
's4c.services.Categoria'
])
.controller('AdminAlarmesCtrl', AdminAlarmesCtrl)
AdminAlarmesCtrl.$inject = ['$scope', 'Departamento', 'Usuario', 'Alarme', 'Categoria', '$mdDialog', 'localize']
function AdminAlarmesCtrl($scope, Departamento, Usuario, Alarme, Categoria, $mdDialog, localize) {
$scope.res = $scope.$root.res;
$scope.criandoAlarme = false;
/**
* @method limparAlarme
* @param {*} recarregarAlarmes
*/
function limparAlarme(recarregarAlarmes) {
$scope.alarme = {
tipo: undefined,
participantes: [],
categorias: [],
detalhes: {}
}
if (recarregarAlarmes) {
carregarAlarmes();
}
}
limparAlarme(true);
/**
* @method carregarAlarmes
*/
function carregarAlarmes() {
Alarme.queryAdminastracao().then(function (alarmes) {
$scope.alarmes = alarmes;
_.each($scope.alarmes, function (alarme) {
verifyType(alarme);
});
})
}
/**
* @method adicionarParticipante
*/
function adicionarParticipante() {
$scope.queryParticipantes = '';
if ($scope.participanteSelecionado) {
$scope.alarme.participantes.push($scope.participanteSelecionado);
}
}
/**
* @method adicionarCategoria
*/
function adicionarCategoria() {
$scope.queryCategorias = '';
if ($scope.categoriaSelecionada) {
$scope.alarme.categorias.push($scope.categoriaSelecionada);
}
}
/**
* @method temAlarmessRepetidos
*/
function temAlarmessRepetidos() {
var temRepetidos = false;
var nome = $scope.alarme.nome;
angular.forEach($scope.alarmes, function (alarme) {
var newNome = alarme.nome;
if (newNome == nome) {
temRepetidos = true;
return;
}
});
return temRepetidos;
}
/**
* @method verifyType
* @param {*} alarme
*/
function verifyType(alarme) {
if (!alarme) {
return;
}
for (var index in $scope.tipos) {
if (alarme.tipo.includes($scope.tipos[index].nome.substring(0, 3)) || alarme.tipo.includes('Chat') || alarme.tipo.includes('Mens')) {
alarme.tipoId = $scope.tipos[index].id;
return;
}
}
$scope.alarmes.splice($scope.alarmes.indexOf(alarme), 1);
}
/**
* @method salvar
*/
function salvar() {
$scope.alarme.detalhes.palavras = _.words($scope.alarme.detalhes.palavras);
// Alarme validation
if (!$scope.alarme.nome || $scope.alarme.nome === null) {
$mdDialog
.show($mdDialog.alert()
.title($scope.res('COMUM_ERRO'))
.content($scope.res('ALARME_PRECISADENOME'))
.ok($scope.res('COMUM_OK')));
return false;
}
if (!$scope.alarme.tipo) {
$mdDialog
.show($mdDialog.alert()
.title($scope.res('COMUM_ERRO'))
.content($scope.res('ALARME_PRECISADETIPO'))
.ok($scope.res('COMUM_OK')));
return false;
}
if (temAlarmessRepetidos() && !$scope.isEdition) {
$mdDialog
.show($mdDialog.alert()
.title($scope.res('COMUM_ERRO'))
.content($scope.res('ALARME_EXISTENTE'))
.ok('OK'));
return false;
}
$scope.alarme.detalhes.categorias = _.chain($scope.alarme.categorias)
.map('id')
.value();
$scope.alarme.detalhes.departamentos = _.chain($scope.departamentos)
.filter({
ativo: true
})
.map('id')
.value();
$scope.alarme.detalhes = $scope.alarme.detalhes;
Alarme.save($scope.alarme)
.then(function () {
$mdDialog
.show($mdDialog.alert()
.title($scope.res('COMUM_SUCESSO'))
.content($scope.res('ALERTA_SALVOCOMSUCESSO'))
.ok($scope.res('COMUM_OK')));
cancelar();
limparAlarme();
carregarAlarmes();
$scope.isEdition = false;
})
}
/**
* @method editarAlarme
* @param {*} alarme
*/
function editarAlarme(alarme) {
$scope.alarme = alarme;
$scope.criandoAlarme = true;
$scope.isEdition = true;
if ($scope.alarme.tipo == "Incidente" && alarme.detalhes.tempo != null) {
$scope.alarme.incidenteAberto = true;
}
_.each(alarme.detalhes.departamentos, function (departamentoId) {
var departamento = _.find($scope.departamentos, { id: departamentoId });
departamento.ativo = true;
});
$scope.alarme.categorias = [];
_.each($scope.categorias, function (categoria) {
_.each($scope.alarme.detalhes.categorias, function (id) {
if (id == categoria.id) {
$scope.alarme.categorias.push(categoria);
}
});
});
}
/**
* @method removerAlarme
* @param {*} alarme
*/
function removerAlarme(alarme) {
var confirm = $mdDialog.confirm()
.title($scope.res('ALARME_CONFIRMACAOREMOCAO') + alarme.nome + ' ?')
.content($scope.res('COMUM_MENSAGEM_ACAOIRREVERSIVEL'))
.ariaLabel($scope.res('COMUM_REMOVER'))
.ok($scope.res('COMUM_SIM'))
.cancel($scope.res('COMUM_NAO'));
$mdDialog
.show(confirm)
.then(function () {
Alarme.remove(alarme)
.then(function () {
$mdDialog
.show($mdDialog.alert()
.title($scope.res('COMUM_SUCESSO'))
.content($scope.res('COMUM_ALARME') + ' ' + $scope.res('COMUM_MENSAGEMEXCLUIDOCOMSUCESSO'))
.ok($scope.res('COMUM_OK')))
limparAlarme(true);
});
});
}
/**
* @method removerParticipante
* @param {*} participante
*/
function removerParticipante(participante) {
_.remove($scope.alarme.participantes, {
id: participante.id
})
}
/**
* @method removerCategoria
* @param {*} categoria
*/
function removerCategoria(categoria) {
_.remove($scope.alarme.categorias, {
id: categoria.id
})
}
/**
* @method limparDetalhes
*/
function limparDetalhes() {
if ($scope.alarme) {
$scope.alarme.detalhes = {};
$scope.alarme.incidenteAberto = false;
}
_.each($scope.departamentos, function (dept) {
dept.ativo = false;
})
_.each($scope.categorias, function (cat) {
cat.ativo = false;
})
}
/**
* @method limparMinutos
*/
function limparMinutos() {
if (!$scope.alarme.incidenteAberto) {
$scope.alarme.detalhes.tempo = null;
}
}
/**
* @method cancelar
*/
function cancelar() {
$scope.criandoAlarme = false;
}
/**
* @method novoAlarme
*/
function novoAlarme() {
$scope.alarme = {
tipo: undefined,
participantes: [],
categorias: [],
detalhes: {}
};
$scope.criandoAlarme = true;
}
/**
* @method tocarAlarme
* @param {*} alarmeSelecionado
*/
function tocarAlarme(alarmeSelecionado) {
var alarme = new Audio(alarmeSelecionado);
alarme.play();
}
$scope.grupos = [{
nome: 'Incidentes'
}, {
nome: 'Planejamento'
}, {
nome: 'Twitter'
}, {
nome: 'Outros'
}];
$scope.tipos = [
{ nome: $scope.res('PLANEJAMENTO_TITULO'), id: 0 },
{ nome: 'Twitter', id: 1 },
{ nome: $scope.res('MSI_NOME'), id: 2 },
{ nome: $scope.res('CATEGORIA_TITULO'), id: 3 },
{ nome: $scope.res('MAIN_MENU_MENSAGERIA'), id: 4 },
{ nome: $scope.res('COMUM_EXTERNO'), id: 5 }
];
$scope.sons = [
{
nome: 'Beep 1',
arquivo: '/data-s4c/sons/beep1.wav'
},
{
nome: 'Beep 2',
arquivo: '/data-s4c/sons/beep2.wav'
},
{
nome: 'Beep 3',
arquivo: '/data-s4c/sons/beep3.wav'
},
{
nome: 'Beep 4',
arquivo: '/data-s4c/sons/beep4.wav'
},
{
nome: 'Beep 5',
arquivo: '/data-s4c/sons/beep5.wav'
},
{
nome: 'Beep 6',
arquivo: '/data-s4c/sons/beep6.wav'
},
{
nome: 'Beep 7',
arquivo: '/data-s4c/sons/beep7.wav'
},
{
nome: 'Beep 8',
arquivo: '/data-s4c/sons/beep8.wav'
},
{
nome: 'Beep 9',
arquivo: '/data-s4c/sons/beep9.wav'
},
{
nome: 'Beep 10',
arquivo: '/data-s4c/sons/beep10.wav'
}
];
Usuario.obterShortUsers().then(function (usuarios) {
$scope.usuarios = usuarios;
});
Departamento.getAgencias().then(function (departamentos) {
$scope.departamentos = departamentos;
});
Categoria.getShortCategorias().then(function (categorias) {
$scope.categorias = categorias;
});
angular.extend($scope, {
limparMinutos: limparMinutos,
limparAlarme: limparAlarme,
adicionarParticipante: adicionarParticipante,
salvar: salvar,
editarAlarme: editarAlarme,
removerAlarme: removerAlarme,
removerParticipante: removerParticipante,
limparDetalhes: limparDetalhes,
novoAlarme: novoAlarme,
tocarAlarme: tocarAlarme,
cancelar: cancelar,
adicionarCategoria: adicionarCategoria,
removerCategoria: removerCategoria
})
$scope.opcoesLembrete = [{
nome: '5 ' + $scope.res('COMUM_MINUTOSANTES'),
valor: {
quantidade: 5,
unidade: 'minutes'
}
}, {
nome: '30 ' + $scope.res('COMUM_MINUTOSANTES'),
valor: {
quantidade: 30,
unidade: 'minutes'
}
}, {
nome: '1 ' + $scope.res('COMUM_HORAANTES'),
valor: {
quantidade: 1,
unidade: 'hours'
}
}, {
nome: '2 ' + $scope.res('COMUM_HORASANTES'),
valor: {
quantidade: 2,
unidade: 'hours'
}
}, {
nome: '6 ' + $scope.res('COMUM_HORASANTES'),
valor: {
quantidade: 6,
unidade: 'hours'
}
}, {
nome: '12 ' + $scope.res('COMUM_HORASANTES'),
valor: {
quantidade: 12,
unidade: 'hours'
}
}, {
nome: '2 ' + $scope.res('COMUM_DIASANTES'),
valor: {
quantidade: 2,
unidade: 'days'
}
}, {
nome: '3 ' + $scope.res('COMUM_DIASANTES'),
valor: {
quantidade: 3,
unidade: 'days'
}
}, {
nome: '5 ' + $scope.res('COMUM_DIASANTES'),
valor: {
quantidade: 5,
unidade: 'days'
}
}, {
nome: '7 ' + $scope.res('COMUM_DIASANTES'),
valor: {
quantidade: 7,
unidade: 'days'
}
}];
}
}());