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"
|
||||
|
||||
bool decodeCodfis(const QString& input, QString& codfis, QString& anagrafica) {
|
||||
codfis = input.mid(1, 16);
|
||||
bool decodeCodfis(const QString& input, QString& codfis, Anagrafica& anagrafica) {
|
||||
QStringList list = input.split('_');
|
||||
if (list.size() != 4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
codfis = list.at(1);
|
||||
if (codfis.length() != 16) {
|
||||
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;
|
||||
}
|
||||
anagrafica = input.mid(17, end_anagrafica - 17);
|
||||
anagrafica.cognome = anagrafica_list.at(0);
|
||||
anagrafica.nome = anagrafica_list.at(1);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -65,7 +75,7 @@ void MainWindow::on_lineTessera_timer_timeout() {
|
|||
lineTessera_timer.stop();
|
||||
|
||||
QString codfis;
|
||||
QString anagrafica;
|
||||
Anagrafica anagrafica;
|
||||
// Validating input
|
||||
if (decodeCodfis(ui->lineTessera->text(), codfis, anagrafica)) {
|
||||
addVisitor(codfis, anagrafica);
|
||||
|
@ -86,22 +96,23 @@ void MainWindow::on_pushMano_clicked() {
|
|||
wmanualInsert->exec();
|
||||
if (wmanualInsert->validData()) {
|
||||
QString codfis = wmanualInsert->getCodFis();
|
||||
QString anagrafica = QString("%1 %2")
|
||||
.arg(wmanualInsert->getCognome())
|
||||
.arg(wmanualInsert->getNome());
|
||||
Anagrafica anagrafica;
|
||||
anagrafica.cognome = wmanualInsert->getCognome();
|
||||
anagrafica.nome = wmanualInsert->getNome();
|
||||
addVisitor(codfis, anagrafica);
|
||||
}
|
||||
wmanualInsert.release();
|
||||
}
|
||||
|
||||
void MainWindow::addVisitor(QString& codfis, QString& anagrafica) {
|
||||
sqliteInterface.addVisitor(codfis, anagrafica);
|
||||
void MainWindow::addVisitor(QString& codfis, Anagrafica& anagrafica) {
|
||||
sqliteInterface.addVisitor(codfis, QString("%1 %2").arg(anagrafica.cognome).arg(anagrafica.nome));
|
||||
int registrati = ui->lineRegistrati->text().toInt();
|
||||
registrati++;
|
||||
ui->lineRegistrati->setText(QString::number(registrati));
|
||||
ui->statusbar->showMessage("Inserimento effettuato correttamente!", MESSAGE_TIMEOUT);
|
||||
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) {
|
||||
|
@ -119,11 +130,12 @@ void MainWindow::on_smartcard_check() {
|
|||
last_codice_fiscale = 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);
|
||||
} catch (Ex e) {
|
||||
qDebug() << "no valid smartcard";
|
||||
//qDebug() << "[E] exception: " << e;
|
||||
// no valid smartcard
|
||||
}
|
||||
}
|
|
@ -9,8 +9,9 @@
|
|||
|
||||
#include "sqliteInterface.hpp"
|
||||
#include "wManualInsert.hpp"
|
||||
#include "Anagrafica.hpp"
|
||||
|
||||
const int MESSAGE_TIMEOUT = 15e3; // 15 s
|
||||
const int MESSAGE_TIMEOUT = 15e3; // 15 s
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
|
@ -45,7 +46,7 @@ class MainWindow : public QMainWindow {
|
|||
SqliteInterface sqliteInterface;
|
||||
|
||||
void closeEvent(QCloseEvent* event);
|
||||
void addVisitor(QString& codfis, QString& anagrafica);
|
||||
void addVisitor(QString& codfis, Anagrafica& anagrafica);
|
||||
};
|
||||
|
||||
#endif
|
11
README.md
11
README.md
|
@ -1,6 +1,12 @@
|
|||
# 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
|
||||
* sqlite3
|
||||
* [cnsparser](https://git.golem.linux.it/golem/cnsparser)
|
||||
|
@ -8,7 +14,6 @@
|
|||
## Database
|
||||
```
|
||||
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_```
|
||||
|
|
Loading…
Reference in New Issue