|
@@ -22,6 +22,7 @@
|
|
#include <QSqlError>
|
|
#include <QSqlError>
|
|
#include <QSqlQuery>
|
|
#include <QSqlQuery>
|
|
#include "calc.h"
|
|
#include "calc.h"
|
|
|
|
+#include "dbpilots.h"
|
|
#include <chrono>
|
|
#include <chrono>
|
|
#include <QRandomGenerator>
|
|
#include <QRandomGenerator>
|
|
#include <QStandardPaths>
|
|
#include <QStandardPaths>
|
|
@@ -95,268 +96,7 @@ public:
|
|
* QVariant::toString() and QVariant::toInt() to convert variants to QString and int.
|
|
* QVariant::toString() and QVariant::toInt() to convert variants to QString and int.
|
|
*/
|
|
*/
|
|
}
|
|
}
|
|
- /*
|
|
|
|
- * Pilots Database Related Functions
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
- /*!
|
|
|
|
- * \brief RetreivePilotNameFromID Looks up pilot ID in database
|
|
|
|
- * \param pilotID pilot_id in database
|
|
|
|
- * \return Pilot Name
|
|
|
|
- */
|
|
|
|
- static QString RetreivePilotNameFromID(QString pilotID)
|
|
|
|
- {
|
|
|
|
- QString pilotName("");
|
|
|
|
- if (pilotID == "1")
|
|
|
|
- {
|
|
|
|
- pilotName = "self";
|
|
|
|
- return pilotName;
|
|
|
|
- }
|
|
|
|
- QSqlQuery query;
|
|
|
|
- query.prepare("SELECT piclastname, picfirstname, alias FROM pilots WHERE pilot_id == ?");
|
|
|
|
- query.addBindValue(pilotID.toInt());
|
|
|
|
- query.exec();
|
|
|
|
-
|
|
|
|
- while (query.next()) {
|
|
|
|
- pilotName.append(query.value(0).toString());
|
|
|
|
- pilotName.append(", ");
|
|
|
|
- pilotName.append(query.value(1).toString());//.left(1));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(pilotName.length() == 0)
|
|
|
|
- {
|
|
|
|
- qDebug() << ("No Pilot with this ID found");
|
|
|
|
- }
|
|
|
|
- return pilotName;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static QString RetreivePilotIdFromString(QString lastname, QString firstname)
|
|
|
|
- {
|
|
|
|
- QSqlQuery query;
|
|
|
|
- query.prepare("SELECT pilot_id from pilots "
|
|
|
|
- "WHERE piclastname = ? AND picfirstname LIKE ?");
|
|
|
|
- query.addBindValue(lastname);
|
|
|
|
- firstname.prepend("%"); firstname.append("%");
|
|
|
|
- query.addBindValue(firstname);
|
|
|
|
- query.exec();
|
|
|
|
-
|
|
|
|
- QString id;
|
|
|
|
- if(query.first()){id.append(query.value(0).toString());}
|
|
|
|
-
|
|
|
|
- return id;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static QStringList RetreivePilotNameFromString(QString searchstring)
|
|
|
|
- /* Searches the pilot Name in the Database and returns the name as a vector of results
|
|
|
|
- * unless the pilot in command is the logbook owner.
|
|
|
|
- */
|
|
|
|
- {
|
|
|
|
- QString firstname = searchstring; //To Do: Two control paths, one for single word, query as before with only searchstring
|
|
|
|
- QString lastname = searchstring; // second control path with comma, lastname like AND firstname like
|
|
|
|
- if(searchstring.contains(QLatin1Char(',')))
|
|
|
|
- {
|
|
|
|
- QStringList namelist = searchstring.split(QLatin1Char(','));
|
|
|
|
- QString lastname = namelist[0].trimmed();
|
|
|
|
- lastname = lastname.toLower();
|
|
|
|
- lastname[0] = lastname[0].toUpper();
|
|
|
|
- lastname.prepend("%"), lastname.append("%");
|
|
|
|
-
|
|
|
|
- QString firstname = namelist[1].trimmed();
|
|
|
|
- if(firstname.length()>1)
|
|
|
|
- {
|
|
|
|
- firstname = firstname.toLower();
|
|
|
|
- firstname[0] = firstname[0].toUpper();
|
|
|
|
- firstname.prepend("%"), firstname.append("%");
|
|
|
|
- }
|
|
|
|
- qDebug() << "db::RetreivePilotNameFromString: first last after comma";
|
|
|
|
- qDebug() << firstname << lastname;
|
|
|
|
- }
|
|
|
|
- QSqlQuery query;
|
|
|
|
- query.prepare("SELECT piclastname, picfirstname, alias "
|
|
|
|
- "FROM pilots WHERE "
|
|
|
|
- "picfirstname LIKE ? OR piclastname LIKE ? OR alias LIKE ?");
|
|
|
|
- searchstring.prepend("%");
|
|
|
|
- searchstring.append("%");
|
|
|
|
- query.addBindValue(firstname);
|
|
|
|
- query.addBindValue(lastname);
|
|
|
|
- query.addBindValue(searchstring);
|
|
|
|
- query.exec();
|
|
|
|
-
|
|
|
|
- QStringList result;
|
|
|
|
- while (query.next()) {
|
|
|
|
- QString piclastname = query.value(0).toString();
|
|
|
|
- QString picfirstname = query.value(1).toString();
|
|
|
|
- QString alias = query.value(2).toString();
|
|
|
|
- QString name = piclastname + ", " + picfirstname;
|
|
|
|
- result.append(name);
|
|
|
|
- }
|
|
|
|
- qDebug() << "db::RetreivePilotNameFromString Result: " << result;
|
|
|
|
-
|
|
|
|
- if(result.size() == 0)
|
|
|
|
- {
|
|
|
|
- qDebug() << ("db::RetreivePilotNameFromString: No Pilot found");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /*!
|
|
|
|
- * \brief newPicGetString This function is returning a QStringList for the QCompleter in the NewFlight::newPic line edit
|
|
|
|
- * A regular expression limits the input possibilities to only characters,
|
|
|
|
- * followed by an optional ',' and 1 whitespace, e.g.:
|
|
|
|
- * Miller, Jim ->valid / Miller, Jim -> invalid / Miller,, Jim -> invalid
|
|
|
|
- * Miller Jim -> valid / Miller Jim ->invalid
|
|
|
|
- * Jim Miller-> valid
|
|
|
|
- * \param searchstring
|
|
|
|
- * \return
|
|
|
|
- */
|
|
|
|
- static QStringList newPicGetString(QString searchstring)
|
|
|
|
- {
|
|
|
|
- QStringList result;
|
|
|
|
- QStringList searchlist;
|
|
|
|
-
|
|
|
|
- if(searchstring == "self")
|
|
|
|
- {
|
|
|
|
- result.append("self");
|
|
|
|
- qDebug() << "Pilot is self";
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- //Fall 1) Nachname, Vorname
|
|
|
|
- if(searchstring.contains(QLatin1Char(',')))
|
|
|
|
- {
|
|
|
|
- QStringList namelist = searchstring.split(QLatin1Char(','));
|
|
|
|
-
|
|
|
|
- QString name1 = namelist[0].trimmed();
|
|
|
|
- name1 = name1.toLower();
|
|
|
|
- name1[0] = name1[0].toUpper();
|
|
|
|
- searchlist.append(name1);
|
|
|
|
-
|
|
|
|
- if(namelist[1].length() > 1)
|
|
|
|
- {
|
|
|
|
- QString name2 = namelist[1].trimmed();
|
|
|
|
- name2 = name2.toLower();
|
|
|
|
- name2[0] = name2[0].toUpper();
|
|
|
|
- searchlist.append(name2);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //Fall 2) Vorname Nachname
|
|
|
|
- if(searchstring.contains(" ") && !searchstring.contains(QLatin1Char(',')))
|
|
|
|
- {
|
|
|
|
- QStringList namelist = searchstring.split(" ");
|
|
|
|
-
|
|
|
|
- QString name1 = namelist[0].trimmed();
|
|
|
|
- name1 = name1.toLower();
|
|
|
|
- name1[0] = name1[0].toUpper();
|
|
|
|
- searchlist.append(name1);
|
|
|
|
-
|
|
|
|
- if(namelist[1].length() > 1) //To avoid index out of range if the searchstring is one word followed by only one whitespace
|
|
|
|
- {
|
|
|
|
- QString name2 = namelist[1].trimmed();
|
|
|
|
- name2 = name2.toLower();
|
|
|
|
- name2[0] = name2[0].toUpper();
|
|
|
|
- searchlist.append(name2);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //Fall 3) Name
|
|
|
|
- if(!searchstring.contains(" ") && !searchstring.contains(QLatin1Char(',')))
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- QString name1 = searchstring.toLower();
|
|
|
|
- name1[0] = name1[0].toUpper();
|
|
|
|
- searchlist.append(name1);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(searchlist.length() == 1)
|
|
|
|
- {
|
|
|
|
- QSqlQuery query;
|
|
|
|
- query.prepare("SELECT piclastname, picfirstname FROM pilots "
|
|
|
|
- "WHERE piclastname LIKE ?");
|
|
|
|
- query.addBindValue(searchlist[0] + '%');
|
|
|
|
- query.exec();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- while(query.next())
|
|
|
|
- {
|
|
|
|
- result.append(query.value(0).toString() + ", " + query.value(1).toString());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- QSqlQuery query2;
|
|
|
|
- query2.prepare("SELECT piclastname, picfirstname FROM pilots "
|
|
|
|
- "WHERE picfirstname LIKE ?");
|
|
|
|
- query2.addBindValue(searchlist[0] + '%');
|
|
|
|
- query2.exec();
|
|
|
|
-
|
|
|
|
- while(query2.next())
|
|
|
|
- {
|
|
|
|
- result.append(query2.value(0).toString() + ", " + query2.value(1).toString());
|
|
|
|
- }
|
|
|
|
- }else
|
|
|
|
- {
|
|
|
|
- QSqlQuery query;
|
|
|
|
- query.prepare("SELECT piclastname, picfirstname FROM pilots "
|
|
|
|
- "WHERE piclastname LIKE ? AND picfirstname LIKE ?");
|
|
|
|
- query.addBindValue(searchlist[0] + '%');
|
|
|
|
- query.addBindValue(searchlist[1] + '%');
|
|
|
|
- query.exec();
|
|
|
|
-
|
|
|
|
- while(query.next())
|
|
|
|
- {
|
|
|
|
- result.append(query.value(0).toString() + ", " + query.value(1).toString());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- QSqlQuery query2;
|
|
|
|
- query2.prepare("SELECT piclastname, picfirstname FROM pilots "
|
|
|
|
- "WHERE picfirstname LIKE ? AND piclastname LIKE ?");
|
|
|
|
- query2.addBindValue(searchlist[0] + '%');
|
|
|
|
- query2.addBindValue(searchlist[1] + '%');
|
|
|
|
- query2.exec();
|
|
|
|
-
|
|
|
|
- while(query2.next())
|
|
|
|
- {
|
|
|
|
- result.append(query2.value(0).toString() + ", " + query2.value(1).toString());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- qDebug() << "db::newPic Result" << result.length() << result;
|
|
|
|
- if(result.length() == 0)
|
|
|
|
- {
|
|
|
|
- //try first name search
|
|
|
|
- qDebug() << "No Pilot with this last name found. trying first name search.";
|
|
|
|
- return result;
|
|
|
|
- }else
|
|
|
|
- {
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static QString newPicGetId(QString name)
|
|
|
|
- {
|
|
|
|
- QString result;
|
|
|
|
-
|
|
|
|
- QStringList nameparts = name.split(QLatin1Char(','));
|
|
|
|
- QString lastname = nameparts[0].trimmed();
|
|
|
|
- lastname = lastname.toLower(); lastname[0] = lastname[0].toUpper();
|
|
|
|
- QString firstname = nameparts[1].trimmed();
|
|
|
|
- firstname = firstname.toLower(); firstname[0] = firstname[0].toUpper();
|
|
|
|
- firstname.prepend("%"); firstname.append("%");
|
|
|
|
-
|
|
|
|
- QSqlQuery query;
|
|
|
|
- query.prepare("SELECT pilot_id FROM pilots "
|
|
|
|
- "WHERE piclastname = ? AND picfirstname LIKE ?");
|
|
|
|
- query.addBindValue(lastname);
|
|
|
|
- query.addBindValue(firstname);
|
|
|
|
- query.exec();
|
|
|
|
-
|
|
|
|
- while (query.next())
|
|
|
|
- {
|
|
|
|
- result.append(query.value(0).toString());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- qDebug() << "newPicGetId: result = " << result;
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
/*
|
|
/*
|
|
* Airport Database Related Functions
|
|
* Airport Database Related Functions
|
|
*/
|
|
*/
|
|
@@ -736,7 +476,7 @@ public:
|
|
QString dest = query.value(4).toString();
|
|
QString dest = query.value(4).toString();
|
|
QString tonb = calc::minutes_to_string((query.value(5).toString()));
|
|
QString tonb = calc::minutes_to_string((query.value(5).toString()));
|
|
QString tblk = calc::minutes_to_string((query.value(6).toString()));
|
|
QString tblk = calc::minutes_to_string((query.value(6).toString()));
|
|
- QString pic = db::RetreivePilotNameFromID(query.value(7).toString());
|
|
|
|
|
|
+ QString pic = dbPilots::retreivePilotNameFromID(query.value(7).toString());
|
|
QString acft = db::RetreiveRegistration(query.value(8).toString());
|
|
QString acft = db::RetreiveRegistration(query.value(8).toString());
|
|
//qDebug() << id << doft << dept << tofb << dest << tonb << tblk << pic << acft << endl;
|
|
//qDebug() << id << doft << dept << tofb << dest << tonb << tblk << pic << acft << endl;
|
|
flight[index] = id;
|
|
flight[index] = id;
|