/**
* @ngdoc directives
* @name RotasService
* @module s4c.directives.rotas.RotasService
*
* @description
* `RotasService` Componente para acesso ao api do backend e/ou comunicação entre controllers
*
*/
(function () {
'use strict';
function RotasService($http, $q, API_ENDPOINT, Geocode, PlanejamentoDesenhoService) {
/**
* @method pegarCor
* @param {*} value
*/
function pegarCor(value) {
if (value.RotaLeituras &&
value.RotaLeituras[0] &&
value.RotaLeituras[0].currentTime) {
value = ((100 * (value.RotaLeituras[0].currentTime / value.RotaLeituras[0].regularTime)) - 100)
if (value <= 10) {
return "#8AC249";
} else if (value >= 10 && value <= 50) {
return "#FFFF00";
} else {
return "#F34235";
}
} else {
return "#ddd";
}
}
/**
* @method pegarRota
* @param {*} id
*/
function pegarRota(id) {
var deferred = $q.defer();
$http.get(API_ENDPOINT + 'rotas/' + id)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method calcularTempo
* @param {*} waypoints
*/
function calcularTempo(waypoints) {
var deferred = $q.defer();
$http.post(API_ENDPOINT + 'rotas/tempo', waypoints)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method deletarRota
* @param {*} id
*/
function deletarRota(id) {
var deferred = $q.defer();
$http.delete(API_ENDPOINT + 'rotas/' + id)
.then(function (rotas) {
if (typeof rotas !== 'object') {
deferred.reject();
}
deferred.resolve(rotas);
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarDetalhamento
* @param {*} id
*/
function pegarDetalhamento(id) {
var deferred = $q.defer();
$http.get(API_ENDPOINT + 'rotas/' + id + '/detalhamento')
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarRotas
*/
function pegarRotas() {
var deferred = $q.defer();
$http.get(API_ENDPOINT + 'rotas')
.then(function (rotas) {
deferred.resolve(rotas);
});
return deferred.promise;
}
/**
* @method addAlarmeRota
* @param {*} idRota
* @param {*} alarme
*/
function addAlarmeRota(idRota, alarme) {
var deferred = $q.defer();
$http.post(API_ENDPOINT + 'alarme/rota/' + idRota, alarme)
.then(function (response) {
if (typeof response.data === 'object') {
deferred.resolve(response.data);
} else {
deferred.reject();
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
/**
* @method updateAlarmeRota
* @param {*} alarme
*/
function updateAlarmeRota(alarme) {
var deferred = $q.defer();
$http.put(API_ENDPOINT + 'alarme/rota/' + alarme.id, alarme)
.then(function (response) {
if (typeof response.data === 'object') {
deferred.resolve(response.data);
} else {
deferred.reject();
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
/**
* @method deleteAlarmeRota
* @param {*} alarmeId
*/
function deleteAlarmeRota(alarmeId) {
var deferred = $q.defer();
$http.delete(API_ENDPOINT + 'alarme/rota/' + alarmeId)
.then(function (response) {
deferred.resolve(response);
});
return deferred.promise;
}
/**
* @method getAlarmesRota
* @param {*} idRota
*/
function getAlarmesRota(idRota) {
var deferred = $q.defer();
$http.get(API_ENDPOINT + 'alarme/rota/' + idRota)
.then(function (response) {
deferred.resolve(response);
});
return deferred.promise;
}
/**
* @method atualizarPontos
* @param {*} waypoints
*/
function atualizarPontos(waypoints) {
angular.forEach(waypoints, function (waypoint) {
Geocode.obterEndereco({
latitude: waypoint.latLng.lat,
longitude: waypoint.latLng.lng
}).then(function (data) {
var rua = data.rua ? data.rua : '';
var bairro = data.barrio ? data.barrio : '';
var numero = data.numero ? data.numero : '';
var cidade = data.cidade ? data.cidade : '';
var estado = data.estado ? data.estado : '';
waypoint.endereco = '' + rua + ' ' + numero + ', ' + bairro + ', ' + cidade + ', ' + estado;
});
});
var pontos = _.map(waypoints, function (waypoint) {
return {
latitude: waypoint.latLng.lat,
longitude: waypoint.latLng.lng,
endereco: waypoint.endereco
}
});
PlanejamentoDesenhoService.mapRoutesUpdated(pontos);
console.log('pontos', pontos);
}
return {
pegarRotas: pegarRotas,
pegarDetalhamento: pegarDetalhamento,
deletarRota: deletarRota,
pegarRota: pegarRota,
pegarCor: pegarCor,
calcularTempo: calcularTempo,
addAlarmeRota: addAlarmeRota,
updateAlarmeRota: updateAlarmeRota,
getAlarmesRota: getAlarmesRota,
deleteAlarmeRota: deleteAlarmeRota,
atualizarPontos: atualizarPontos
};
}
angular.module('s4c.components.rotas')
.service('RotasService', RotasService);
RotasService.$inject = ['$http', '$q', 'API_ENDPOINT', 'Geocode', 'PlanejamentoDesenhoService'];
})();