Skip to content
Snippets Groups Projects
Select Git revision
  • a702ff4e6067e68d17e80a87a308755f5f2886f8
  • master default protected
  • test
3 results

api.js

  • api.js 5.52 KiB
    var express = require('express');
    var router = express.Router();
    var uuidv1 = require('uuid/v1');
    var User = require('../models/users');
    var Tracking = require('../models/tracking');
    var UserNode = require('../models/userNode');
    var rpNode = require('../models/rpNodeData');
    /*
    var User = require('../models/users');
    var user = new User({
      name: "NodeJS Tutorialaaaaa",
      token: "velopert",
      uuid:"asdf"
    });
    user.save(function(err, user){
      if(err) return console.error(err);
      console.dir(user);
    });
    
    */
    console.log("aaaa")
    
    
    /* POST CreateNewUser page. */
    router.post('/CreateNewUser', function(req, res, next) {
      var uuid = uuidv1()
      console.log(uuid.toString().replace(/-/gi, ""))
      var user = new User({
        name: req.body.name,
        aID: req.body.aID,
        uuid: uuid.toString().replace(/-/gi, "")
      });
      user.save(function(err, user){
        if(err) return console.error(err);
        console.dir(user);
      });
      res.send({
        name: req.body.name,
        aID: req.body.aID,
        uuid:uuid
      });
    });
    
    
    /* Delete User page. */
    router.post('/DeleteUser', function(req, res) {
      aID  = req.body.aID
      User.deleteMany({ aID: req.body.aID }, function(err, output){
        if(err) return res.status(500).json({ error: "database failure" });
    
        // ( SINCE DELETE OPERATION IS IDEMPOTENT, NO NEED TO SPECIFY )
        //if(!output.result.n) return res.status(404).json({ error: "user not found" });
        //res.json({ message: "user deleted" });
        res.json({message: output, res : req.body});
      })
    });
    
    
    router.post('/findByUUID', function(req, res) {
      uuid  = req.body.uuid
      
      Tracking.find({uuid:req.body.uuid}, function(err, output){
        if(err) return res.status(500).json({ error: "database failure" });
    
        // ( SINCE DELETE OPERATION IS IDEMPOTENT, NO NEED TO SPECIFY )
        //if(!output.result.n) return res.status(404).json({ error: "user not found" });
        //res.json({ message: "user deleted" });
    
        res.json({message: output, res : req.body});
      })
    });
    
    router.get('/findUserByUUID/:id', function(req, res, next) {
      console.log("kkkk")
      var userData=new Array();
      var data =new Array();
      var UserName = "";
      var UserLocation =[];
      var temp;
      var rpNodeData=[];
      
      (async () => {
        try{
          await User.find({uuid:req.params.id}, (err,output)=>{
            //res.json(output);
            //console.log(output[0].name)
            UserName = output[0].name;
          })
          await User.find({uuid:req.params.id}, (err,output)=>{
            //res.json(output);
            //console.log(output[0].name)
            UserName = output[0].name;
          })
          await UserNode.find({useruuid:req.params.id}, (err,output)=>{
            //res.json(output);
            //console.log("tt,",output[0].rp1)
            
            try{
              temp =[output[output.length-1].rp1,output[output.length-1].rp2,output[output.length-1].rp3];
              UserLocation ={
                x:output[output.length-1].x, 
                y:output[output.length-1].y,
                r:10
              }
            }catch(exception){}
          })
    
          // await rpNode.find((err,output) =>{
          //   rpNodeData = output;
          //   console.log("tt",JSON.stringify(rpNodeData));
          // })
          for(i in temp){
            console.log(i, temp[i].rpuuid)
            await rpNode.find({'rpuuid': temp[i].rpuuid},(err,output)=>{
              console.log(output)
              if(output.length != 0)
                rpNodeData.push({
                  rpuuid : temp[i].rpuuid,
                  x: output[0].x,
                  y: output[0].y,
                  r: temp[i].distance * 20
                })
            })
            //console.log(rpNodeData,i)
          }
        }
        catch(exception){
          console.log(exception)
        }
        console.log(rpNodeData)
        res.render('index',{title:'Express',UserName:UserName ,UserLocation: UserLocation, rpNodeData:JSON.stringify(rpNodeData)})
      })();
    });
    
    
    router.get('/users', function(req, res, next) {
      User.find((err,output) =>{
        console.log(output);
        res.render('users', { data: output });
      })
      
    });
    
    router.get('/rpis', function(req, res, next) {
      // User.find((err,output) =>{
      //   console.log(output);
      //   res.render('users', { data: output });
      // })
      Tracking.aggregate([
        {
          '$group': {
            '_id': '$rpuuid'
          }
        }
      ],function(rr,ra){
        if(ra){
          console.log(ra);   
          res.render('rpis',{data:ra});
        } 
      });
    });
    
    router.get('/aggregateByRPUUID/:id', function(req, res, next) {
      // User.find((err,output) =>{
      //   console.log(output);
      //   res.render('users', { data: output });
      // })
      Tracking.findOne({rpuuid: req.params.id},(err, output) => {
        console.log(output);
        const lastUpdateTime = output.updateTime;
        const lastUpdateTimeObject = new Date(Date(output.updateTime));
        console.log(Date(lastUpdateTime));
    
        console.log(output.distance)
    
        Tracking.aggregate([
          {
            '$match': {
              'rpuuid': output.rpuuid, 
              'updateTime': {
                '$gt': lastUpdateTime - 600
              },
              distance: {'$lt': 1}
            }
          }, {
            '$group': {
              '_id': '$useruuid'
            }
          }
        ],function(rr,ra){
          if(ra){
            console.log(ra); 
            res.json({Date : lastUpdateTimeObject.toLocaleString('ko-KR', {
              timeZone: 'Asia/Seoul'
            }),count : ra.length,result: ra});  
          } 
        })
      })
      //res.json({});
    });
    router.post('/', function(req, res, next) {
      console.log(req.body)
      res.render('index', { title: 'Express' });
    });
    module.exports = router;