-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
169 lines (137 loc) · 5.05 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import express from 'express';
import {engine} from 'express-handlebars';
import livereload from 'livereload';
import connectLiveReload from 'connect-livereload'
import bodyParser from "body-parser";
import session from "express-session"
import numeral from 'numeral';
import hbs_section from 'express-handlebars-sections';
import signinRouter from './routes/signin.route.js';
import transferRouter from './routes/transfer.route.js';
import savingRouter from './routes/saving.route.js';
import passbookRouter from './routes/passbook.route.js';
import loanRouter from './routes/loan.route.js';
import accountRouter from "./routes/account.route.js";
import debtRouter from './routes/debt.route.js';
import loginRouter from "./routes/login.route.js";
import UsersRouter from './routes/manageUser.router.js';
import LoansRouter from './routes/loan.router.js';
import SavingRouter from './routes/saving.router.js'
import interestRouter from './routes/interest.router.js';
import staticServices from './services/statistic.servies.js'
import {generateRandomString} from "./utils/db.js";
import { isAuth } from './middlewares/midwares.js';
const liveReloadServer = livereload.createServer();
liveReloadServer.server.once("connection", () => {
setTimeout(() => {
liveReloadServer.refresh("/");
}, 1);
});
// ------- Main app
const app = express();
//Khi đăng nhập từ bước 1 sang bước 2 thì có lưu 2 thông tin là sdt và họ tên
//Sử dụng session để lưu dữ liệu
app.use(session({
secret: "NhatKyVienPhuong",
resave: false,
saveUninitialized: true,
cookie: {}
}));
//Module cho việc parse dữ liệu trong form thành json
app.use(bodyParser.urlencoded({extend: true}));
app.use(bodyParser.json());
//module dùng cho việc auto reload server khi thay đổi code
//npm run watch để run
app.use(connectLiveReload());
// Config express and use
app.engine('hbs', engine({
extname: 'hbs',
helpers:{
format_number(value) {
return numeral(value).format('0,0');
},
random_generate_string() {
return generateRandomString();
},
formatNumber(value) {
return numeral(value).format('0,0') + ' VNĐ';
},
formatRate(value) {
return numeral(value).format('0.00%');
},
calTotalPassbookMoney(passbook) {
return passbook.Tien_Goc + passbook.Tien_Lai;
},
calPassbookGrowthRate(passbook) {
return (passbook.Tien_Lai / passbook.Tien_Goc).toFixed(4);
},
calTotalPassbooksMoney(passbooks) {
return passbooks.reduce((sum, passbook) => sum + passbook.Tien_Goc + passbook.Tien_Lai, 0);
},
calTotalPassbooksGrowth(passbooks) {
const totalBaseMoney = passbooks.reduce((sum, passbook) => sum + passbook.Tien_Goc, 0);
const totalProfit = passbooks.reduce((sum, passbook) => sum + passbook.Tien_Lai, 0);
if (totalBaseMoney === 0) return 0;
return (totalProfit / totalBaseMoney).toFixed(4);
},
section: hbs_section(),
}
}));
app.set('view engine', 'hbs');
app.set('views', './views');
app.use('/public', express.static('public'));
app.use('/images', express.static('images'));
// Admin router
app.use('/admin',UsersRouter);
app.use('/admin',LoansRouter);
app.use('/admin',SavingRouter);
app.use('/admin',interestRouter);
app.get('/admin/Statistics',async (req, res) => {
const data = await staticServices.getAllAggregates()
const totalInBank=200000000000-data.totalLoan+data.totalSaving
const totalInterest=data.totalLoanInterest-data.nonTermSavingInterest-data.totalTermPayment
console.log(data)
res.render('vwAdmin/statistics', {
data:data,
totalInBank:totalInBank,
totalInterest:totalInterest,
layout: 'admin'
});
});
// User router
// Home page routing
app.get('/', isAuth, function (req, res) {
res.render('home_login_register', {
layout: false
});
});
// Sign-in routing
app.use('/sign-in', signinRouter);
// For account
app.use('/account', accountRouter);
// For login
app.use('/login', loginRouter);
// Logged routing
app.get('/logged/home', isAuth, function (req, res) {
res.render('home', {
user: req.session.authUser,
});
});
// Transfer routing
app.use('/logged/transfer', isAuth, transferRouter);
// Saving routing
app.use('/logged/saving', isAuth, savingRouter);
// Passbook routing
app.use('/logged/passbook', isAuth, passbookRouter);
// Loan routing
app.use('/logged/loan', isAuth, loanRouter);
// Pay debt routing
app.use('/logged/debts/', isAuth, loanRouter);
app.use('/logged/debtbook', isAuth, debtRouter);
// Listen on port
// Use PORT provided in environment or default to 3000
const port = process.env.PORT || 3000;
// Listen on `port` and 0.0.0.0
app.listen(port, function () {
console.log(`Server started on http://localhost:${port}`);
});