/**
* @ngdoc directives
* @name BuscaService
* @module s4c.directives.busca.BuscaService
*
* @description
* `BuscaService` faz a conexão com a API do S4C, passando os filtros para
* receber os resultados da busca.
*/
(function () {
'use strict';
BuscaService.$inject = [
'$http',
'$q',
'API_ENDPOINT',
'Base'
];
function BuscaService($http, $q, API_ENDPOINT, Base) {
/**
* Consulta base de conhecimento
*
* @method getBaseConhecimento
*
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getBaseConhecimento(data) {
var deferred = $q.defer();
var url = API_ENDPOINT + 'base_conhecimento/buscarapida/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta Planejamento
*
* @method getPlanejamento
*
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getPlanejamento(data) {
var deferred = $q.defer();
var url = (data.start && data.end) ? API_ENDPOINT + 'planejamento/buscarapida/' + data.texto + '/'
+ data.start + '/' + data.end : API_ENDPOINT + 'planejamento/buscarapida/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta zona de observação
*
* @method getZonaObservacao
*
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getZonaObservacao(data) {
var deferred = $q.defer();
var url = (data.start && data.end) ? API_ENDPOINT + 'zona_observacao/find/' + data.texto + '/'
+ data.start + '/' + data.end : API_ENDPOINT + 'zona_observacao/find/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta as tarefas
*
* @method getTarefas
*
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getTarefas(data) {
var deferred = $q.defer();
var url = (data.start && data.end) ? API_ENDPOINT + 'tarefas/find/' + data.texto + '/'
+ data.start + '/' + data.end : API_ENDPOINT + 'tarefas/find/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta rotas
*
* @method getRotas
*
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getRotas(data) {
var deferred = $q.defer();
var url = (data.start && data.end) ? API_ENDPOINT + 'rotas_unificadas/buscarapida/' + data.texto + '/'
+ data.start + '/' + data.end : API_ENDPOINT + 'rotas_unificadas/buscarapida/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta Incidentes
*
* @method getIncidentes
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getIncidentes(data) {
var deferred = $q.defer();
var url = (data.start && data.end) ? API_ENDPOINT + 'incidentes/buscarapida/' + data.texto + '/'
+ data.start + '/' + data.end : API_ENDPOINT + 'incidentes/buscarapida/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
*
* Consulta Pois por sensores
*
* @method getPoisBySensores
*
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getPoisBySensores(data, sensores) {
var deferred = $q.defer();
var url = API_ENDPOINT + 'pois/find/' + data.texto + '/sensores/' + sensores.join(',');
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta os pois baseado no texto passado na busca
* @method getPois
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getPois(data) {
var deferred = $q.defer();
var url = API_ENDPOINT + 'pois/find/' + data.texto + '/';
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta os pois baseado no texto passado na busca
* @method getCameras
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getCameras(data) {
var deferred = $q.defer();
var url = API_ENDPOINT + 'cameras/find/' + data.texto;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* Consulta viaturas
* @method getViaturas
*
* @param {obj} data Um objeto contendo os filtros para utilizar na
* busca
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getViaturas(data) {
return Base.obter('viaturas/search/' + data.texto, null, {
version: 2
});
}
return {
getBaseConhecimento: getBaseConhecimento,
getPlanejamento: getPlanejamento,
getZonaObservacao: getZonaObservacao,
getTarefas: getTarefas,
getRotas: getRotas,
getIncidentes: getIncidentes,
getPois: getPois,
getPoisBySensores: getPoisBySensores,
getCameras: getCameras,
getViaturas: getViaturas
};
}
angular.module('s4c.components.busca')
.service('BuscaService', BuscaService);
})();