Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var request = require("request");
- var express = require('express');
- var apn = require('apn');
- var gcm = require('node-gcm');
- var router = express.Router();
- // rotas da tabela de estado
- module.exports = function(knex) {
- // como registrado em https://console.developers.google.com/project/PROJETO NO CONSOLE DO GOOGLE
- var apikeyandroid = "API KEY DO PROJETO PARA ANDROID";
- var apikeyios = "API KEY DO PROJETO PARA IOS";
- // guardar os tokens de aparelhos que aqui chegam
- router.post("/regtoken",function(req,res){
- var data = req.body;
- // console.log(data);
- var d = data.registrationId;
- var p = data.platform;
- var i = data.usuariologado.idcondomino;
- knex("device").select().where({deviceregkey:d}).then(function(ret){
- if(!ret.length){
- knex("device").insert({
- deviceregkey:d,
- platform:p,
- idcondomino:i
- }).then(function(ret2){
- res.send("ok");
- });
- }else{
- res.send("salvo");
- }
- });
- });
- router.post("/novo",function(req,res){
- var alerta = req.body;
- // console.log(alerta);
- var msg = alerta.msgalerta;
- if(!alerta.tipoalerta){
- res.status(500).send({error:"Informe o tipo de alerta"});
- console.log("ERRO: Informe o tipo de alerta");
- console.log(alerta);
- }else{
- knex("alerta").insert({
- idtipoalerta:alerta.tipoalerta.idtipoalerta,
- idcomunidade:alerta.idcomunidade,
- alertageral:alerta.alertageral,
- msgalerta:alerta.msgalerta,
- },"idalerta").then(function(ret){
- alerta.idalerta=ret[0];
- if(!alerta.alertageral){
- var params = alerta.idcondominos;
- console.log("recebidos "+params.length+" ids de moradores");
- var qs = alerta.idcondominos.map(function(e){ return "?";});
- var superq = "idcondomino in ("+qs.join(",")+")";
- var ins = alerta.idcondominos.map(function(e){
- return {
- idcondomino:e,
- idalerta:alerta.idalerta,
- };
- });
- knex("alerta_condomino").insert(ins).then(function(ret){
- console.log("done");
- });
- }else{
- var superq = "idcondomino in (select idcondomino from comunidade_condomino where idcomunidade = ?)";
- var params = [alerta.idcomunidade];
- }
- knex("device").select().whereRaw(superq,params).then(function(ret){
- var i = ret.length;
- console.log("broadcast para "+i+" condôminos");
- while(i-->0){
- var dvc = ret[i];
- console.log(dvc);
- // envio pra android
- if(dvc.platform=="android"){
- // https://github.com/ToothlessGear/node-gcm
- var message = new gcm.Message({
- notification:{
- title:"\u2709 ambbi - "+msg,
- body:msg,
- icon:"logo"
- }
- });
- var sender = new gcm.Sender(apikeyandroid);
- sender.send(message,{
- registrationIds:[dvc.deviceregkey]
- },function(err,result){
- if(err)
- console.error(err);
- else
- console.log(result);
- });
- console.log("gcm ok");
- // envio pra android
- }else if(dvc.platform=="ios"){
- // XXX essa guerra vai voltar quando o app subir pra produção
- // var prod = typeof process.env.OPENSHIFT_CLOUD_DOMAIN != "undefined";
- var prod = false;
- var options = {
- cert:prod?"cert_prod.pem":"cert_dev.pem",
- key:prod?"key_prod.pem":"key_dev.pem",
- passphrase:"SENHA DO CERTIFICADO",
- production:prod
- };
- console.log("production: "+prod+" cert: "+options.cert+" key: "+options.key);
- var apnConnection = new apn.Connection(options);
- var myDevice = new apn.Device(dvc.deviceregkey);
- var note = new apn.Notification();
- note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
- note.badge = 3;
- note.sound = "ping.aiff";
- note.alert = "\u2709 ambbi - "+msg;
- note.payload = {'message': msg};
- apnConnection.pushNotification(note, myDevice);
- console.log("apn ok");
- }
- }
- res.json({status:"sent"});
- });
- });
- }
- });
- // listar os alertas que já foram passados
- router.get("/ultimos",function(req,res){
- var idcondomino = req.query.idcondomino;
- knex.select('*').from("alerta_condomino").joinRaw("natural join alerta")//
- .where('idcondomino', idcondomino)//
- .orderBy("dtcadalerta","desc")//
- .limit(10)//
- .then(function(ret){
- res.json(ret);
- });
- });
- router.get("/gerais",function(req,res){
- var idcomunidade = req.query.idcomunidade;
- knex.select('*').from("alerta")//
- .where({
- idcomunidade:req.query.idcomunidade,
- alertageral:true
- })//
- .orderBy("dtcadalerta","desc")//
- .limit(10)//
- .then(function(ret){
- res.json(ret);
- });
- });
- // listar os tipos de alerta
- router.get("/tipos",function(req,res){
- knex("tipoalerta").select().then(function(ret){
- res.json(ret);
- });
- });
- return router;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement