Anagrafica.hpp: introduce proper person handler

To show name and surname separately, and preserve some privacy
This commit is contained in:
giomba 2022-01-01 12:47:54 +01:00
parent 2038353c46
commit a84c0f8123
4 changed files with 43 additions and 20 deletions

5
Anagrafica.hpp Normal file
View File

@ -0,0 +1,5 @@
class Anagrafica {
public:
QString cognome;
QString nome;
};

View File

@ -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
}
}

View File

@ -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

View File

@ -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_```