/**
* @ngdoc directives
* @name RotasUnificadasService
* @module s4c.directives.rotasunificadas.RotasUnificadasService
*
* @description
* `RotasUnificadasService` Componente para acesso ao api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
'use strict';
function RotasUnificadasService($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_unificadas/' + 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_unificadas/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 calcularTempoRotaCriada
* @param {*} waypoints
* @param {*} rotaUnificadaId
*/
function calcularTempoRotaCriada(waypoints, rotaUnificadaId) {
var deferred = $q.defer();
$http.post(API_ENDPOINT + 'rotas_unificadas/tempo/' + rotaUnificadaId, 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_unificadas/' + 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_unificadas/' + 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_unificadas')
.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_unificada/' + 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_unificada/' + 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_unificada/' + 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_unificada/' + idRota)
.then(function (response) {
deferred.resolve(response);
});
return deferred.promise;
}
/**
* @method atualizarPontos
* @param {*} waypoints
*/
function atualizarPontos(waypoints) {
angular.forEach(waypoints, function (waypoint) {
var jsonObject = {};
jsonObject.lat = waypoint.latLng.lat;
jsonObject.lng = waypoint.latLng.lng
$http.post(API_ENDPOINT + 'rotas_unificadas/latlng/endereco', jsonObject)
.then(function (response) {
waypoint.endereco = response.data.endereco;
}, function (error) {
console.log('Erro:...', error);
});
});
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);
/*
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);
*/
}
/**
* @method getKMLFromKMZ
* @param {*} kmz
*/
function getKMLFromKMZ(kmz) {
var deferred = $q.defer();
var payload = new FormData();
payload.append("arquivo", kmz.contents);
$http({
method: 'POST',
url: API_ENDPOINT + 'rotas_unificadas/kmz',
data: payload,
headers: {
'Content-type': 'multipart/form-data'
}
})
/*
.post(API_ENDPOINT + 'rotas_unificadas/kmz', {
arquivo : kmz
})*/
.then(function (response) {
if (typeof response.data === 'object') {
deferred.resolve(response.data);
} else {
deferred.reject();
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
/**
* @method updateColorRoute
* @param {*} idRota
* @param {*} jsonObject
*/
function updateColorRoute(idRota, jsonObject) {
var deferred = $q.defer();
$http.post(API_ENDPOINT + 'rotas_unificadas/update_color/' + idRota, jsonObject)
.then(function (response) {
if (typeof response.data === 'object') {
deferred.resolve(response.data);
} else {
deferred.reject();
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
/**
* @method salvarRotaUnificada
* @param {obj} obj objeto contendo informações da Rota
*
* @returns {Promise} Promise que resolve contendo um objeto com a nova
* rota salva no banco.
*/
function salvarRotaUnificada(obj) {
var deferred = $q.defer();
$http.put(API_ENDPOINT + 'rotas_unificadas', obj)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method updateRotaUnificada
* @param {*} obj
*/
function updateRotaUnificada(obj) {
var deferred = $q.defer();
$http.post(API_ENDPOINT + 'rotas_unificadas', obj)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method salvarRota
* @param {obj} obj objeto contendo informações da Rota
*
* @returns {Promise} Promise que resolve contendo um objeto com a nova
* rota salva no banco.
*/
function salvarRota(obj) {
var deferred = $q.defer();
$http.put(API_ENDPOINT + 'rotas', obj)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
return {
pegarRotas: pegarRotas,
salvarRota: salvarRota,
updateRotaUnificada: updateRotaUnificada,
salvarRotaUnificada: salvarRotaUnificada,
pegarDetalhamento: pegarDetalhamento,
deletarRota: deletarRota,
pegarRota: pegarRota,
pegarCor: pegarCor,
calcularTempo: calcularTempo,
calcularTempoRotaCriada: calcularTempoRotaCriada,
addAlarmeRota: addAlarmeRota,
updateAlarmeRota: updateAlarmeRota,
getAlarmesRota: getAlarmesRota,
deleteAlarmeRota: deleteAlarmeRota,
atualizarPontos: atualizarPontos,
getKMLFromKMZ: getKMLFromKMZ,
updateColorRoute: updateColorRoute
};
}
angular.module('s4c.components.rotas-unificadas')
.service('RotasUnificadasService', RotasUnificadasService);
RotasUnificadasService.$inject = ['$http', '$q', 'API_ENDPOINT', 'Geocode', 'PlanejamentoDesenhoService'];
})();