WOSP-APP/serwer/app/func.js

504 lines
24 KiB
JavaScript
Raw Permalink Normal View History

2025-01-01 17:30:11 +00:00
function headerHtml(tytul = 'WOŚP ELEKTRONIK') {
return '<!DOCTYPE html><html lang="pl"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>' + tytul +'</title><link rel="stylesheet" href="/style.css"></head><body><div id="container">';
}
function menuHtml($login = 0) {
var toReturn = '<div class="menu">';
toReturn += '<a href="#"><img src="'+ process.env.LOGO +'" height="50px"></a>';
if ($login == 1) {
toReturn += '<a href="/panel/home">Panel</a>';
toReturn += '<a href="/panel/rozlicz">Rozlicz</a>';
toReturn += '<a href="/panel/rozliczenia">Rozliczenia</a>';
toReturn += '<a href="/panel/potwierdz">Potwierdź rozliczenie</a>';
toReturn += '<a href="/panel/osobyLiczace">Osoby liczące</a>';
toReturn += '<a href="/panel/listaWolontariuszy">Lista wolontariuszy</a>';
toReturn += '<a href="/panel/druki">Druki</a>';
toReturn += '<a href="/panel/statystyki">Statystyki</a>';
toReturn += '<a href="/panel/logout">Wyloguj</a>';
} else if ($login == 2) {
//wróć js
toReturn += '<a onclick="wroc()">Wróć</a>';
toReturn += '<a href="/statystyki2">Statystyki</a>';
toReturn += '<a href="/login">Zaloguj</a>';
}
else if ($login == 3) {
toReturn += '<a href="/panel">Rozlicz wolontariusza</a>';
toReturn += '<a href="/statystyki2">Statystyki</a>';
toReturn += '<a href="/loginliczacy">Zaloguj</a>';
}
else if ($login == 4) {
toReturn += '<a href="/liczacy">Panel</a>';
toReturn += '<a href="/liczacy/rozlicz">Rozlicz</a>';
toReturn += '<a href="/liczacy/statystyki2">Statystyki</a>';
toReturn += '<a href="/liczacy/wyloguj">Wyloguj</a>';
} else {
toReturn += '<a href="/statystyki2">Statystyki</a>';
toReturn += '<a href="/login">Zaloguj do panelu</a>';
toReturn += '<a href="/loginliczacy">Zaloguj osoba licząca</a>';
2025-01-01 17:30:11 +00:00
}
return toReturn + '</div>';
}
2025-01-02 16:07:48 +00:00
function footerHtml(login = 0, email = 0) {
2025-01-01 17:30:11 +00:00
var toReturn = '';
if(login == 1)
{
toReturn = '<div id="mySidenav" class="sidenav">';
toReturn += '<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>';
toReturn += '<iframe src="/panel/szybkieInfo"></iframe>';
toReturn += '</div>';
toReturn += '<a><span onclick="openNav()" class="menuOpen">|||</span></a>';
toReturn += '<script>function openNav() {document.getElementById("mySidenav").style.width = "300px";}</script>';
toReturn += '<script>function closeNav() {document.getElementById("mySidenav").style.width = "0";}</script>';
}
if(login == 2)
{
toReturn = '<div id="mySidenav" class="sidenav">';
toReturn += '<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>';
toReturn += '<iframe src="/liczacy/szybkieInfo"></iframe>';
toReturn += '</div>';
toReturn += '<a><span onclick="openNav()" class="menuOpen">|||</span></a>';
toReturn += '<script>function openNav() {document.getElementById("mySidenav").style.width = "300px";}</script>';
toReturn += '<script>function closeNav() {document.getElementById("mySidenav").style.width = "0";}</script>';
}
2025-01-02 16:07:48 +00:00
if(login != 0)
toReturn += '<script>function wroc() {history.back();}</script>';
2025-01-02 16:12:32 +00:00
toReturn += '<footer style="text-align: center">';
2025-01-02 16:07:48 +00:00
info = email != 1 ? "Jeżeli chcesz wesprzeć autora, możesz to wykonać na <a href='https://patronite.pl/kry008' target='_blank'>Patronite</a>" : '';
2025-01-01 17:30:11 +00:00
if (new Date().getFullYear() > 2023)
toReturn += '<span>Stworzone przez <a href="https://kry008.xyz">KRY008</a> dla sztabu '+ process.env.SZTAB + ' &copy; 2023-' + new Date().getFullYear() + '';
else
toReturn += '<span>Stworzone przez <a href="https://kry008.xyz">KRY008</a> dla sztabu '+ process.env.SZTAB + ' &copy; 2023';
2025-01-02 16:07:48 +00:00
return toReturn + "<br>Wersja programu: " + process.env.VERSION + '<br>'+ info +'</span></footer></div></body></html>';
2025-01-01 17:30:11 +00:00
}
function makeid(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
let counter = 0;
while (counter < length) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
counter += 1;
}
return result;
}
//sprawdzanie kiedy PESEL ma 18 lat, czy minęło 16 lat od daty urodzenia, data sprawdzenia to 28 stycznia 2024
function checkPesel(pesel) {
//pobierz datę urodzenia
// Wycinamy daty z numeru
var rok = parseInt(pesel.substring(0, 2), 10);
var miesiac = parseInt(pesel.substring(2, 4), 10) - 1;
var dzien = parseInt(pesel.substring(4, 6), 10);
// Pesel został wprowadzony w 20 wieku, ale zawiera modyfikatory na przysłość
// Miesiąc zawiera dodatkowe liczby dla dat z przyszłości.
if (miesiac > 80) {
rok = rok + 1800;
miesiac = miesiac - 80;
} else if (miesiac >= 60) {
rok = rok + 2200;
miesiac = miesiac - 60;
} else if (miesiac >= 40) {
rok = rok + 2100;
miesiac = miesiac - 40;
} else if (miesiac >= 20) {
rok = rok + 2000;
miesiac = miesiac - 20;
} else {
rok += 1900;
}
if( miesiac >=0 && miesiac < 12 && dzien > 0 && dzien < 32 ) {
// Daty sa ok. Teraz ustawiamy.
var urodzony = new Date();
urodzony.setFullYear(rok, miesiac, dzien);
} else {
var urodzony = false;
}
//sprawdź czy minęło 18 lat
var today = new Date(process.env.DATAFINALU);
var diff = today - urodzony;
var age = Math.floor(diff/31557600000);
if(age >= 16)
return true;
else
return false;
}
function loger(fs, text, type = 'info') {
if(process.env.LOGS == '1')
{
var date = new Date();
var time = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
console.log('[' + time + ']\t' + type + ': ' + text);
if(process.platform == 'win32')
fs.appendFileSync('logs\\' + date.getDate() + '-' + (date.getMonth() + 1) +'log.txt', '[' + time + ']\t' + type + ': ' + text + '\r\n');
else
fs.appendFileSync('logs/' + date.getDate() + '-' + (date.getMonth() + 1) +'log.txt', '[' + time + ']\t' + type + ': ' + text + '\n');
}
}
function peselToShow(pesel, nrId) {
//weź pierwsze 3 znaki nrId
nrId = nrId.substring(0, 3);
nrId = parseInt(nrId) % 9;
if (nrId == 0)
nrId = 4;
//pokaż co nrId znak, resztę zastąp x
var result = '';
var counter = 0;
while (counter < pesel.length) {
if (counter % nrId == 0)
result += pesel[counter] + '&nbsp;';
else
result += '█&nbsp;';
counter += 1;
}
return result;
}
//telefon, zwraca telefon w formacje +48XXXXXXXXX, możliwe podanie +48XXXXXXXXX/XXXXXXXXX/48XXXXXXXXX/XXX-XXX-XXX/XXX XXX XXX
function telefon(telefon, withLink = 0) {
telefon = telefon.replace(/\s/g, '');
telefon = telefon.replace(/-/g, '');
telefon = telefon.replace(/\//g, '');
if (telefon.substring(0, 1) == '+')
telefon = telefon.substring(1, telefon.length);
if (telefon.substring(0, 2) == '48')
telefon = telefon.substring(2, telefon.length);
if (telefon.substring(0, 3) == '0048')
telefon = telefon.substring(3, telefon.length);
if (telefon.length == 9)
telefon = '48' + telefon;
if (telefon.length == 11)
telefon = telefon.substring(2, telefon.length);
if (telefon.length == 12)
telefon = telefon.substring(3, telefon.length);
if (telefon.length == 0)
telefon = '000000000';
if(withLink == 1)
return '<a href="tel:' + telefon + '">' + telefon + '</a>';
else
return telefon;
}
//random color
function randomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
var counter = 0;
while (counter < 6) {
color += letters[Math.floor(Math.random() * 16)];
counter += 1;
}
return color;
}
function sendToDiscord(imie, nazwisko, suma, nickDC)
{
const { Webhook, MessageBuilder } = require('discord-webhook-node');
const hook = new Webhook(process.env.DISCORDWEBHOOK);
if(nickDC == 'BRAK')
{
const embed = new MessageBuilder()
.setTitle(imie + ' ' + nazwisko)
.setColor(randomColor())
.setAuthor("Bot by KRY008", "https://raw.githubusercontent.com/kry008/kry008.xyz/main/images/logo.webp", "https://kry008.xyz")
.setDescription('Dorzuca się kwotą: ' + suma + ' zł')
.setFooter('Rozliczenie', process.env.LOGO)
.setTimestamp();
//console.log(embed);
hook.send(embed);
}
else
{
//mention user nickDC
const embed = new MessageBuilder()
.setTitle(imie + ' ' + nazwisko)
.setColor(randomColor())
.setAuthor("Bot by KRY008", "https://raw.githubusercontent.com/kry008/kry008.xyz/main/images/logo.webp", "https://kry008.xyz")
.setDescription('Dorzuca się kwotą: ' + suma + ' zł')
.setFooter('Rozliczenie' + nickDC, process.env.LOGO)
.setTimestamp();
//console.log(embed);
hook.send(embed);
}
}
function sendEmail(imie, nazwisko, suma, email)
{
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: process.env.SMTPHOST,
port: process.env.SMTPPORT,
secure: true,
auth: {
user: process.env.SMTPLOGIN,
pass: process.env.SMTPPASS
}
});
const mailOptions = {
from: process.env.SMTPLOGIN,
to: email,
subject: 'Twoje rozliczenie w ' + process.env.NRFINALU + '. Finale WOŚP',
2025-01-02 16:07:48 +00:00
html: '<img src="' + process.env.LOGO + '" height="150px" style="display: block; margin-left: auto; margin-right: auto;"><h1 style="text-align: center;">Rozliczenie</h1><h2 style="text-align: center;">Witaj ' + imie + ' ' + nazwisko + ',<br>Twoja suma z rozliczenia to: ' + suma + ' zł.</h2><p style="text-align: center;">Dziękujemy za udział w WOŚP!</p><p style="text-align: center;">Pozdrawiamy,<br>' + process.env.SZTAB + '</p>' + footerHtml(0,1)
2025-01-01 17:30:11 +00:00
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
loger(fs, 'Błąd wysyłania maila do ' + imie + ' ' + nazwisko + ' (' + email + ')', 'error');
} else {
console.log('Email został wysłany: ' + info.response);
loger(fs, 'Email został wysłany do ' + imie + ' ' + nazwisko + ' (' + email + ') ' + info.response, 'info');
}
});
}
function checkSendEmail(email)
{
const nodemailer = require('nodemailer');
2025-01-01 19:27:27 +00:00
const fs = require('fs');
2025-01-01 17:30:11 +00:00
const transporter = nodemailer.createTransport({
host: process.env.SMTPHOST,
port: process.env.SMTPPORT,
secure: true,
auth: {
user: process.env.SMTPLOGIN,
pass: process.env.SMTPPASS
}
});
const mailOptions = {
from: process.env.SMTPLOGIN,
to: email,
subject: 'Twoje rozliczenie w ' + process.env.NRFINALU + '. Finale WOŚP',
2025-01-02 16:07:48 +00:00
html: '<img src="' + process.env.LOGO + '" height="150px" style="display: block; margin-left: auto; margin-right: auto;"><h1 style="text-align: center;">Rozliczenie</h1><h2 style="text-align: center;">Witaj Test,<br>Twoja suma z rozliczenia to: 0 zł.</h2><p style="text-align: center;">Dziękujemy za udział w WOŚP!</p><p style="text-align: center;">Pozdrawiamy,<br>' + process.env.SZTAB + '</p>' + footerHtml(0,1)
2025-01-01 17:30:11 +00:00
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
loger(fs, 'Błąd wysyłania maila', 'error');
return 1;
} else {
console.log('Email został wysłany: ' + info.response);
loger(fs, 'Email został wysłany do', 'info');
return 0;
}
});
}
function baza()
{
var toSend = `CREATE TABLE IF NOT EXISTS \`liczacy\` (
\`id\` int(11) NOT NULL AUTO_INCREMENT,
\`imie\` varchar(255) NOT NULL,
\`nazwisko\` varchar(255) NOT NULL,
\`aktywne\` tinyint(1) NOT NULL DEFAULT 1,
\`qr\` varchar(25) NOT NULL,
PRIMARY KEY (\`id\`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS \`login\` (
\`id\` int(11) NOT NULL AUTO_INCREMENT,
\`login\` text NOT NULL,
\`haslo\` text NOT NULL,
\`kto\` text NOT NULL,
\`aktywne\` int(11) NOT NULL,
PRIMARY KEY (\`id\`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS \`rozliczenie\` (
\`id\` int(11) NOT NULL AUTO_INCREMENT,
\`wolontariuszID\` int(11) NOT NULL,
\`czasRozliczenia\` timestamp NOT NULL DEFAULT current_timestamp(),
\`terminal\` tinyint(1) NOT NULL DEFAULT 0,
\`sumaZTerminala\` float DEFAULT NULL,
\`1gr\` int(11) DEFAULT NULL,
\`2gr\` int(11) DEFAULT NULL,
\`5gr\` int(11) DEFAULT NULL,
\`10gr\` int(11) DEFAULT NULL,
\`20gr\` int(11) DEFAULT NULL,
\`50gr\` int(11) DEFAULT NULL,
\`1zl\` int(11) DEFAULT NULL,
\`2zl\` int(11) DEFAULT NULL,
\`5zl\` int(11) DEFAULT NULL,
\`10zl\` int(11) DEFAULT NULL,
\`20zl\` int(11) DEFAULT NULL,
\`50zl\` int(11) DEFAULT NULL,
\`100zl\` int(11) DEFAULT NULL,
\`200zl\` int(11) DEFAULT NULL,
\`500zl\` int(11) DEFAULT NULL,
\`walutaObca\` text NOT NULL,
\`daryInne\` text DEFAULT NULL,
\`uwagi\` text DEFAULT NULL,
\`liczacy1\` int(11) NOT NULL,
\`liczacy2\` int(11) NOT NULL,
\`liczacy3\` int(11) DEFAULT NULL,
\`sala\` varchar(10) NOT NULL,
\`weryfikowal\` int(11) NOT NULL,
\`wpisaneDoBSS\` tinyint(1) NOT NULL DEFAULT 0,
\`ostatniaZmiana\` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
\`aktywne\` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (\`id\`),
KEY \`wolontariuszID\` (\`wolontariuszID\`),
KEY \`liczacy1\` (\`liczacy1\`),
KEY \`liczacy2\` (\`liczacy2\`),
KEY \`liczacy3\` (\`liczacy3\`),
KEY \`weryfikowal\` (\`weryfikowal\`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS \`sumaPrzeliczona\` (
\`idLiczacego\` int(11)
,\`imie\` varchar(255)
,\`nazwisko\` varchar(255)
,\`sumaPrzeliczona\` decimal(65,2)
);
CREATE TABLE IF NOT EXISTS \`sumaPrzeliczona1\` (
\`idLiczacego\` int(11)
,\`imie\` varchar(255)
,\`nazwisko\` varchar(255)
,\`sumaPrzeliczona\` decimal(49,2)
);
CREATE TABLE IF NOT EXISTS \`sumaPrzeliczona2\` (
\`idLiczacego\` int(11)
,\`imie\` varchar(255)
,\`nazwisko\` varchar(255)
,\`sumaPrzeliczona\` decimal(49,2)
);
CREATE TABLE IF NOT EXISTS \`sumaPrzeliczona3\` (
\`idLiczacego\` int(11)
,\`imie\` varchar(255)
,\`nazwisko\` varchar(255)
,\`sumaPrzeliczona\` decimal(49,2)
);
CREATE TABLE IF NOT EXISTS \`SumaZebranaPrzezWolontariuszy\` (
\`numerIdentyfikatora\` varchar(8)
,\`imie\` varchar(255)
,\`nazwisko\` varchar(255)
,\`suma\` decimal(49,2)
);
CREATE TABLE IF NOT EXISTS \`suma_przeliczona2\` (
\`ID_Liczącego\` int(11)
,\`Imię\` varchar(255)
,\`Nazwisko\` varchar(255)
,\`Suma_Przeliczona\` decimal(49,2)
);
CREATE TABLE IF NOT EXISTS \`sumy\` (
\`wolontariuszID\` int(11)
,\`suma\` decimal(49,2)
);
CREATE TABLE IF NOT EXISTS \`tokeny\` (
\`id\` int(11) NOT NULL AUTO_INCREMENT,
\`token\` text NOT NULL,
\`czasAktywacji\` timestamp NOT NULL DEFAULT current_timestamp(),
\`typ\` int(11) NOT NULL DEFAULT 1,
\`userId\` int(11) NOT NULL,
\`aktywny\` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (\`id\`),
KEY \`userId\` (\`userId\`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS \`tokenyLiczacy\` (
\`id\` int(11) NOT NULL AUTO_INCREMENT,
\`token\` varchar(255) NOT NULL,
\`typ\` int(11) NOT NULL,
\`userId\` int(11) NOT NULL,
\`czasAktywacji\` timestamp NOT NULL DEFAULT current_timestamp(),
\`aktywny\` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (\`id\`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS \`wolontariusz\` (
\`id\` int(11) NOT NULL AUTO_INCREMENT,
\`numerIdentyfikatora\` varchar(8) NOT NULL,
\`imie\` varchar(255) NOT NULL,
\`nazwisko\` varchar(255) NOT NULL,
\`discord\` text NOT NULL,
\`email\` text NOT NULL,
\`telefon\` varchar(12) NOT NULL,
\`pesel\` varchar(11) NOT NULL,
\`rodzic\` varchar(255) NOT NULL DEFAULT 'BRAK',
\`terminal\` tinyint(1) NOT NULL DEFAULT 0,
\`ostatniaZmiana\` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
\`aktywny\` tinyint(4) NOT NULL DEFAULT 1,
\`zaznacz\` int(11) NOT NULL DEFAULT 0,
2025-01-03 07:43:27 +00:00
\`puszkaWydana\` tinyint(1) NOT NULL DEFAULT 0,
2025-01-01 17:30:11 +00:00
PRIMARY KEY (\`id\`)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS \`sumaPrzeliczona\`;
CREATE OR REPLACE VIEW \`sumaPrzeliczona\` AS SELECT \`combinedData\`.\`idLiczacego\` AS \`idLiczacego\`, \`combinedData\`.\`imie\` AS \`imie\`, \`combinedData\`.\`nazwisko\` AS \`nazwisko\`, sum(\`combinedData\`.\`sumaPrzeliczona\`) AS \`sumaPrzeliczona\` FROM (select \`r\`.\`liczacy1\` AS \`idLiczacego\`,\`l\`.\`imie\` AS \`imie\`,\`l\`.\`nazwisko\` AS \`nazwisko\`,sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`sumaPrzeliczona\` from (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(\`r\`.\`liczacy1\` = \`l\`.\`id\`)) group by \`r\`.\`liczacy1\` union all select \`r\`.\`liczacy2\` AS \`idLiczacego\`,\`l\`.\`imie\` AS \`imie\`,\`l\`.\`nazwisko\` AS \`nazwisko\`,sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`sumaPrzeliczona\` from (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(\`r\`.\`liczacy2\` = \`l\`.\`id\`)) group by \`r\`.\`liczacy2\` union all select \`r\`.\`liczacy3\` AS \`idLiczacego\`,\`l\`.\`imie\` AS \`imie\`,\`l\`.\`nazwisko\` AS \`nazwisko\`,sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`sumaPrzeliczona\` from (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(\`r\`.\`liczacy3\` = \`l\`.\`id\`)) group by \`r\`.\`liczacy3\`) AS \`combinedData\` GROUP BY \`combinedData\`.\`idLiczacego\`, \`combinedData\`.\`imie\`, \`combinedData\`.\`nazwisko\` ;
DROP TABLE IF EXISTS \`sumaPrzeliczona1\`;
CREATE OR REPLACE VIEW \`sumaPrzeliczona1\` AS SELECT \`r\`.\`liczacy1\` AS \`idLiczacego\`, \`l\`.\`imie\` AS \`imie\`, \`l\`.\`nazwisko\` AS \`nazwisko\`, sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`sumaPrzeliczona\` FROM (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(\`r\`.\`liczacy1\` = \`l\`.\`id\`)) GROUP BY \`r\`.\`liczacy1\` ;
DROP TABLE IF EXISTS \`sumaPrzeliczona2\`;
CREATE OR REPLACE VIEW \`sumaPrzeliczona2\` AS SELECT \`r\`.\`liczacy2\` AS \`idLiczacego\`, \`l\`.\`imie\` AS \`imie\`, \`l\`.\`nazwisko\` AS \`nazwisko\`, sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`sumaPrzeliczona\` FROM (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(\`r\`.\`liczacy2\` = \`l\`.\`id\`)) GROUP BY \`r\`.\`liczacy2\` ;
DROP TABLE IF EXISTS \`sumaPrzeliczona3\`;
CREATE OR REPLACE VIEW \`sumaPrzeliczona3\` AS SELECT \`r\`.\`liczacy3\` AS \`idLiczacego\`, \`l\`.\`imie\` AS \`imie\`, \`l\`.\`nazwisko\` AS \`nazwisko\`, sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`sumaPrzeliczona\` FROM (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(\`r\`.\`liczacy3\` = \`l\`.\`id\`)) GROUP BY \`r\`.\`liczacy3\` ;
DROP TABLE IF EXISTS \`SumaZebranaPrzezWolontariuszy\`;
CREATE OR REPLACE VIEW \`SumaZebranaPrzezWolontariuszy\` AS SELECT \`wolontariusz\`.\`numerIdentyfikatora\` AS \`numerIdentyfikatora\`, \`wolontariusz\`.\`imie\` AS \`imie\`, \`wolontariusz\`.\`nazwisko\` AS \`nazwisko\`, \`sumy\`.\`suma\` AS \`suma\` FROM (\`wolontariusz\` join \`sumy\`) WHERE \`wolontariusz\`.\`id\` = \`sumy\`.\`wolontariuszID\` ORDER BY \`wolontariusz\`.\`numerIdentyfikatora\` ASC ;
DROP TABLE IF EXISTS \`suma_przeliczona2\`;
CREATE OR REPLACE VIEW \`suma_przeliczona2\` AS SELECT coalesce(\`r\`.\`liczacy1\`,\`r\`.\`liczacy2\`,\`r\`.\`liczacy3\`) AS \`ID_Liczącego\`, \`l\`.\`imie\` AS \`Imię\`, \`l\`.\`nazwisko\` AS \`Nazwisko\`, sum(\`r\`.\`1gr\` * 0.01 + \`r\`.\`2gr\` * 0.02 + \`r\`.\`5gr\` * 0.05 + \`r\`.\`10gr\` * 0.1 + \`r\`.\`20gr\` * 0.2 + \`r\`.\`50gr\` * 0.5 + \`r\`.\`1zl\` * 1 + \`r\`.\`2zl\` * 2 + \`r\`.\`5zl\` * 5 + \`r\`.\`10zl\` * 10 + \`r\`.\`20zl\` * 20 + \`r\`.\`50zl\` * 50 + \`r\`.\`100zl\` * 100 + \`r\`.\`200zl\` * 200 + \`r\`.\`500zl\` * 500) AS \`Suma_Przeliczona\` FROM (\`rozliczenie\` \`r\` join \`liczacy\` \`l\` on(coalesce(\`r\`.\`liczacy1\`,\`r\`.\`liczacy2\`,\`r\`.\`liczacy3\`) = \`l\`.\`id\`)) GROUP BY coalesce(\`r\`.\`liczacy1\`,\`r\`.\`liczacy2\`,\`r\`.\`liczacy3\`), \`l\`.\`imie\`, \`l\`.\`nazwisko\` ;
DROP TABLE IF EXISTS \`sumy\`;
CREATE OR REPLACE VIEW \`sumy\` AS SELECT \`rozliczenie\`.\`wolontariuszID\` AS \`wolontariuszID\`, sum(\`rozliczenie\`.\`1gr\` * 0.01 + \`rozliczenie\`.\`2gr\` * 0.02 + \`rozliczenie\`.\`5gr\` * 0.05 + \`rozliczenie\`.\`10gr\` * 0.1 + \`rozliczenie\`.\`20gr\` * 0.2 + \`rozliczenie\`.\`50gr\` * 0.5 + \`rozliczenie\`.\`1zl\` + \`rozliczenie\`.\`2zl\` * 2 + \`rozliczenie\`.\`5zl\` * 5 + \`rozliczenie\`.\`10zl\` * 10 + \`rozliczenie\`.\`20zl\` * 20 + \`rozliczenie\`.\`50zl\` * 50 + \`rozliczenie\`.\`100zl\` * 100 + \`rozliczenie\`.\`200zl\` * 200 + \`rozliczenie\`.\`500zl\` * 500) AS \`suma\` FROM \`rozliczenie\` GROUP BY \`rozliczenie\`.\`wolontariuszID\` ;
`;
return toSend;
}
2025-01-03 08:40:01 +00:00
function massEmail(emaile = [], tytul = "Powiadomienie od sztabu", tresc = "Brak treści wiadomości")
2025-01-03 08:04:56 +00:00
{
2025-01-03 08:40:01 +00:00
console.log('Wysyłanie maili do ' + emaile.length + ' osób');
2025-01-03 08:04:56 +00:00
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: process.env.SMTPHOST,
port: process.env.SMTPPORT,
secure: true,
auth: {
user: process.env.SMTPLOGIN,
pass: process.env.SMTPPASS
}
});
2025-01-03 08:40:01 +00:00
emaile.forEach(element => {
2025-01-03 08:04:56 +00:00
const mailOptions = {
from: process.env.SMTPLOGIN,
bcc: element,
2025-01-03 08:40:01 +00:00
subject: tytul,
html: '<img src="' + process.env.LOGO + '" height="150px" style="display: block; margin-left: auto; margin-right: auto;"><h1 style="text-align: center;">' + $tytul + '</h1><br><div id="main">' + tresc + '</div><p style="text-align: center;">Pozdrawiamy,<br>' + process.env.SZTAB + '</p>' + footerHtml(0,1)
2025-01-03 08:04:56 +00:00
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
loger(fs, 'Błąd wysyłania maila do ' + element, 'error');
} else {
console.log('Email został wysłany: ' + info.response);
loger(fs, 'Email został wysłany do ' + element + ' ' + info.response, 'info');
}
});
});
2025-01-03 08:40:01 +00:00
return emaile.length;
2025-01-03 08:04:56 +00:00
}
2025-01-01 17:30:11 +00:00
exports.headerHtml = headerHtml;
exports.menuHtml = menuHtml;
exports.footerHtml = footerHtml;
exports.makeid = makeid;
exports.checkPesel = checkPesel;
exports.loger = loger;
exports.peselToShow = peselToShow;
exports.telefon = telefon;
exports.sendToDiscord = sendToDiscord;
exports.sendEmail = sendEmail;
exports.checkSendEmail = checkSendEmail;
2025-01-03 08:04:56 +00:00
exports.baza = baza;
exports.massEmail = massEmail;