Anagrafica.hpp: introduce proper person handler
To show name and surname separately, and preserve some privacy
This commit is contained in:
parent
2038353c46
commit
a84c0f8123
|
@ -0,0 +1,5 @@
|
||||||
|
class Anagrafica {
|
||||||
|
public:
|
||||||
|
QString cognome;
|
||||||
|
QString nome;
|
||||||
|
};
|
|
@ -6,16 +6,26 @@
|
||||||
|
|
||||||
#include "ui_ImmuNoattri.h"
|
#include "ui_ImmuNoattri.h"
|
||||||
|
|
||||||
bool decodeCodfis(const QString& input, QString& codfis, QString& anagrafica) {
|
bool decodeCodfis(const QString& input, QString& codfis, Anagrafica& anagrafica) {
|
||||||
codfis = input.mid(1, 16);
|
QStringList list = input.split('_');
|
||||||
|
if (list.size() != 4) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
codfis = list.at(1);
|
||||||
if (codfis.length() != 16) {
|
if (codfis.length() != 16) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int end_anagrafica = input.indexOf(0x5f);
|
|
||||||
if (end_anagrafica < 0) {
|
QString anagrafica_magnetica = list.at(2);
|
||||||
|
|
||||||
|
QStringList anagrafica_list = anagrafica_magnetica.split(" ");
|
||||||
|
if (anagrafica_list.size() != 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
anagrafica = input.mid(17, end_anagrafica - 17);
|
anagrafica.cognome = anagrafica_list.at(0);
|
||||||
|
anagrafica.nome = anagrafica_list.at(1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +75,7 @@ void MainWindow::on_lineTessera_timer_timeout() {
|
||||||
lineTessera_timer.stop();
|
lineTessera_timer.stop();
|
||||||
|
|
||||||
QString codfis;
|
QString codfis;
|
||||||
QString anagrafica;
|
Anagrafica anagrafica;
|
||||||
// Validating input
|
// Validating input
|
||||||
if (decodeCodfis(ui->lineTessera->text(), codfis, anagrafica)) {
|
if (decodeCodfis(ui->lineTessera->text(), codfis, anagrafica)) {
|
||||||
addVisitor(codfis, anagrafica);
|
addVisitor(codfis, anagrafica);
|
||||||
|
@ -86,22 +96,23 @@ void MainWindow::on_pushMano_clicked() {
|
||||||
wmanualInsert->exec();
|
wmanualInsert->exec();
|
||||||
if (wmanualInsert->validData()) {
|
if (wmanualInsert->validData()) {
|
||||||
QString codfis = wmanualInsert->getCodFis();
|
QString codfis = wmanualInsert->getCodFis();
|
||||||
QString anagrafica = QString("%1 %2")
|
Anagrafica anagrafica;
|
||||||
.arg(wmanualInsert->getCognome())
|
anagrafica.cognome = wmanualInsert->getCognome();
|
||||||
.arg(wmanualInsert->getNome());
|
anagrafica.nome = wmanualInsert->getNome();
|
||||||
addVisitor(codfis, anagrafica);
|
addVisitor(codfis, anagrafica);
|
||||||
}
|
}
|
||||||
wmanualInsert.release();
|
wmanualInsert.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::addVisitor(QString& codfis, QString& anagrafica) {
|
void MainWindow::addVisitor(QString& codfis, Anagrafica& anagrafica) {
|
||||||
sqliteInterface.addVisitor(codfis, anagrafica);
|
sqliteInterface.addVisitor(codfis, QString("%1 %2").arg(anagrafica.cognome).arg(anagrafica.nome));
|
||||||
int registrati = ui->lineRegistrati->text().toInt();
|
int registrati = ui->lineRegistrati->text().toInt();
|
||||||
registrati++;
|
registrati++;
|
||||||
ui->lineRegistrati->setText(QString::number(registrati));
|
ui->lineRegistrati->setText(QString::number(registrati));
|
||||||
ui->statusbar->showMessage("Inserimento effettuato correttamente!", MESSAGE_TIMEOUT);
|
ui->statusbar->showMessage("Inserimento effettuato correttamente!", MESSAGE_TIMEOUT);
|
||||||
ui->statusbar->setStyleSheet("background-color: green;");
|
ui->statusbar->setStyleSheet("background-color: green;");
|
||||||
ui->labelNome->setText(QString("Ciao %1!").arg(anagrafica));
|
ui->labelNome->setText(QString("Ciao %1!").arg(anagrafica.nome
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::closeEvent(QCloseEvent* event) {
|
void MainWindow::closeEvent(QCloseEvent* event) {
|
||||||
|
@ -119,11 +130,12 @@ void MainWindow::on_smartcard_check() {
|
||||||
last_codice_fiscale = cns.getCodiceFiscale();
|
last_codice_fiscale = cns.getCodiceFiscale();
|
||||||
|
|
||||||
QString codfis = cns.getCodiceFiscale();
|
QString codfis = cns.getCodiceFiscale();
|
||||||
QString anagrafica = QString("%1 %2").arg(cns.getCognome()).arg(cns.getNome());
|
Anagrafica anagrafica;
|
||||||
|
anagrafica.cognome = cns.getCognome();
|
||||||
|
anagrafica.nome = cns.getNome();
|
||||||
|
|
||||||
addVisitor(codfis, anagrafica);
|
addVisitor(codfis, anagrafica);
|
||||||
} catch (Ex e) {
|
} catch (Ex e) {
|
||||||
qDebug() << "no valid smartcard";
|
// no valid smartcard
|
||||||
//qDebug() << "[E] exception: " << e;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,8 +9,9 @@
|
||||||
|
|
||||||
#include "sqliteInterface.hpp"
|
#include "sqliteInterface.hpp"
|
||||||
#include "wManualInsert.hpp"
|
#include "wManualInsert.hpp"
|
||||||
|
#include "Anagrafica.hpp"
|
||||||
|
|
||||||
const int MESSAGE_TIMEOUT = 15e3; // 15 s
|
const int MESSAGE_TIMEOUT = 15e3; // 15 s
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
|
@ -45,7 +46,7 @@ class MainWindow : public QMainWindow {
|
||||||
SqliteInterface sqliteInterface;
|
SqliteInterface sqliteInterface;
|
||||||
|
|
||||||
void closeEvent(QCloseEvent* event);
|
void closeEvent(QCloseEvent* event);
|
||||||
void addVisitor(QString& codfis, QString& anagrafica);
|
void addVisitor(QString& codfis, Anagrafica& anagrafica);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
11
README.md
11
README.md
|
@ -1,6 +1,12 @@
|
||||||
# ImmuNoattri
|
# ImmuNoattri
|
||||||
|
A terrible access monitor software based based on EU healthcare smartcard.
|
||||||
|
|
||||||
## Requisiti
|
## How it works
|
||||||
|
To record close contacts in our [Officina Informatica](https://wiki.golem.linux.it/Officina_Informatica), as initially mandated by regional law 2021-05-27/60 [Regione Toscana](https://www.regione.toscana.it/), in order to prevent diffusion of COVID-19, just remember to swipe your healthcare card in Lampredotto's totem, as soon as you enter the building.
|
||||||
|
Your name will be recorded, in order to inform health authorities in case of COVID-19 contact.
|
||||||
|
Your name will also be automatically deleted after 15 days.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
* libqt5sql5-sqlite
|
* libqt5sql5-sqlite
|
||||||
* sqlite3
|
* sqlite3
|
||||||
* [cnsparser](https://git.golem.linux.it/golem/cnsparser)
|
* [cnsparser](https://git.golem.linux.it/golem/cnsparser)
|
||||||
|
@ -8,7 +14,6 @@
|
||||||
## Database
|
## Database
|
||||||
```
|
```
|
||||||
CREATE TABLE presenze (ID INTEGER PRIMARY KEY AUTOINCREMENT, checkin TEXT, codfis TEXT, anagrafica TEXT);
|
CREATE TABLE presenze (ID INTEGER PRIMARY KEY AUTOINCREMENT, checkin TEXT, codfis TEXT, anagrafica TEXT);
|
||||||
CREATE TABLE sqlite_sequence(name,seq);
|
|
||||||
```
|
```
|
||||||
## Formato tessera
|
## Magnetic card format
|
||||||
```_CGNNMM00A41D403C_COGNOME NOME1 NOME2_```
|
```_CGNNMM00A41D403C_COGNOME NOME1 NOME2_```
|
||||||
|
|
Loading…
Reference in New Issue