diff --git a/.gitignore b/.gitignore index 9d377e4..e4d011f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ -.DS_Store -db-config.json -key.json node_modules/ -sftp-config.json -npm-debug.log \ No newline at end of file +.DS_Store +*.json +*.log \ No newline at end of file diff --git a/controller/authorizationCtrl.js b/controller/authorizationCtrl.js new file mode 100644 index 0000000..add7b5a --- /dev/null +++ b/controller/authorizationCtrl.js @@ -0,0 +1,43 @@ +const mysql = require('mysql'); +var async = require('async'); +var dbconfig = require(__dirname+'/../config/db-config.json'); +var connection = mysql.createConnection(dbconfig); + +exports.adminAccess = ( req, res, next ) => { + const sess = req.session; + + if(sess.name) + res.redirect('/dashboard'); + else + res.render('login.html',{error:null}); +} + +exports.adminLogin = ( req, res, next ) => { + const sess = req.session; + + connection.query('select admin_name from ADMINACCOUNT where admin_id=\''+req.body.adminId+'\' and admin_pw=\''+req.body.password+'\'',(err,rows)=>{ + if(rows.length>0){ + sess.name = rows[0].admin_name; + res.redirect('/dashboard'); + } + else{ + res.render('login.html',{error: "Input wrong id or password"}); + } + }); +} + +exports.adminLogout = ( req, res, next ) => { + const sess = req.session; + + if(sess.name){ + req.session.destroy((err)=>{ + if(err){ + console.log(err); + }else{ + res.redirect('/'); + } + }) + }else{ + res.redirect('/'); + } +} \ No newline at end of file diff --git a/controller/dashboardCtrl.js b/controller/dashboardCtrl.js new file mode 100644 index 0000000..2ecabd1 --- /dev/null +++ b/controller/dashboardCtrl.js @@ -0,0 +1,588 @@ +const mysql = require('mysql'); +var async = require('async'); +var dbconfig = require(__dirname+'/../config/db-config.json'); +var connection = mysql.createConnection(dbconfig); + + +exports.renderDashboard = async (req, exportsRes, next ) => { + const sess = req.session; + if(!sess.name) + exportsRes.redirect('/'); + + var totalRegister = 0; + var yesterdayRegister = 0; + var reactTimeMin = 0; + var reactTimeSec = 0; + var timeTheDay = []; + var timeTheWeek = []; + var timeTheMonth = []; + + var syncCost20 = {}; + var syncCost40 = {}; + var syncCost60 = {}; + + var maleCount = 0; + var femaleCount = 0; + + var age10count = 0; + var age20count = 0; + var age30count = 0; + var age40count = 0; + + var userFeedback = []; + var outUserFeedback = []; + + var southReco = {}; + var northReco = {}; + var centeralReco = {}; + var eastReco = {}; + var westReco = {}; + + var today = new Date(); + var yesterday = new Date(new Date().setDate(new Date().getDate()-1)); + var previous2days = new Date(new Date().setDate(new Date().getDate()-2)); + var previous3days = new Date(new Date().setDate(new Date().getDate()-3)); + var previous4days = new Date(new Date().setDate(new Date().getDate()-4)); + var previous5days = new Date(new Date().setDate(new Date().getDate()-5)); + var previous6days = new Date(new Date().setDate(new Date().getDate()-6)); + var previous7days = new Date(new Date().setDate(new Date().getDate()-7)); + var previous14days = new Date(new Date().setDate(new Date().getDate()-14)); + var previous21days = new Date(new Date().setDate(new Date().getDate()-21)); + var previous28days = new Date(new Date().setDate(new Date().getDate()-28)); + + async.parallel([ + function(callback){ + // Get total_register count + connection.query(`select count(*) as total_user_count from USER as U + inner join USERACCOUNT as UA + on U.user_hashkey = UA.user_hashkey + where user_id != 'None'`,(err, rows)=>{ + if(err) throw err; + + totalRegister = rows[0].total_user_count; + callback(err, rows); + }); + }, + function(callback){ + // Get yesterday_register count + connection.query(`select count(*) as yesterday_user_count from USER as U + inner join USERACCOUNT as UA + on U.user_hashkey = UA.user_hashkey + where user_id != 'None' + and UA.create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+'/'+(yesterday.getMonth()+1)+'/'+yesterday.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and UA.create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+'/'+(yesterday.getMonth()+1)+'/'+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')`,(err, rows)=>{ + if(err) throw err; + + yesterdayRegister = rows[0].yesterday_user_count; + callback(err, rows); + }); + }, + function(callback){ + // Get react_times about mapping + connection.query('select react_times from EVENT_RECO',(err, rows)=>{ + if(err) throw err; + var sum=0; + for(var i=0; i{ + //where UA.user_id != 'None'`,(err, rows)=>{ + if(err) throw err; + + + for(var i=0; i{ + if(err) throw err; + + var year = new Date().getFullYear(); + + for(var i=0; i (year-19)) + age10count++; + if(rows[i].user_birth > (year-29)) + age20count++; + if(rows[i].user_birth > (year-39)) + age30count++; + if(rows[i].user_birth > (year-49)) + age40count++; + } + callback(err, rows); + }); + }, + function(callback){ + // Get main-detail region + connection.query(`select + R.main_region, + R.region, + (select count(*) from RECOMMENDATION as RECO where RECO.region = R.region ) + as detail_region_count + from RECOMMENDATION as R + where + R.main_region != 'NULL' + or R.main_region != 'None' + group by R.main_region, R.region + `,(err, rows)=>{ + if(err) throw err; + for(var i=0; i STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 6:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 6:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday6clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 7:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 7:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday7clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 8:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 8:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday8clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 9:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 9:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday9clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 10:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 10:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday10clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 11:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 11:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday11clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 12:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 12:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday12clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 13:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 13:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday13clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 14:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 14:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday14clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 15:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 15:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday15clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 16:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 16:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday16clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 17:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 17:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday17clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 18:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 18:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday18clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 19:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 19:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday19clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 20:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 20:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday20clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 21:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 21:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday21clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 22:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 22:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday22clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday23clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 0:59:59','%Y/%m/%e %k:%i:%s')) + as today0clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 1:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 1:59:59','%Y/%m/%e %k:%i:%s')) + as today1clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 2:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 2:59:59','%Y/%m/%e %k:%i:%s')) + as today2clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 3:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 3:59:59','%Y/%m/%e %k:%i:%s')) + as today3clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 4:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 4:59:59','%Y/%m/%e %k:%i:%s')) + as today4clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 5:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 5:59:59','%Y/%m/%e %k:%i:%s')) + as today5clock, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as yesterday, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous2days.getFullYear()+`/`+(previous2days.getMonth()+1)+`/`+previous2days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous2days.getFullYear()+`/`+(previous2days.getMonth()+1)+`/`+previous2days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous2days, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous3days.getFullYear()+`/`+(previous3days.getMonth()+1)+`/`+previous3days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous3days.getFullYear()+`/`+(previous3days.getMonth()+1)+`/`+previous3days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous3days, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous4days.getFullYear()+`/`+(previous4days.getMonth()+1)+`/`+previous4days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous4days.getFullYear()+`/`+(previous4days.getMonth()+1)+`/`+previous4days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous4days, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous5days.getFullYear()+`/`+(previous5days.getMonth()+1)+`/`+previous5days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous5days.getFullYear()+`/`+(previous5days.getMonth()+1)+`/`+previous5days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous5days, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous6days.getFullYear()+`/`+(previous6days.getMonth()+1)+`/`+previous6days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous6days.getFullYear()+`/`+(previous6days.getMonth()+1)+`/`+previous6days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous6days, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous7days, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous1weeks, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous14days.getFullYear()+`/`+(previous14days.getMonth()+1)+`/`+previous14days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous2weeks, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous21days.getFullYear()+`/`+(previous21days.getMonth()+1)+`/`+previous21days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous14days.getFullYear()+`/`+(previous14days.getMonth()+1)+`/`+previous14days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous3weeks, + (select count(*) from USERACCOUNT + where create_datetime > STR_TO_DATE('`+previous28days.getFullYear()+`/`+(previous28days.getMonth()+1)+`/`+previous28days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+previous21days.getFullYear()+`/`+(previous21days.getMonth()+1)+`/`+previous21days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) + as previous4weeks + from USERACCOUNT;`,(err, rows)=>{ + if(err) throw err; + timeTheDay.push(rows[0].yesterday6clock); timeTheDay.push(rows[0].yesterday7clock); + timeTheDay.push(rows[0].yesterday8clock); timeTheDay.push(rows[0].yesterday9clock); + timeTheDay.push(rows[0].yesterday10clock); timeTheDay.push(rows[0].yesterday11clock); + timeTheDay.push(rows[0].yesterday12clock); timeTheDay.push(rows[0].yesterday13clock); + timeTheDay.push(rows[0].yesterday14clock); timeTheDay.push(rows[0].yesterday15clock); + timeTheDay.push(rows[0].yesterday16clock); timeTheDay.push(rows[0].yesterday17clock); + timeTheDay.push(rows[0].yesterday18clock); timeTheDay.push(rows[0].yesterday19clock); + timeTheDay.push(rows[0].yesterday20clock); timeTheDay.push(rows[0].yesterday21clock); + timeTheDay.push(rows[0].yesterday22clock); timeTheDay.push(rows[0].yesterday23clock); + timeTheDay.push(rows[0].today0clock); timeTheDay.push(rows[0].today1clock); + timeTheDay.push(rows[0].today2clock); timeTheDay.push(rows[0].today3clock); + timeTheDay.push(rows[0].today4clock); timeTheDay.push(rows[0].today5clock); + + timeTheWeek.push(rows[0].previous7days); timeTheWeek.push(rows[0].previous6days); + timeTheWeek.push(rows[0].previous5days); timeTheWeek.push(rows[0].previous4days); + timeTheWeek.push(rows[0].previous3days); timeTheWeek.push(rows[0].previous2days); + timeTheWeek.push(rows[0].yesterday); + + timeTheMonth.push(rows[0].previous4weeks); timeTheMonth.push(rows[0].previous3weeks); + timeTheMonth.push(rows[0].previous2weeks); timeTheMonth.push(rows[0].previous1weeks); + /*for(var i=0; i<24; i++) + { + connection.query(`select count(*) as day_count from USERACCOUNT + where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` `+i+`:0:0','%Y/%m/%e %k:%i:%s') + and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` `+i+`:59:59','%Y/%m/%e %k:%i:%s')`, (err,rows)=>{ + if(err) throw err; + + //timeTheDay.push(rows[0].day_count); + timeTheDay.push(i); + }); + } + console.log(timeTheDay);*/ + callback(err, rows); + }); + }, + function(callback){ + // Get sync cost time + connection.query(`(select + count(*) as sync_cost_20, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'google' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) >= 0 + and (SE.ctime-UA.create_datetime) <= 20) + union + (select + count(*) as sync_cost_20, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'naver' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) >= 0 + and (SE.ctime-UA.create_datetime) <= 20) + union + (select + count(*) as sync_cost_20, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'ical' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) >= 0 + and (SE.ctime-UA.create_datetime) <= 20)`,(err, rows)=>{ + if(err) throw err; + + + for(var i=0; i 20 + and (SE.ctime-UA.create_datetime) <= 40) + union + (select + count(*) as sync_cost_40, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'naver' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) > 20 + and (SE.ctime-UA.create_datetime) <= 40) + union + (select + count(*) as sync_cost_40, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'ical' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) > 20 + and (SE.ctime-UA.create_datetime) <= 40)`,(err, rows)=>{ + if(err) throw err; + + for(var i=0; i 40) + union + (select + count(*) as sync_cost_60, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'naver' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) > 40) + union + (select + count(*) as sync_cost_60, + UA.login_platform + from USERACCOUNT as UA + inner join SYNC_END as SE + on UA.account_hashkey = SE.account_hashkey + where + UA.login_platform = 'ical' + and SE.sync_time_state = 1 + and (SE.ctime-UA.create_datetime) > 40)`,(err, rows)=>{ + if(err) throw err; + + for(var i=0; i { + const sess = req.session; + if(!sess.name){ + res.redirect('/'); + return; + } + + var mainRegionDict=[]; + var detailRegionDict={}; + var noneRecommendList=[]; + + // Need to paging + async.parallel([ + function(callback){ + function DisplayDT(a){ + if(a<10) + a = '0'+a; + + return a; + }; + connection.query( + `select + U.user_gender, + U.user_birth, + E.summary, + E.start_dt, + E.end_dt, + E.location + from EVENT as E + inner join CALENDAR as C + on E.calendar_hashkey = C.calendar_hashkey + inner join USERACCOUNT as UA + on C.account_hashkey = UA.account_hashkey + inner join USER as U + on UA.user_hashkey = U.user_hashkey + where + E.reco_state = 2`,(err,rows)=>{ + if(err) throw err; + + noneRecommendList=rows; + var length = rows.length; + //console.log(new Date(rows[i].start_dt).format("")) + for(var i=0; i 0 && gap < 100) + age=gap; + + var sDate = new Date(rows[i].start_dt); + noneRecommendList[i].converted_start_dt = sDate.getFullYear().toString().substring(2,4)+DisplayDT(sDate.getMonth()+1)+DisplayDT(sDate.getDate())+' '+DisplayDT(sDate.getHours())+':'+DisplayDT(sDate.getMinutes());//+':'+DisplayDT(sDate.getSeconds()); + //console.log(sDate.getFullYear()+'/'+(sDate.getMonth()+1)+'/'+sDate.getDate()+' '+sDate.getHours()+':'+sDate.getMinutes()+':'+sDate.getSeconds()); + //console.log(noneRecommendList.converted_start_dt); + var eDate = new Date(rows[i].end_dt); + var eDateTime = (eDate.getFullYear().toString().substring(2,4)+DisplayDT(eDate.getMonth()+1)+DisplayDT(eDate.getDate())) == (sDate.getFullYear().toString().substring(2,4)+DisplayDT(sDate.getMonth()+1)+DisplayDT(sDate.getDate())) ? '': eDate.getFullYear().toString().substring(2,4)+DisplayDT(eDate.getMonth()+1)+DisplayDT(eDate.getDate()); + noneRecommendList[i].converted_end_dt = eDateTime+' '+DisplayDT(eDate.getHours())+':'+DisplayDT(eDate.getMinutes());//+':'+DisplayDT(eDate.getSeconds()); + noneRecommendList[i].age = age; + } + callback(err, noneRecommendList); + }); + }, + function(callback){ + connection.query( + `select + R.main_region, + R.region, + (select sum(RECO.reco_cnt) from RECOMMENDATION as RECO where RECO.main_region = R.main_region) as main_region_recommends, + (select sum(RECO.reco_cnt) from RECOMMENDATION as RECO where RECO.region = R.region) as detail_region_recommends + from RECOMMENDATION as R + where + R.main_region != 'NULL' + or R.main_region != 'None' + group by R.main_region, R.region, main_region_recommends`,(err, rows)=>{ + if(err) throw err; + //var totalMainRegionCounts=0; + //for(var i=0; i { + const sess = req.session; + if(!sess.name){ + res.redirect('/'); + return; + } + + res.render('chartjs.html',{ + admin_name : sess.name + }); +} \ No newline at end of file diff --git a/dash-forever-err.log b/dash-forever-err.log deleted file mode 100644 index e84e27e..0000000 --- a/dash-forever-err.log +++ /dev/null @@ -1,15 +0,0 @@ -module.js:328 - throw err; - ^ - -Error: Cannot find module '/home/yenos/dashboard/router/../config/db-config.json' - at Function.Module._resolveFilename (module.js:326:15) - at Function.Module._load (module.js:277:25) - at Module.require (module.js:354:17) - at require (internal/module.js:12:17) - at Object. (/home/yenos/dashboard/router/main.js:3:16) - at Module._compile (module.js:410:26) - at Object.Module._extensions..js (module.js:417:10) - at Module.load (module.js:344:32) - at Function.Module._load (module.js:301:12) - at Module.require (module.js:354:17) diff --git a/dash-forever-out.log b/dash-forever-out.log deleted file mode 100644 index e69de29..0000000 diff --git a/package.json b/package.json index 58e9668..7cd07b0 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "moment": "^2.18.1", "mongoose": "^4.9.6", "moongoose": "0.0.5", - "mysql": "^2.11.1" + "mysql": "^2.11.1", + "request": "^2.81.0" } } diff --git a/router/main.js b/router/main.js index e000310..f286fd8 100644 --- a/router/main.js +++ b/router/main.js @@ -7,680 +7,22 @@ var connection = mysql.createConnection(dbconfig); var pushCtrl = require(__dirname+'/../controller/pushCtrl.js'); var notiCtrl = require(__dirname+'/../controller/notiCtrl.js'); var logCtrl = require(__dirname+'/../controller/logCtrl.js'); - +var dashboardCtrl = require(__dirname+'/../controller/dashboardCtrl.js'); +var authorCtrl = require(__dirname+'/../controller/authorizationCtrl.js'); +var recoAnalysisCtrl = require(__dirname+'/../controller/recoAnalysisCtrl.js'); +var userAnalysisCtrl = require(__dirname+'/../controller/userAnalysisCtrl.js'); module.exports = function(app) { - app.get('/dashboard',(req,result)=>{ - sess = req.session; - if(!sess.name) - result.redirect('/'); - - var totalRegister = 0; - var yesterdayRegister = 0; - var reactTimeMin = 0; - var reactTimeSec = 0; - var timeTheDay = []; - var timeTheWeek = []; - var timeTheMonth = []; - - var syncCost20 = {}; - var syncCost40 = {}; - var syncCost60 = {}; - - var maleCount = 0; - var femaleCount = 0; - - var age10count = 0; - var age20count = 0; - var age30count = 0; - var age40count = 0; - - var userFeedback = []; - var outUserFeedback = []; - - var southReco = {}; - var northReco = {}; - var centeralReco = {}; - var eastReco = {}; - var westReco = {}; - - var today = new Date(); - var yesterday = new Date(new Date().setDate(new Date().getDate()-1)); - var previous2days = new Date(new Date().setDate(new Date().getDate()-2)); - var previous3days = new Date(new Date().setDate(new Date().getDate()-3)); - var previous4days = new Date(new Date().setDate(new Date().getDate()-4)); - var previous5days = new Date(new Date().setDate(new Date().getDate()-5)); - var previous6days = new Date(new Date().setDate(new Date().getDate()-6)); - var previous7days = new Date(new Date().setDate(new Date().getDate()-7)); - var previous14days = new Date(new Date().setDate(new Date().getDate()-14)); - var previous21days = new Date(new Date().setDate(new Date().getDate()-21)); - var previous28days = new Date(new Date().setDate(new Date().getDate()-28)); - - async.parallel([ - function(callback){ - // Get total_register count - connection.query(`select count(*) as total_user_count from USER as U - inner join USERACCOUNT as UA - on U.user_hashkey = UA.user_hashkey - where user_id != 'None'`,(err, rows)=>{ - if(err) throw err; - - totalRegister = rows[0].total_user_count; - callback(err, rows); - }); - }, - function(callback){ - // Get yesterday_register count - connection.query(`select count(*) as yesterday_user_count from USER as U - inner join USERACCOUNT as UA - on U.user_hashkey = UA.user_hashkey - where user_id != 'None' - and UA.create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+'/'+(yesterday.getMonth()+1)+'/'+yesterday.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and UA.create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+'/'+(yesterday.getMonth()+1)+'/'+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')`,(err, rows)=>{ - if(err) throw err; - - yesterdayRegister = rows[0].yesterday_user_count; - callback(err, rows); - }); - }, - function(callback){ - // Get react_times about mapping - connection.query('select react_times from EVENT_RECO',(err, rows)=>{ - if(err) throw err; - var sum=0; - for(var i=0; i{ - //where UA.user_id != 'None'`,(err, rows)=>{ - if(err) throw err; - - - for(var i=0; i{ - if(err) throw err; - - var year = new Date().getFullYear(); - - for(var i=0; i (year-19)) - age10count++; - if(rows[i].user_birth > (year-29)) - age20count++; - if(rows[i].user_birth > (year-39)) - age30count++; - if(rows[i].user_birth > (year-49)) - age40count++; - } - callback(err, rows); - }); - }, - function(callback){ - // Get main-detail region - connection.query(`select - R.main_region, - R.region, - (select count(*) from RECOMMENDATION as RECO where RECO.region = R.region ) - as detail_region_count - from RECOMMENDATION as R - where - R.main_region != 'NULL' - or R.main_region != 'None' - group by R.main_region, R.region - `,(err, rows)=>{ - if(err) throw err; - for(var i=0; i STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 6:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 6:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday6clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 7:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 7:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday7clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 8:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 8:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday8clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 9:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 9:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday9clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 10:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 10:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday10clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 11:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 11:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday11clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 12:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 12:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday12clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 13:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 13:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday13clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 14:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 14:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday14clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 15:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 15:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday15clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 16:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 16:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday16clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 17:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 17:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday17clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 18:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 18:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday18clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 19:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 19:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday19clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 20:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 20:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday20clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 21:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 21:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday21clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 22:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 22:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday22clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday23clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 0:59:59','%Y/%m/%e %k:%i:%s')) - as today0clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 1:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 1:59:59','%Y/%m/%e %k:%i:%s')) - as today1clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 2:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 2:59:59','%Y/%m/%e %k:%i:%s')) - as today2clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 3:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 3:59:59','%Y/%m/%e %k:%i:%s')) - as today3clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 4:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 4:59:59','%Y/%m/%e %k:%i:%s')) - as today4clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 5:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+today.getFullYear()+`/`+(today.getMonth()+1)+`/`+today.getDate()+` 5:59:59','%Y/%m/%e %k:%i:%s')) - as today5clock, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as yesterday, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous2days.getFullYear()+`/`+(previous2days.getMonth()+1)+`/`+previous2days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous2days.getFullYear()+`/`+(previous2days.getMonth()+1)+`/`+previous2days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous2days, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous3days.getFullYear()+`/`+(previous3days.getMonth()+1)+`/`+previous3days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous3days.getFullYear()+`/`+(previous3days.getMonth()+1)+`/`+previous3days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous3days, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous4days.getFullYear()+`/`+(previous4days.getMonth()+1)+`/`+previous4days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous4days.getFullYear()+`/`+(previous4days.getMonth()+1)+`/`+previous4days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous4days, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous5days.getFullYear()+`/`+(previous5days.getMonth()+1)+`/`+previous5days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous5days.getFullYear()+`/`+(previous5days.getMonth()+1)+`/`+previous5days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous5days, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous6days.getFullYear()+`/`+(previous6days.getMonth()+1)+`/`+previous6days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous6days.getFullYear()+`/`+(previous6days.getMonth()+1)+`/`+previous6days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous6days, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous7days, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous1weeks, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous14days.getFullYear()+`/`+(previous14days.getMonth()+1)+`/`+previous14days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous7days.getFullYear()+`/`+(previous7days.getMonth()+1)+`/`+previous7days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous2weeks, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous21days.getFullYear()+`/`+(previous21days.getMonth()+1)+`/`+previous21days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous14days.getFullYear()+`/`+(previous14days.getMonth()+1)+`/`+previous14days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous3weeks, - (select count(*) from USERACCOUNT - where create_datetime > STR_TO_DATE('`+previous28days.getFullYear()+`/`+(previous28days.getMonth()+1)+`/`+previous28days.getDate()+` 0:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+previous21days.getFullYear()+`/`+(previous21days.getMonth()+1)+`/`+previous21days.getDate()+` 23:59:59','%Y/%m/%e %k:%i:%s')) - as previous4weeks - from USERACCOUNT;`,(err, rows)=>{ - if(err) throw err; - timeTheDay.push(rows[0].yesterday6clock); timeTheDay.push(rows[0].yesterday7clock); - timeTheDay.push(rows[0].yesterday8clock); timeTheDay.push(rows[0].yesterday9clock); - timeTheDay.push(rows[0].yesterday10clock); timeTheDay.push(rows[0].yesterday11clock); - timeTheDay.push(rows[0].yesterday12clock); timeTheDay.push(rows[0].yesterday13clock); - timeTheDay.push(rows[0].yesterday14clock); timeTheDay.push(rows[0].yesterday15clock); - timeTheDay.push(rows[0].yesterday16clock); timeTheDay.push(rows[0].yesterday17clock); - timeTheDay.push(rows[0].yesterday18clock); timeTheDay.push(rows[0].yesterday19clock); - timeTheDay.push(rows[0].yesterday20clock); timeTheDay.push(rows[0].yesterday21clock); - timeTheDay.push(rows[0].yesterday22clock); timeTheDay.push(rows[0].yesterday23clock); - timeTheDay.push(rows[0].today0clock); timeTheDay.push(rows[0].today1clock); - timeTheDay.push(rows[0].today2clock); timeTheDay.push(rows[0].today3clock); - timeTheDay.push(rows[0].today4clock); timeTheDay.push(rows[0].today5clock); - - timeTheWeek.push(rows[0].previous7days); timeTheWeek.push(rows[0].previous6days); - timeTheWeek.push(rows[0].previous5days); timeTheWeek.push(rows[0].previous4days); - timeTheWeek.push(rows[0].previous3days); timeTheWeek.push(rows[0].previous2days); - timeTheWeek.push(rows[0].yesterday); - - timeTheMonth.push(rows[0].previous4weeks); timeTheMonth.push(rows[0].previous3weeks); - timeTheMonth.push(rows[0].previous2weeks); timeTheMonth.push(rows[0].previous1weeks); - /*for(var i=0; i<24; i++) - { - connection.query(`select count(*) as day_count from USERACCOUNT - where create_datetime > STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` `+i+`:0:0','%Y/%m/%e %k:%i:%s') - and create_datetime < STR_TO_DATE('`+yesterday.getFullYear()+`/`+(yesterday.getMonth()+1)+`/`+yesterday.getDate()+` `+i+`:59:59','%Y/%m/%e %k:%i:%s')`, (err,rows)=>{ - if(err) throw err; - - //timeTheDay.push(rows[0].day_count); - timeTheDay.push(i); - }); - } - console.log(timeTheDay);*/ - callback(err, rows); - }); - }, - function(callback){ - // Get sync cost time - connection.query(`(select - count(*) as sync_cost_20, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'google' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) >= 0 - and (SE.ctime-UA.create_datetime) <= 20) - union - (select - count(*) as sync_cost_20, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'naver' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) >= 0 - and (SE.ctime-UA.create_datetime) <= 20) - union - (select - count(*) as sync_cost_20, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'ical' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) >= 0 - and (SE.ctime-UA.create_datetime) <= 20)`,(err, rows)=>{ - if(err) throw err; - - - for(var i=0; i 20 - and (SE.ctime-UA.create_datetime) <= 40) - union - (select - count(*) as sync_cost_40, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'naver' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) > 20 - and (SE.ctime-UA.create_datetime) <= 40) - union - (select - count(*) as sync_cost_40, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'ical' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) > 20 - and (SE.ctime-UA.create_datetime) <= 40)`,(err, rows)=>{ - if(err) throw err; - - for(var i=0; i 40) - union - (select - count(*) as sync_cost_60, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'naver' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) > 40) - union - (select - count(*) as sync_cost_60, - UA.login_platform - from USERACCOUNT as UA - inner join SYNC_END as SE - on UA.account_hashkey = SE.account_hashkey - where - UA.login_platform = 'ical' - and SE.sync_time_state = 1 - and (SE.ctime-UA.create_datetime) > 40)`,(err, rows)=>{ - if(err) throw err; - - for(var i=0; i{ - sess = req.session; - - if(sess.name) - res.redirect('/dashboard'); - else - res.render('./pages/examples/login.html',{error:null}); - }); - app.post('/login',(req,res)=>{ - sess = req.session; - - connection.query('select admin_name from ADMINACCOUNT where admin_id=\''+req.body.adminId+'\' and admin_pw=\''+req.body.password+'\'',(err,rows)=>{ - if(rows.length>0){ - sess.name = rows[0].admin_name; - res.redirect('/dashboard'); - } - else{ - res.render('./pages/examples/login.html',{error: "Input wrong id or password"}); - } - }); - }); - - // PUSH example in web-mapping-admin - app.post('/push',(req,res)=>{ -/* - // PUSH ALL-DEVICE ABOUT EACH ACCOUNT-USER - - connection.query( - `select - UD.push_token - from USERDEVICE as UD - inner join USERACCOUNT as UA - on UD.account_hashkey = UA.account_hashkey - where - UA.account_hashkey = \'`+req.body.account_hashkey+'\'' - , (err, pushtokens) => { - - let pushtoken_length=pushtokens.length; - for(let i=0; i{ - sess = req.session; + app.route('/').get(authorCtrl.adminAccess) + app.route('/login').post(authorCtrl.adminLogin) + app.route('/logout').get(authorCtrl.adminLogout) + app.route('/dashboard').get(dashboardCtrl.renderDashboard) + app.route('/reco-analysis').get(recoAnalysisCtrl.renderRecoAnalysis) + app.route('/user-analysis').get(userAnalysisCtrl.renderUserAnalysis) + - if(sess.name){ - req.session.destroy((err)=>{ - if(err){ - console.log(err); - }else{ - res.redirect('/'); - } - }) - }else{ - res.redirect('/'); - } - }); - app.get('/pages/charts/chartjs.html',function(req,res){ - res.render('pages/charts/chartjs.html'); - }); //dev.caly.io:555566/push app.route('/push').get(pushCtrl.initData) app.route('/pushDetail').get(pushCtrl.pushDetail) diff --git a/server.js b/server.js index ed19658..457e6a5 100644 --- a/server.js +++ b/server.js @@ -3,7 +3,7 @@ var session = require('express-session'); var bodyParser = require('body-parser'); const app = express(); -const port = 9091; +const port = 3100; //app.use(bodyParser.urlencoded({ extended: true })); //app.use(bodyParser.json()); @@ -22,7 +22,7 @@ app.engine('html', require('ejs').renderFile); var router = require('./router/main')(app); var server = app.listen(port, function(){ - console.log("Express server has started on port 3333") + console.log("Express server has started on port "+port); }); app.use(express.static('public')); \ No newline at end of file diff --git a/views/chartjs.html b/views/chartjs.html new file mode 100755 index 0000000..66c2491 --- /dev/null +++ b/views/chartjs.html @@ -0,0 +1,422 @@ + + + + + + CalyFactory ADMIN | User Analysis + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+

+ ChartJS + Preview sample +

+ +
+ + +
+
+
+ +
+
+

Area Chart

+ +
+ + +
+
+
+
+ +
+
+ +
+ + + +
+
+

Donut Chart

+ +
+ + +
+
+
+ +
+ +
+ + +
+ +
+ +
+
+

Line Chart

+ +
+ + +
+
+
+
+ +
+
+ +
+ + + +
+
+

Bar Chart

+ +
+ + +
+
+
+
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + Copyright © 2014-2016 Almsaeed Studio. All rights + reserved. +
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + diff --git a/views/index.html b/views/index.html index 837dd8e..4ff3b43 100755 --- a/views/index.html +++ b/views/index.html @@ -67,14 +67,14 @@