';
//pobierz osoby liczące
con.query('SELECT * FROM liczacy WHERE aktywne = 1 ORDER BY nazwisko ASC', function(err, result) {
if (err) throw err;
result.forEach(function(row) {
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
loger(fs, 'Wyświetlono listę osób liczących', 'info');
});
});
panelRouter.get('/kod', function(req, res) {
var id = req.query.id;
//SELECT qr FROM liczacy WHERE id = ?
con.query('SELECT qr FROM liczacy WHERE id = ?', [id], function(err, result) {
if (err) throw err;
if (result.length == 1) {
var toReturn = headerHtml();
toReturn += menuHtml(1);
toReturn += ' ';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
loger(fs, 'Wyświetlono kod osoby liczącej o id: ' + id, 'info');
}
});
});
panelRouter.get('/dodajOsobeLiczaca', function(req, res) {
var toReturn = headerHtml();
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
Dodaj osobę liczącą
';
toReturn += '';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
panelRouter.post('/dodajOsobeLiczaca', function(req, res) {
//sprawdź czy istnieje taka osoba
var imie = req.body.imie;
var nazwisko = req.body.nazwisko;
con.query('SELECT * FROM liczacy WHERE imie = ? AND nazwisko = ?', [imie, nazwisko], function(err, result) {
if (err) throw err;
if (result.length > 0) {
//istnieje
res.redirect('/panel/osobyLiczace?error=1');
loger(fs, 'Nieudana próba dodania osoby liczącej o imieniu: ' + imie + ' i nazwisku: ' + nazwisko, 'warning');
} else {
//nie istnieje
var qr = makeid(24)
con.query('INSERT INTO liczacy (imie, nazwisko, qr) VALUES (?, ?, ?)', [imie, nazwisko, qr], function(err, result) {
if (err) throw err;
res.redirect('/panel/osobyLiczace');
loger(fs, 'Dodano osobę liczącą o imieniu: ' + imie + ' i nazwisku: ' + nazwisko + ' z kodem: ' + qr, 'info');
});
}
});
});
panelRouter.get('/listaWolontariuszy', function(req, res) {
//pokaż w ładnej tabeli wszystkich wolontariuszy, posortuj według nazwiska, na górze strony dodaj przycisk dodaj wolontariusza
var toReturn = headerHtml();
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
Lista wolontariuszy
';
toReturn += '
';
toReturn += '
';
toReturn += '
Numer
';
toReturn += '
Imię
';
toReturn += '
Nazwisko
';
toReturn += '
Discord
';
toReturn += '
Email
';
toReturn += '
Telefon
';
if(req.user.id == 1)
toReturn += '
PESEL
';
toReturn += '
Terminal
';
toReturn += '
Rodzic
';
toReturn += '
Opcje
';
toReturn += '
';
//pobierz osoby liczące
con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 ORDER BY numerIdentyfikatora ASC', function(err, result) {
if (err) throw err;
result.forEach(function(row) {
//jeżeli zaznacz, to kolor wiersza na rgba(0, 255, 0, 0.5)
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
panelRouter.all('/listyObecnosci', function(req, res) {
//pobierz wszystkich wolontariuszy, w tabelce wypisz numer identyfikatora, imię, nazwisko, telefon, rodzic, pole do wpisania daty (puste), pole do wpisania podpisu (puste)
var toReturn = headerHtml("Lista obecności na spotkaniu organizacyjnym");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
';
toReturn += '';
toReturn += '
';
toReturn += '
Numer
';
toReturn += '
Imię
';
toReturn += '
Nazwisko
';
toReturn += '
Telefon
';
toReturn += '
Rodzic
';
toReturn += '
Data
';
toReturn += '
Podpis
';
toReturn += '
';
toReturn += '';
//pobierz osoby liczące
con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 ORDER BY numerIdentyfikatora ASC', function(err, result) {
if (err) throw err;
result.forEach(function(row) {
toReturn += '
';
toReturn += '
' + row.numerIdentyfikatora + '
';
toReturn += '
' + row.imie + '
';
toReturn += '
' + row.nazwisko + '
';
toReturn += '
' + telefon(row.telefon, 0) + '
';
if(row.rodzic == "BRAK")
toReturn += '
';
else
toReturn += '
' + row.rodzic + '
';
toReturn += '
';
toReturn += '
';
toReturn += '
';
});
toReturn += '
';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
});
panelRouter.all('/listyRzeczy', function(req, res) {
//pobierz wszystkich wolontariuszy, w tabelce wypisz numer identyfikatora, imię, nazwisko, telefon, rodzic, pole do wpisania daty (puste), pole do wpisania podpisu (puste)
var toReturn = headerHtml("Odbiór puszek i innych rzeczy");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
';
toReturn += '';
toReturn += '
';
toReturn += '
Numer
';
toReturn += '
Imię
';
toReturn += '
Nazwisko
';
toReturn += '
Data
';
toReturn += '
Odbieram nienaruszoną puszkę
';
toReturn += '
Odbieram zestaw wolontariusza (w tym identyfikator)
';
toReturn += '
';
toReturn += '';
//pobierz osoby liczące
con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 ORDER BY numerIdentyfikatora ASC', function(err, result) {
if (err) throw err;
result.forEach(function(row) {
toReturn += '
';
toReturn += '';
//pobierz osoby liczące
con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 ORDER BY numerIdentyfikatora ASC', function(err, result) {
if (err) throw err;
result.forEach(function(row) {
toReturn += '
';
toReturn += '
' + row.numerIdentyfikatora + '
';
toReturn += '
' + row.imie + '
';
toReturn += '
' + row.nazwisko + '
';
//wyświetl tylko 3 lub 4 losowe pozycje cyfry PESEL, resztę zastąp #, 11 cyfr jest w PESELu
var tab = [1,1,1,1,1,1,1,1,1,1,1];
//wylosuj pozycję i zamień na 0
var counter = 0;
while (counter < 7) {
var random = Math.floor(Math.random() * 11);
if (tab[random] == 1) {
tab[random] = 0;
counter += 1;
}
}
var peselToShow = '';
for (var i = 0; i < 11; i++) {
if (tab[i] == 1) {
if(i == 10)
peselToShow += row.pesel[i];
else
peselToShow += row.pesel[i] + ' ';
} else {
if(i == 10)
peselToShow += '█';
else
peselToShow += '█ ';
}
}
if(!checkPesel(row.pesel))
toReturn += '
' + peselToShow + '
';
else
toReturn += '
' + peselToShow + '
';
toReturn += '
';
toReturn += '
';
toReturn += '
';
toReturn += '
';
toReturn += '
';
});
toReturn += '
';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
loger(fs, 'Wyświetlono listę przyjść z nemerami pesel', 'warning');
});
});
panelRouter.all('/logout', function(req, res) {
//sprawdź czy token istnieje i jest aktywny
var cookies = cookie.parse(req.headers.cookie || '');
var token = cookies.token;
con.query('UPDATE tokeny SET aktywny = 0 WHERE token = ?', [token], function(err, result) {
if (err) throw err;
res.redirect('/login');
loger(fs, 'Wylogowano użytkownika ' + req.user.kto, 'info');
});
});
//rozlicz, pokaż w tabelce wszystkich wolontariuszy, którzy jeszcze są nie rozliczeni, posortuj według numeru identyfikatora, ostatnie pole dodaj rozliczenie
panelRouter.get('/rozlicz', function(req, res) {
var toReturn = headerHtml("Lista wolontariuszy do rozliczenia");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
Rozlicz
';
toReturn += '
';
toReturn += '
';
toReturn += '
Numer
';
toReturn += '
Imię
';
toReturn += '
Nazwisko
';
toReturn += '
Telefon
';
toReturn += '
Terminal
';
toReturn += '
Rodzic
';
toReturn += '
Opcje
';
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 += footerHtml(1);
res.send(toReturn);
});
});
});
}
});
});
panelRouter.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,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, req.user.id], 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('/panel/rozliczenia#'+idWolontariusza);
loger(fs, 'Rozliczono wolontariusza o id: ' + idWolontariusza, 'info');
});
});
panelRouter.all('/rozliczenia', function(req, res) {
var toReturn = headerHtml("Rozliczenia");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '';
toReturn += '
';
toReturn += '
';
toReturn += '
';
toReturn += '
Numer
';
toReturn += '
Imię
';
toReturn += '
Nazwisko
';
toReturn += '
Suma
';
toReturn += '
Kwota z terminala
';
toReturn += '
500zł
';
toReturn += '
200zł
';
toReturn += '
100zł
';
toReturn += '
50zł
';
toReturn += '
20zł
';
toReturn += '
10zł
';
toReturn += '
5zł
';
toReturn += '
2zł
';
toReturn += '
1zł
';
toReturn += '
50gr
';
toReturn += '
20gr
';
toReturn += '
10gr
';
toReturn += '
5gr
';
toReturn += '
2gr
';
toReturn += '
1gr
';
toReturn += '
Waluta obca
';
toReturn += '
Dary inne
';
toReturn += '
Uwagi
';
toReturn += '
Sala
';
toReturn += '
Edytuj
';
toReturn += '
';
//pobierz osoby liczące
con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 ORDER BY numerIdentyfikatora ASC', function(err, result) {
if (err) throw err;
const promises = [];
result.forEach(function(row) {
const promise = new Promise((resolve, reject) => {
con.query('SELECT * FROM rozliczenie WHERE wolontariuszID = ? AND aktywne = 1 ORDER BY czasRozliczenia DESC', [row.id], function(err, result2) {
if (err) reject(err);
if (result2.length === 1) {
//istnieje
toReturn += '
';
//pobierz osoby liczące
con.query('SELECT * FROM wolontariusz WHERE aktywny = 1 ORDER BY numerIdentyfikatora ASC', function(err, result) {
if (err) throw err;
const promises = [];
result.forEach(function(row) {
const promise = new Promise((resolve, reject) => {
con.query('SELECT * FROM rozliczenie WHERE wolontariuszID = ? AND aktywne = 1 AND weryfikowal = 0 ORDER BY czasRozliczenia DESC', [row.id], function(err, result2) {
if (err) reject(err);
if (result2.length === 1) {
//istnieje
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
panelRouter.post("/haslo", function(req, res) {
//console.log(req.body);
var stareHaslo = req.body.stareHaslo;
var noweHaslo = req.body.noweHaslo;
var powtorzHaslo = req.body.powtorzHaslo;
//sprawdź czy stare hasło jest poprawne, tabelka loginy, kolumna haslo
con.query("SELECT * FROM `login` WHERE `id` = ? AND `haslo` = SHA1(?)", [req.user.id, stareHaslo], function(err, result) {
if (err) throw err;
if (result.length == 1) {
//stare hasło jest poprawne
if (noweHaslo == powtorzHaslo) {
//hasła są takie same
//zmień hasło
con.query("UPDATE `login` SET `haslo` = SHA1(?) WHERE `login`.`id` = ?", [noweHaslo, req.user.id], function(err, result) {
if (err) throw err;
res.redirect("/panel/haslo?success");
});
} else {
//hasła nie są takie same
res.redirect("/panel/haslo?error");
}
} else {
//stare hasło jest niepoprawne
res.redirect("/panel/haslo?error");
}
});
});
///nowyAdmin
panelRouter.get("/nowyAdmin", function(req, res) {
var toReturn = headerHtml("Dodaj administratora");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
Dodaj administratora
';
toReturn += '';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
panelRouter.post("/nowyAdmin", function(req, res) {
//sprawdź czy login jest wolny
var imie = req.body.imie;
var nazwisko = req.body.nazwisko;
var login = req.body.login;
var haslo = req.body.haslo;
con.query("SELECT * FROM `login` WHERE `login` = ?", [login], function(err, result) {
if (err) throw err;
if (result.length == 0) {
//login jest wolny
//dodaj admina
con.query("INSERT INTO `login` (`id`, `login`, `haslo`, `kto`, `aktywne`) VALUES (NULL, ?, SHA1(?), ?, 1)", [login, haslo, imie + " " + nazwisko], function(err, result) {
if (err) throw err;
res.redirect("/panel/nowyAdmin?success");
});
} else {
//login jest zajęty
res.redirect("/panel/nowyAdmin?error");
}
});
});
//usunAdmin
panelRouter.get("/usunAdmin", function(req, res) {
var toReturn = headerHtml("Usuń administratora");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
Usuń administratora
';
toReturn += '';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
panelRouter.post("/usunAdmin", function(req, res) {
//sprawdź czy login jest wolny
var login = req.body.login;
con.query("SELECT * FROM `login` WHERE `login` = ?", [login], function(err, result) {
if (err) throw err;
if (result.length == 1) {
//login jest zajęty
//usuń admina
con.query("UPDATE `login` SET `aktywne` = 0 WHERE `login`.`login` = ?", [login], function(err, result) {
if (err) throw err;
res.redirect("/panel/usunAdmin?success");
});
} else {
//login jest wolny
res.redirect("/panel/usunAdmin?error");
}
});
});
//listaAdminow
panelRouter.get("/listaAdminow", function(req, res) {
var toReturn = headerHtml("Lista administratorów");
toReturn += menuHtml(1);
toReturn += '
';
toReturn += '
Lista administratorów
';
toReturn += '
';
toReturn += '
Imię i nazwisko
Login
';
con.query("SELECT * FROM `login` WHERE `aktywne` = 1", function(err, result) {
if (err) throw err;
result.forEach(function(row) {
toReturn += '
' + row.kto + '
' + row.login + '
';
});
toReturn += '
';
toReturn += '
';
toReturn += footerHtml(1);
res.send(toReturn);
});
});
//uniewaznijTokeny
panelRouter.all("/uniewaznijTokeny", function(req, res) {
//ustaw wszystkie tokeny na aktywne = 0 i przejdź do /panel/logout
con.query("UPDATE `tokeny` SET `aktywny` = 0 WHERE `tokeny`.`aktywny` = 1", function(err, result) {
if (err) throw err;
res.redirect("/panel/logout");
});
});
//to będzie na szybkie informacje jako iframe
panelRouter.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 += '
Ilość wolontariuszy
' + iloscWolontariuszy + '
';
toReturn += '
Ilość rozliczonych
' + iloscRozliczonych + '
';
toReturn += '
Ilość liczących
' + iloscLiczących + '
';
toReturn += '
';
//ostatni rozliczony
toReturn += '
Ostatnio rozliczeni
';
toReturn += '
';
toReturn += '
Wolontariusz
Suma
';
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 += footerHtml(1);
res.send(toReturn);
});
//wyświetl post
panelRouter.post('/wyslijEmaile', function(req, res) {
//pobierz temat i treść emaila, a potem bobierz wszystkie emaile (unikalne) i wyslij
var temat = req.body.temat;
var tresc = req.body.tresc;
tresc = tresc.replace(/`/g, "'");
temat = temat.replace(/`/g, "'");
var emaileWolontariuszy = [];
con.query("SELECT DISTINCT `email` FROM `wolontariusz`", function(err, result) {
if (err) throw err;
result.forEach(function(row) {
emaileWolontariuszy.push(row.email);
});
var ile = massEmail(emaileWolontariuszy, temat, tresc);
var toReturn = headerHtml("Wysyłanie emaili");
toReturn += menuHtml(1);
toReturn += '