const express = require('express'); const liczacy = express.Router(); const fs = require('fs'); require('dotenv').config(); //mysql var mysql = require('mysql2'); var con = mysql.createConnection({ host: process.env.MYSQLHOST, user: process.env.MYSQLUSER, password: process.env.MYSQLPASS, port : process.env.MYSQLPORT, database: process.env.MYSQLDB, insecureAuth : true }); con.connect(function(err) { if (err) throw err; console.log('Connected!'); }); var cookie = require('cookie'); var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: true })); //import functions from func.js const {headerHtml, menuHtml, footerHtml, checkPesel, loger, telefon, sendToDiscord, sendEmail} = require('./func.js'); liczacy.use(function(req, res, next) { var cookies = cookie.parse(req.headers.cookie || ''); var liczacy = cookies.liczacy; con.query('SELECT * FROM tokenyLiczacy, liczacy WHERE token = ? AND aktywny = 1 AND tokenyLiczacy.userId = liczacy.id', [liczacy], function(err, result) { if (err) throw err; if (result.length > 0) { req.user = result[0]; next(); } else { res.redirect('/loginliczacy'); loger(fs, 'Nieudana próba dostępu do panelu liczącego przy użyciu tokenu: ' + liczacy, 'warning'); } }); }); liczacy.get('/', function(req, res) { var toReturn = headerHtml(); toReturn += menuHtml(4); toReturn += '
'; toReturn += '

Panel

'; toReturn += '

Witaj ' + req.user.imie + '

'; toReturn += '
'; toReturn += 'Rozlicz wolontariusza'; toReturn += 'Wyloguj się'; toReturn += '
'; toReturn += '
'; toReturn += footerHtml(2); res.send(toReturn); }) liczacy.all('/statystyki2', function(req, res) { var toReturn = headerHtml("Statystyki"); toReturn += menuHtml(4); //make script to refresh every 5 seconds, and full screen this page toReturn += ''; toReturn += '
'; toReturn += '
'; toReturn += '

Całkowita suma

'; toReturn += ''; //wypisz sumę zebranych pieniędzy, sumę poszczególnych nominałów //pobierz wszystkie rozliczenia con.query('SELECT * FROM rozliczenie WHERE aktywne = 1', function(err, result) { if (err) throw err; var suma = 0; var sumaTerminal = 0; var suma1gr = 0; var suma2gr = 0; var suma5gr = 0; var suma10gr = 0; var suma20gr = 0; var suma50gr = 0; var suma1zl = 0; var suma2zl = 0; var suma5zl = 0; var suma10zl = 0; var suma20zl = 0; var suma50zl = 0; var suma100zl = 0; var suma200zl = 0; var suma500zl = 0; result.forEach(function(row) { suma += row['1gr'] + row['2gr'] * 2 + row['5gr'] * 5 + row['10gr'] * 10 + row['20gr'] * 20 + row['50gr'] * 50 + row['1zl'] * 100 + row['2zl'] * 200 + row['5zl'] * 500 + row['10zl'] * 1000 + row['20zl'] * 2000 + row['50zl'] * 5000 + row['100zl'] * 10000 + row['200zl'] * 20000 + row['500zl'] * 50000; sumaTerminal += row.sumaZTerminala; suma1gr += row['1gr']; suma2gr += row['2gr']; suma5gr += row['5gr']; suma10gr += row['10gr']; suma20gr += row['20gr']; suma50gr += row['50gr']; suma1zl += row['1zl']; suma2zl += row['2zl']; suma5zl += row['5zl']; suma10zl += row['10zl']; suma20zl += row['20zl']; suma50zl += row['50zl']; suma100zl += row['100zl']; suma200zl += row['200zl']; suma500zl += row['500zl']; }); toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += '
Suma' + suma/100.0 + ' zł
Suma z terminali' + sumaTerminal + ' zł
1 gr' + suma1gr + '
2 gr' + suma2gr + '
5 gr' + suma5gr + '
10 gr' + suma10gr + '
20 gr' + suma20gr + '
50 gr' + suma50gr + '
1 zł' + suma1zl + '
2 zł' + suma2zl + '
5 zł' + suma5zl + '
10 zł' + suma10zl + '
20 zł' + suma20zl + '
50 zł' + suma50zl + '
100 zł' + suma100zl + '
200 zł' + suma200zl + '
500 zł' + suma500zl + '
'; toReturn += '
'; toReturn += '
'; toReturn += '

Top 10 wolontariuszy

'; //SELECT * FROM `SumaZebranaPrzezWolontariuszy` ORDER BY `SumaZebranaPrzezWolontariuszy`.`suma` ASC LIMIT 10; toReturn += ''; toReturn += ''; con.query('SELECT numerIdentyfikatora, imie, nazwisko, suma FROM `SumaZebranaPrzezWolontariuszy` ORDER BY `SumaZebranaPrzezWolontariuszy`.`suma` ASC LIMIT 10;', function(err, result) { if (err) throw err; result.forEach(function(row) { toReturn += ''; }); toReturn += '
WolontariuszSuma
' + row.numerIdentyfikatora + '' + Math.round(row.suma*100)/100 + '
'; toReturn += '
'; toReturn += '
'; //który liczący najwięcej liczył toReturn += '

Najwięcej puszek przeliczonych

'; toReturn += ''; toReturn += ''; con.query("SELECT idLiczacego, imie, nazwisko, sumaPrzeliczona FROM `sumaPrzeliczona` ORDER BY `sumaPrzeliczona`.`sumaPrzeliczona` DESC LIMIT 10;", function(err, result) { if (err) throw err; result.forEach(function(row) { toReturn += ''; }); toReturn += '
LiczącySuma
' + row.idLiczacego + '' + Math.round(row.sumaPrzeliczona*100)/100 + '
'; toReturn += '
'; toReturn += '
'; toReturn += footerHtml(); res.send(toReturn); }) }); }); }); liczacy.get('/rozlicz', function(req, res) { var toReturn = headerHtml("Lista wolontariuszy do rozliczenia"); toReturn += menuHtml(4); toReturn += '
'; toReturn += '

Rozlicz

'; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; //pobierz osoby liczące con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 AND id NOT IN (SELECT wolontariuszID FROM rozliczenie WHERE aktywne = 1) ORDER BY numerIdentyfikatora ASC', function(err, result) { if (err) throw err; result.forEach(function(row) { toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; if(row.rodzic == "BRAK") toReturn += ''; else toReturn += ''; toReturn += ''; toReturn += ''; }); toReturn += '
NumerImięNazwiskoTerminalRodzicOpcje
' + row.numerIdentyfikatora + '' + row.imie + '' + row.nazwisko + '' + (row.terminal == 1 ? 'Tak' : 'Nie') + ' ' + row.rodzic + 'Rozlicz
'; toReturn += '
'; toReturn += footerHtml(2); res.send(toReturn); }); }); liczacy.get('/rozliczWolontariusza', function(req, res) { var idWolontariusza = req.query.id; //pobierz dane wolontariusza, wyświetl formularz rozliczenia var toReturn = headerHtml("Rozlicz wolontariusza"); toReturn += menuHtml(4); toReturn += '
'; toReturn += '

Rozlicz wolontariusza

'; toReturn += '
'; con.query('SELECT * FROM wolontariusz WHERE id = ?', [idWolontariusza], function(err, result) { if (err) throw err; if (result.length > 0) { toReturn += "

" + result[0].imie + " " + result[0].nazwisko + "

"; toReturn += "

ID: " + result[0].numerIdentyfikatora + "

"; toReturn += '

Suma: 0

'; //pokaż formularz do wpisywania zebranej kwoaty i monet (sumę liczy program, użytkownik podaje ilość monet) toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; //kwota z terminala toReturn += ''; //waluta obca, tekstarea toReturn += ''; //dary inne, tekstarea toReturn += ''; //uwagi, tekstarea toReturn += ''; //sala toReturn += ''; //liczący 1 toReturn += ''; console.log(req.user); toReturn += ''; //liczący 2 toReturn += ''; //liczący 3 toReturn += ''; toReturn += '
Suma
WalutaIlość
1 gr
2 gr
5 gr
10 gr
20 gr
50 gr
1 zł
2 zł
5 zł
10 zł
20 zł
50 zł
100 zł
200 zł
500 zł
Kwota z terminala
Waluta obca
Dary inne
Uwagi
Sala
Liczący 1' + req.user.imie + ' ' + req.user.nazwisko + '
Liczący 2
Liczący 3
'; toReturn += ''; toReturn += '

Suma: 0

'; toReturn += ''; toReturn += '
'; toReturn += '
'; toReturn += footerHtml(2); res.send(toReturn); }); }); } }); }); liczacy.post('/rozliczWolontariusza', function(req, res) { //weryfikowal to numer id z tokenu var idWolontariusza = req.query.id; var idLiczacy1 = req.body.liczacy1; var idLiczacy2 = req.body.liczacy2; var idLiczacy3 = req.body.liczacy3 == 0 ? null : req.body.liczacy3; var sala = req.body.sala; var uwagi = req.body.uwagi; var daryInne = req.body.daryInne; var walutaObca = req.body.walutaObca; var terminal = req.body.terminal > 0 ? 1 : 0; var gr1 = req.body['1gr']; var gr2 = req.body['2gr']; var gr5 = req.body['5gr']; var gr10 = req.body['10gr']; var gr20 = req.body['20gr']; var gr50 = req.body['50gr']; var zl1 = req.body['1zl']; var zl2 = req.body['2zl']; var zl5 = req.body['5zl']; var zl10 = req.body['10zl']; var zl20 = req.body['20zl']; var zl50 = req.body['50zl']; var zl100 = req.body['100zl']; var zl200 = req.body['200zl']; var zl500 = req.body['500zl']; var sumaZTerminala = req.body.terminal; //zapisz dane do bazy $sql = "INSERT INTO `rozliczenie` (`id`, `wolontariuszID`, `czasRozliczenia`, `terminal`, `sumaZTerminala`, `1gr`, `2gr`, `5gr`, `10gr`, `20gr`, `50gr`, `1zl`, `2zl`, `5zl`, `10zl`, `20zl`, `50zl`, `100zl`, `200zl`, `500zl`, `walutaObca`, `daryInne`, `uwagi`, `liczacy1`, `liczacy2`, `liczacy3`, `sala`, `weryfikowal`, `wpisaneDoBSS`, `ostatniaZmiana`, `aktywne`) "; $sql += 'VALUES (NULL, ?, CURRENT_TIME(), ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,CURRENT_TIME(),1)'; con.query($sql, [idWolontariusza, terminal, sumaZTerminala, gr1, gr2, gr5, gr10, gr20, gr50, zl1, zl2, zl5, zl10, zl20, zl50, zl100, zl200, zl500, walutaObca, daryInne, uwagi, idLiczacy1, idLiczacy2, idLiczacy3, sala], function(err, result) { if (err) throw err; if(process.env.DISCORD == "TAK") { con.query('SELECT * FROM wolontariusz WHERE id = ?', [idWolontariusza], function(err, result) { if (err) throw err; var suma = Number(gr1) +Number(gr2)*2 + Number(gr5)*5 + Number(gr10)*10 + Number(gr20)*20 + Number(gr50)*50 + Number(zl1)*100 + Number(zl2)*200 + Number(zl5)*500 + Number(zl10)*1000 + Number(zl20)*2000 + Number(zl50)*5000 + Number(zl100)*10000 + Number(zl200)*20000 + Number(zl500)*50000 + Number(sumaZTerminala)*100; sendToDiscord(result[0].imie, result[0].nazwisko, suma/100, result[0].discord); }); } if(process.env.SENDEMAILS == "TAK") { con.query('SELECT * FROM wolontariusz WHERE id = ?', [idWolontariusza], function(err, result) { if (err) throw err; var suma = Number(gr1) +Number(gr2)*2 + Number(gr5)*5 + Number(gr10)*10 + Number(gr20)*20 + Number(gr50)*50 + Number(zl1)*100 + Number(zl2)*200 + Number(zl5)*500 + Number(zl10)*1000 + Number(zl20)*2000 + Number(zl50)*5000 + Number(zl100)*10000 + Number(zl200)*20000 + Number(zl500)*50000 + Number(sumaZTerminala)*100; sendEmail(result[0].imie, result[0].nazwisko, suma/100, result[0].email); }); } res.redirect('/liczacy/rozliczenia#'+idWolontariusza); loger(fs, 'Rozliczono wolontariusza o id: ' + idWolontariusza, 'info'); }); }); liczacy.get("/szybkieInfo", function(req, res) { var toReturn = ''; toReturn += '
'; toReturn += '

Szybkie informacje

'; //sprawdź ile jest wolontariuszy oraz ilu jest rozliczonych var iloscWolontariuszy = 0; var iloscRozliczonych = 0; var iloscLiczących = 0; con.query("SELECT * FROM `wolontariusz` WHERE `aktywny` = 1", function(err, result) { if (err) throw err; iloscWolontariuszy = result.length; con.query("SELECT * FROM `rozliczenie` WHERE `aktywne` = 1", function(err, result) { if (err) throw err; iloscRozliczonych = result.length; con.query("SELECT * FROM `liczacy` WHERE `aktywne` = 1", function(err, result) { if (err) throw err; iloscLiczących = result.length; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += ''; toReturn += '
Ilość wolontariuszy' + iloscWolontariuszy + '
Ilość rozliczonych' + iloscRozliczonych + '
Ilość liczących' + iloscLiczących + '
'; //ostatni rozliczony toReturn += '

Ostatnio rozliczeni

'; toReturn += ''; toReturn += ''; con.query("SELECT * FROM `rozliczenie`, `wolontariusz` WHERE `rozliczenie`.`wolontariuszID` = `wolontariusz`.`id` AND `rozliczenie`.`aktywne` = 1 ORDER BY `rozliczenie`.`czasRozliczenia` DESC LIMIT 5", function(err, result) { if (err) throw err; result.forEach(function(row) { toReturn += ''; }); toReturn += '
WolontariuszSuma
' + row.numerIdentyfikatora + '' + Math.round((row['1gr'] + row['2gr'] * 2 + row['5gr'] * 5 + row['10gr'] * 10 + row['20gr'] * 20 + row['50gr'] * 50 + row['1zl'] * 100 + row['2zl'] * 200 + row['5zl'] * 500 + row['10zl'] * 1000 + row['20zl'] * 2000 + row['50zl'] * 5000 + row['100zl'] * 10000 + row['200zl'] * 20000 + row['500zl'] * 50000 + row.sumaZTerminala * 100))/100.0 + ' zł
'; toReturn += '
'; res.send(toReturn); }); }); }); }); }); liczacy.all('/wyloguj', function(req, res) { //tokenyLiczacy ustaw aktywny na 0 con.query('UPDATE tokenyLiczacy SET aktywny = 0 WHERE userId = ?', [req.user.id], function(err, result) { if (err) throw err; res.clearCookie('liczacy'); res.redirect('/loginliczacy'); }); }); module.exports = liczacy;