/**
* @ngdoc directives
* @name ZonaObservacaoService
* @module s4c.directives.zonaObservacao.ZonaObservacaoService
*
* @description
* `ZonaObservacaoService` Componente para acesso a api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
'use strict';
function ZonaObservacaoService($http, $q, API_ENDPOINT, Base) {
var IP_MODULOS = '54.232.180.221';
/**
* @method date2timestamp
* @param {*} dateString
*/
function date2timestamp(dateString) {
if (!dateString || dateString === undefined) {
return;
}
var dateParts = dateString.split(' ');
var timeParts = dateParts[1].split(':');
var date;
dateParts = dateParts[0].split('/');
date = new Date(dateParts[2], parseInt(dateParts[1], 10) - 1,
dateParts[0], timeParts[0], timeParts[1]);
return date.getTime();
}
/**
* @method pegarZona
* @param {*} id
*/
function pegarZona(id) {
var deferred = $q.defer();
$http.get(API_ENDPOINT + 'zona_observacao/' + id)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject();
});
return deferred.promise;
}
/**
* @method deletarZona
* @param {*} id
*/
function deletarZona(id) {
var deferred = $q.defer();
$http.delete(API_ENDPOINT + 'zona_observacao/' + id)
.then(function (res) {
deferred.resolve(res.data);
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarZonas
*/
function pegarZonas() {
var deferred = $q.defer();
$http.get(API_ENDPOINT + 'zona_observacao')
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject();
});
return deferred.promise;
}
/**
* @method pegarTwitter
* @param {*} data
*/
function pegarTwitter(data) {
var deferred = $q.defer();
var NE = data.topLeft;
var SW = data.bottomRight;
var NW = {
lat: NE.lat,
lng: SW.lng
};
var SE = {
lat: SW.lat,
lng: NE.lng
};
var url = API_ENDPOINT + 'tweets/' + NW.lat + '/' + NW.lng;
url += '/' + SE.lat + '/' + SE.lng;
$http.get(url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarMultidao
* @param {*} data
* @param {*} pessoas
*/
function pegarMultidao(data, pessoas) {
var deferred = $q.defer();
/*var url = 'http://54.232.180.221/webservices/multidao.cfm?getNorthEast=' + NW.lat + ',' + NW.lng;
url += '&getSouthWest=' + SE.lat + ',' + SE.lng;*/
//var url = 'http://overpass.osm.rambler.ru/cgi/interpreter?data=[out:json];way[witdh](' + SE.lat + ',' + NW.lng + ',' + NW.lat + ',' + SE.lng + ');out;'
var url = 'zona_observacao/multidao/' + JSON.stringify(data) + '/' + pessoas;
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (res.data) {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarCenso
* @param {*} data
*/
function pegarCenso(data) {
var deferred = $q.defer();
/*var NE = data.topLeft;
var SW = data.bottomRight;
var NW = {
lat: NE.lat,
lng: SW.lng
};
var SE = {
lat: SW.lat,
lng: NE.lng
};
deferred.resolve([]);
return deferred.promise;*/
var url = 'zona_observacao/geoDataIbge';
$http.post(API_ENDPOINT + url, JSON.stringify(data))
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method salvarZO
* @param {*} data
* @param {*} user
*/
function salvarZO(data, user) {
console.log(data.inicio);
console.log(data.fim);
var deferred = $q.defer();
var url = 'zona_observacao/';
var zonaObservacao = {
nome: data.nome,
descricao: data.descricao || '',
inicio: data.inicio && date2timestamp(data.inicio),
fim: data.inicio && date2timestamp(data.fim),
publico: data.publico,
geojson: data.geojson,
DepartamentoId: user.Departamento.id,
latitude: data.latitude,
longitude: data.longitude,
GruposUsuarios: data.GruposUsuarios,
Usuarios: data.Usuarios
}
$http.put(API_ENDPOINT + url, zonaObservacao).then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method atualizarZO
* @param {*} id
* @param {*} data
*/
function atualizarZO(id, data) {
var deferred = $q.defer();
$http.post(API_ENDPOINT + 'zona_observacao/' + id, {
nome: data.nome,
descricao: data.descricao,
inicio: date2timestamp(data.inicio),
fim: date2timestamp(data.fim),
GruposUsuarios: data.GruposUsuarios,
Usuarios: data.Usuarios
}).then(function (res) {
deferred.resolve(res);
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarPoisArea
* @param {*} obj
*/
function pegarPoisArea(obj) {
var deferred = $q.defer();
var url = 'datamining/geojson/' + JSON.stringify(obj);
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarIncidentes
* @param {*} obj
*/
function pegarIncidentes(obj) {
var deferred = $q.defer();
var url = 'incidentes/geojson/' + JSON.stringify(obj);
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarCameras
* @param {*} obj
*/
function pegarCameras(obj) {
var deferred = $q.defer();
var url = 'cameras/geojson/' + JSON.stringify(obj);
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarBasesConhecimento
* @param {*} obj
*/
function pegarBasesConhecimento(obj) {
var deferred = $q.defer();
var url = 'base_conhecimento/geojson/' + JSON.stringify(obj);
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
// Manipulado alarmes
/**
* @method addAlarme
* @param {*} id
* @param {*} alarme
*/
function addAlarme(id, alarme) {
var deferred = $q.defer();
var url = 'alarme/zo/' + id;
$http.put(API_ENDPOINT + url, alarme)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method updateAlarme
* @param {*} alarme
*/
function updateAlarme(alarme) {
var deferred = $q.defer();
var url = 'alarme/zo/' + alarme.id;
$http.post(API_ENDPOINT + url, alarme)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarAlarmes
* @param {*} id
*/
function pegarAlarmes(id) {
var deferred = $q.defer();
var url = 'alarme/zo/' + id;
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method removerAlarme
* @param {*} id
*/
function removerAlarme(id) {
var deferred = $q.defer();
var url = 'alarme/' + id;
$http.delete(API_ENDPOINT + url)
.then(function (res) {
deferred.resolve(res.data);
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
// Manipulando tarefas
/**
* @method addTarefa
* @param {*} id
* @param {*} obj
*/
function addTarefa(id, obj) {
var deferred = $q.defer();
var url = 'zona_observacao/' + id + '/tarefas';
$http.post(API_ENDPOINT + url, 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 updateTarefa
* @param {*} id
* @param {*} obj
*/
function updateTarefa(id, obj) {
var deferred = $q.defer();
var url = 'tarefas/' + id;
$http.put(API_ENDPOINT + url, 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 pegarTarefas
* @param {*} obj
*/
function pegarTarefas(obj) {
var deferred = $q.defer();
var url = 'zona_observacao/tarefas/' + obj.id;
$http.get(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method removerTarefa
* @param {*} id
*/
function removerTarefa(id) {
var deferred = $q.defer();
var url = 'tarefas/' + id;
$http.delete(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method pegarAreasAtuacao
* @param {*} id
*/
function pegarAreasAtuacao(id) {
return Base.obter('zona_observacao/' + id + '/area_atuacao');
}
/**
* @method removerCamada
*/
function removerCamada(id) {
var deferred = $q.defer();
var url = 'zona_observacao/camadas/' + id;
$http.delete(API_ENDPOINT + url)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject();
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
return {
updateAlarme: updateAlarme,
removerAlarme: removerAlarme,
pegarAlarmes: pegarAlarmes,
addAlarme: addAlarme,
pegarBasesConhecimento: pegarBasesConhecimento,
pegarIncidentes: pegarIncidentes,
pegarCameras: pegarCameras,
pegarPoisArea: pegarPoisArea,
pegarCenso: pegarCenso,
pegarTwitter: pegarTwitter,
pegarMultidao: pegarMultidao,
pegarZonas: pegarZonas,
pegarZona: pegarZona,
pegarTarefas: pegarTarefas,
deletarZona: deletarZona,
addTarefa: addTarefa,
updateTarefa: updateTarefa,
removerTarefa: removerTarefa,
salvarZO: salvarZO,
atualizarZO: atualizarZO,
pegarAreasAtuacao: pegarAreasAtuacao,
removerCamada: removerCamada
};
}
ZonaObservacaoService.$inject = ['$http', '$q', 'API_ENDPOINT', 'Base'];
angular.module('s4c.components.zonaObservacao')
.service('ZonaObservacaoService', ZonaObservacaoService);
})();