Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

var express = require('express');
var app = express();
var cors = require('cors');
var bodyParser = require('body-parser');
var fs = require("fs");
var multer  = require('multer');
var cookieParser = require('cookie-parser')
cassandra = require('cassandra-driver');

var client = new cassandra.Client({ contactPoints: ['localhost'], keyspace: 'profitmandi'});

// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
var whitelist = ['http://localdtr', 'http://api.profittill.com','http://staging.profittill.com','http://localhost:8100','http://mobilehotindia.com'];

var corsOptions = {
  origin: function(origin, callback){
    var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
    callback(null, originIsWhitelisted);
  }
};

app.use(express.static('public'));
app.use(multer({ dest: '/tmp/'}));
app.use(cookieParser());
app.use(cors(corsOptions));


app.get('/index.html', function (req, res) {
   res.sendFile( __dirname + "/" + "index.html" );
})

app.get('/process_get', function (req, res) {

   // Prepare output in JSON format
   response = {
       first_name:req.query.first_name,
       last_name:req.query.last_name
   };
   //console.log(response);
   res.end(JSON.stringify(response));
})

app.post('/identify', urlencodedParser, function (req, res) {

   // Prepare output in JSON format
   response = {
        id:req.body.id,
        email:req.body.email,
                name:req.body.name,
                mobilenumber:req.body.mobilenumber,
                referral_code:req.body.referral_code
   };
        var query = "INSERT INTO users(id,email,name,mobilenumber,referral_code) values(?,?,?,?,?)";
        var params = [response.id,response.email,response.name,response.mobilenumber,response.referral_code];
        console.log(params);
        client.execute(query, params,{prepare: true}, function(err, result) {
                if(err){
                        console.log(err);
                        var result = {success:false,message:err};
                        res.end(JSON.stringify(result));
                }else{
                        var result = {success:true,message:'User Registered'};
                        res.end(JSON.stringify(result));
                        console.log('User Registered');
                }
        });
})

app.post('/track', urlencodedParser, function (req, res) {
        // Prepare output in JSON format
        response = {
                user_id:req.body.user_id,
        category:req.body.category,
        action:req.body.action,
                label:req.body.label,
                properties:req.body.properties
        };
        var d = new Date();
        var date = d.toYMD();
        var query = "INSERT INTO user_activities(user_id,date) VALUES("+response.user_id+",'"+date+"')";
        console.log(query);
        client.execute(query, null,{}, function(err, result) {
                if(err){
                        console.log('User activity could not tracked. '+err);
                }               
        });
        if(response.properties && response.properties.length > 0)       {
                var query = "INSERT INTO events(user_id,category,action,label,properties,time) values("+response.user_id+",'"+response.category+"','"+response.action+"','"+response.label+"',"+response.properties+",'"+new Date().toISOString()+"')";
        }else{
                var query = "INSERT INTO events(user_id,category,action,label,time) values("+response.user_id+",'"+response.category+"','"+response.action+"','"+response.label+"','"+new Date().toISOString()+"')";
        }
        console.log(query);
        client.execute(query, null,{}, function(err, result) {
                if(err){
                        var result = {success:false,message:'Event could not tracked'};
                        res.end(JSON.stringify(result));
                        console.log('Event could not tracked. '+err);
                }else{
                        var result = {success:true,message:'Event tracked'};
                        res.end(JSON.stringify(result));
                        //console.log('Event tracked');
                }               
        });
})

// This responds with "Hello World" on the homepage
app.get('/', function (req, res) {
   //console.log("Got a GET request for the homepage");
   res.send('Hello GET');
})


// This responds a POST request for the homepage
app.post('/', function (req, res) {
   //console.log("Got a POST request for the homepage");
   console.log("Cookies: ", req.cookies)
   res.send('Hello POST');
})

// This responds a GET request for the /list_users page.
app.get('/list_users', function (req, res) {
        var d = new Date();
        var date = d.toYMD();
        var query = "SELECT user_id FROM user_activities WHERE date ='"+date+"'";
        client.execute(query, {},{prepare: true}, function(err, result) {
                if(err){
                        console.log(err);
                        res.send(err);
                }else{
                        var activeusers = [];
                        for(var i in result.rows) {
                                activeusers.push(result.rows[i].user_id);
                        }
                        if(activeusers && activeusers.length>0) {
                                var query = "SELECT * FROM users WHERE id IN ("+activeusers.join(',')+")";
                        } else{
                                var query = "SELECT * FROM users LIMIT 50"; 
                        }
                        var params = [];        
                        if(typeof req.query.id != 'undefined'){
                                var query = "SELECT * FROM users WHERE id = ?";
                                params = [req.query.id];
                        }
                        //console.log(query);
                        //console.log(params);
                        client.execute(query, params,{prepare: true}, function(err, result) {
                                if(err){
                                        console.log(err);
                                        res.send(err);
                                }
                                //console.log(JSON.stringify(result.rows));
                                res.send(JSON.stringify(result.rows));
                        });
                }
        });
})

// This responds a GET request for the /list_events page.
app.get('/list_events', function (req, res) {
        var d = new Date();
        var date = d.toYMD();
        var query = "SELECT user_id FROM user_activities WHERE date ='"+date+"'";
        client.execute(query, {},{prepare: true}, function(err, result) {
                if(err){
                        console.log(err);
                        res.send(err);
                }else{
                        var activeusers = [];
                        for(var i in result.rows) {
                                activeusers.push(result.rows[i].user_id);
                        }
                        if(activeusers && activeusers.length>0) {
                                var query = "SELECT * FROM events WHERE user_id IN ("+activeusers.join(',')+") ORDER BY time DESC LIMIT 50";
                        } else {
                                var query = "SELECT * FROM events LIMIT 50";
                        }
                        var params = [];        
                        if(typeof req.query.user_id != 'undefined'){
                                var query = "SELECT * FROM events WHERE user_id = ? ORDER BY time DESC";
                                params = [req.query.user_id];
                        }
                        console.log(query);
                        //console.log(params);
                        client.execute(query, params,{prepare: true}, function(err, result) {
                                if(err){
                                        console.log(err);
                                        res.send(err);
                                }
                                //console.log('got user profile with email ' + result.rows[0].email);
                                //console.log(JSON.stringify(result.rows));
                                res.send(JSON.stringify(result.rows));
                        });
                }
        });
})

// This responds a GET request for abcd, abxcd, ab123cd, and so on
app.post('/update_profile', urlencodedParser, function(req, res) {   
   // Prepare output in JSON format
        response = {
        id:req.body.id,
        profile:req.body.profile                
        };
        var query = "UPDATE users SET profile = "+response.profile+" WHERE id = "+response.id;
        // var params = [response.profile,response.id];
        console.log(query);
        client.execute(query, null,{}, function(err, result) {
                if(err){
                        console.log(err);
                        var result = {success:false,message:'User not updated. Try again later.'};
                        res.end(JSON.stringify(result));
                }else{
                        var result = {success:true,message:'User Updated'};
                        res.end(JSON.stringify(result));
                        //console.log('User Updated');
                }
        });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("Example app listening at http://%s:%s", host, port)

})

function generateUUID(){
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    return uuid;
};

Date.prototype.toYMD = Date_toYMD;
function Date_toYMD() {
        var year, month, day;
        year = String(this.getFullYear());
        month = String(this.getMonth() + 1);
        if (month.length == 1) {
            month = "0" + month;
        }
        day = String(this.getDate());
        if (day.length == 1) {
            day = "0" + day;
        }
        return year + "-" + month + "-" + day;
}