wages-ws
Version:
This server read data from a cassandra DB and provide services for MyWagesApp
226 lines (183 loc) • 7.61 kB
JavaScript
var express = require('express');
var app = express();
var cassandra = require('cassandra-driver');
var async = require('async');
var dateFormat = require('dateformat');
var client = new cassandra.Client({ contactPoints: ['10.226.112.47'], keyspace: 'wfm' });
client.connect(function (err) {
if (err) {
return console.error('There was an error when connecting', err);
}
console.log('Connected to cluster with %d host(s): %j', client.hosts.length, client.hosts.keys());
console.log('Keyspaces: %j', Object.keys(client.metadata.keyspaces));
});
// WOSH WEB SERVICE
app.get('/WOSH_service/store_nbr/:store_nbr', function (req, res) {
console.log("Received a GET WOSH request");
var storeNbr = req.params.store_nbr;
var now = new Date();
var dateToday = dateFormat(now, "yyyy-mm-dd");
var subtractedSaturday;
//case stmts for how far away saturday is -4,-3,-2
var dayNumber = now.getDate(); //0-31
var weekday = now.getDay();
//what if the dayNumber is less than
switch(weekday){
case 0:
subtractedSaturday = new Date(new Date().setDate(new Date().getDate()-1));
break;
case 1:
subtractedSaturday = new Date(new Date().setDate(new Date().getDate()-2));
break;
case 2:
subtractedSaturday = new Date(new Date().setDate(new Date().getDate()-3));
break;
case 3:
subtractedSaturday = new Date(new Date().setDate(new Date().getDate()-4));
break;
case 4:
subtractedSaturday = new Date(new Date().setDate(new Date().getDate()-5));
break;
case 5:
subtractedSaturday = new Date(new Date().setDate(new Date().getDate()-6));
break;
case 6:
subtractedSaturday = now;
break;
default:
console.log("MAJOR ERROR: SOMETHING IS UP WITH THE DATE NUMBER");
break;
}
var dateSaturday = dateFormat(subtractedSaturday, "yyyy-mm-dd");
console.log("subtractedSaturday is" + subtractedSaturday);
console.log("formatted saturday is" + dateSaturday);
client.execute('SELECT win,hours_worked FROM wfm.punch WHERE store_nbr=? AND punch_date<=? AND punch_date >= ?',[storeNbr, dateToday, dateSaturday],{prepare:true}, function (err, result) {
if (err) {
return console.error('There was an errorwhile trying to retrieve data from system.local', err);
}
//get everything up to saturday
var row = result.rows;
var jsonData = [];
for(i = 0; i < row.length; i++){
//get the win number and hours worked
console.log("Win number is ", row[i].win);
console.log("Hours_worked "+ row[i].hours_worked);
var tempRow = row[i];
var tempWin = row[i].win;
var tempHrsWkd = row[i].hours_worked;
var winExists= 0;
if(i==0){
jsonData.push(tempRow);
}else{
for(x = 0 ; x < jsonData.length; x++ ){
//check if the win number has already been added
//if it has already been added add the work hours and
if(tempWin==jsonData[x].win){
//add worked hours
jsonData[x].hours_worked += tempHrsWkd;
winExists=1;
break;
}
}
if(!winExists){
jsonData.push(tempRow);
}
}
}
//var wins = result.rows.win;
console.log("JSON DATA");
console.log(jsonData);
res.send(jsonData);
});
})
/*-------------------------------------------------------------------------------------*/
//PUNCH DATA BY STORE NUMBER AND DATE WEB SERVICE
app.get('/PD_ClockedIn/store_nbr/:store_nbr', function (req, res) {
console.log("Received a GET PunchData request by STORE NUMBER");
var storeNbr = req.params.store_nbr;
var now = new Date();
var dateToday = dateFormat(now, "yyyy-mm-dd");
client.execute('SELECT win FROM wfm.punch_clockin WHERE store_nbr=? AND punch_date=?',[storeNbr, dateToday], {prepare : true}, function (err, result) {
if (err) {
return console.error('There was while trying to retrieve data from system.local', err);
}
var row = result.rows;
console.log('Obtained row: ', row);
res.send(row);
console.log('THE STORE NUMBER THAT WAS INPUT IS: '+storeNbr);
console.log("THE DATE IS "+now);
console.log("THE REGULAR DATE IS " + dateToday);
});
})
//PUNCH DATA CURRENT STATUS IS WORKING WEB SERVICE
app.get('/PD_ClockedIn', function (req, res) {
console.log("Received a GET PunchData request for CURRENT STATUS");
var date = new Date();
var dateToday = dateFormat(date, "yyyy-mm-dd");
client.execute('SELECT win FROM wfm.punch_clockin WHERE punch_date = ? allow filtering;',[dateToday], {prepare : true}, function (err, result) {
if (err) {
return console.error('There was while trying to retrieve data from system.local', err);
}
var row = result.rows;
console.log('Obtained row: ', row);
console.log("todays date" + dateToday);
res.send(row);
});
})
//PUNCH DATA CURRENT STATUS IS LUNCH WEB SERVICE
app.get('/PD_MealBreak/store_nbr/:store_nbr', function (req, res) {
console.log("Received a GET PunchData request for CURRENT STATUS");
var storeNbr = req.params.store_nbr;
var date = new Date();
var dateToday = dateFormat(date, "yyyy-mm-dd");
client.execute('SELECT win FROM wfm.punch_meal WHERE store_nbr=? AND punch_date = ? allow filtering;',[storeNbr, dateToday], {prepare : true}, function (err, result) {
if (err) {
return console.error('There was while trying to retrieve data from system.local', err);
}
var row = result.rows;
console.log('Obtained row: ', row);
console.log("todays date" + dateToday);
res.send(row);
});
})
/*-------------------------------------------------------------------------------------*/
//OVER TIME WEB SERVICE
app.get('/Overtime_service/id/:id/text/:text', function (req, res) {
console.log("Received a GET OverTime request");
var idInput = req.params.id;
var textInput = req.params.text;
client.execute('SELECT * FROM wfm.test WHERE id=? AND text=?',[idInput, textInput],{prepare:true}, function (err, result) {
if (err) {
return console.error('There was while trying to retrieve data from system.local', err);
}
var row = result.rows;
console.log('Obtained row: ', row);
res.send(row);
});
})
/*-------------------------------------------------------------------------------------*/
// This responds a POST request for the homepage
app.post('/', function (req, res) {
console.log("Got a POST request for the homepage");
res.send('Hello POST');
})
// This responds a DELETE request for the /del_user page.
app.delete('/del_user', function (req, res) {
console.log("Got a DELETE request for /del_user");
res.send('Hello DELETE');
})
// This responds a GET request for the /list_user page.
app.get('/list_user', function (req, res) {
console.log("Got a GET request for /list_user");
res.send('Page Listing');
})
// This responds a GET request for abcd, abxcd, ab123cd, and so on
app.get('/ab*cd', function (req, res) {
console.log("Got a GET request for /ab*cd");
res.send('Page Pattern Match');
})
var server = app.listen(8080, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})