/**
* @ngdoc service
* @name Viatura
* @module s4c.services.Viatura
*
* @description Componente para acesso a api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.services')
.factory('Viatura', Viatura);
Viatura.$inject = [
'Base',
'MainState',
'MapaService'
]
/**
* @method Viatura
* @param {*} Base
* @param {*} MainState
* @param {*} MapaService
*/
function Viatura(Base, MainState, MapaService) {
var layersViatura = new L.LayerGroup([]);
var subItens = new L.LayerGroup([]);
var service = {
pesquisar: pesquisar,
obterViaturas: obterViaturas,
addLayer: addLayer,
removerLayers: removerLayers
};
/**
* @method pesquisar
* @param {*} texto
* @param {*} versao
*/
function pesquisar(texto, versao) {
return Base.obter('viaturas/search/' + texto, {}, {
version: versao
});
}
/**
* @method obterViaturas
* @param {*} organizacoes
*/
function obterViaturas(organizacoes) {
return Base.salvar('viaturas/organizacoes', organizacoes);
}
/**
* @method removerLayers
* @param {*} idCamadaViatura
* @param {*} mode
*/
function removerLayers(idCamadaViatura, mode) {
var layersToRemove = [];
for (var index in layersViatura.getLayers()) {
if (mode) {
layersToRemove.push(layersViatura.getLayers()[index]);
MapaService.removerCamada(layersViatura.getLayers()[index].aggregate);
} else if (layersViatura.getLayers()[index] != undefined && layersViatura.getLayers()[index].chave_estrangeira == idCamadaViatura) {
layersToRemove.push(layersViatura.getLayers()[index]);
MapaService.removerCamada(layersViatura.getLayers()[index].aggregate);
}
}
for (var index in layersToRemove) {
layersViatura.removeLayer(layersToRemove[index]);
}
_.each(subItens.getLayers(), function (layer) {
if (layer != undefined && layer.chave_estrangeira == idCamadaViatura) {
layersToRemove.push(layer);
subItens.removeLayer(layer);
}
});
}
/**
* @method addLayer
* @param {*} featureCollection
* @param {*} node
*/
function addLayer(featureCollection, node) {
MapaService.adicionarPontos(featureCollection).then(function (layers) {
for (var index in layers) {
layers[index].chave_estrangeira = node.chave_estrangeira;
layersViatura.addLayer(layers[index]);
}
});
}
/**
* @method getLayer
* @param {*} idCamadaViatura
*/
function getLayer(idCamadaViatura) {
for (var index in layersViatura.getLayers()) {
if (layersViatura.getLayers()[index] != undefined && layersViatura.getLayers()[index].chave_estrangeira == idCamadaViatura) {
return layersViatura.getLayers()[index];
}
}
}
return service;
}
}());