Browse Source

new flight class and rework of database

fiffty-50 4 years ago
parent
commit
3402ecba59
4 changed files with 116 additions and 31 deletions
  1. 101 27
      dbflight.cpp
  2. 6 1
      dbflight.h
  3. 8 2
      flight.cpp
  4. 1 1
      flight.h

+ 101 - 27
dbflight.cpp

@@ -16,6 +16,8 @@
  *along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 #include "dbflight.h"
+#include "dbpilots.h"
+#include "dbaircraft.h"
 
 
 /*!
@@ -26,10 +28,108 @@
  */
 void dbFlight::verifyInput(flight object)
 {
-    object.printFlight();
+    object.print();
     //to do
 }
 
+flight dbFlight::retreiveFlight(QString flight_id)
+{
+    //To Do
+
+    QSqlQuery query;
+    query.prepare("SELECT * FROM flights WHERE id = ?");
+    query.addBindValue(flight_id);
+    query.exec();
+
+    if(query.first());
+    else
+    {
+        qWarning() << __func__ << "No Flight with this ID found";
+        return flight(); //return empty
+
+    }
+    flight object;
+
+    object.id      = query.value(0).toInt();
+    object.doft    = QDate::fromString(query.value(1).toString(),Qt::ISODate);
+    object.dept    = query.value(2).toString();
+    object.dest    = query.value(3).toString();
+    object.tofb    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(4).toString()),"hh:mm");
+    object.tonb    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(5).toString()),"hh:mm");
+    object.pic     = dbPilots::retreivePilotNameFromID(
+                     query.value(6).toString());
+    object.acft    = dbAircraft::retreiveRegistration(
+                     query.value(7).toString());
+    object.tblk    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(8).toString()),"hh:mm");
+    object.tSPSE   = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(9).toString()),"hh:mm");
+    object.tSPME   = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(10).toString()),"hh:mm");
+    object.tMP     = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(11).toString()),"hh:mm");
+    object.tNIGHT  = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(12).toString()),"hh:mm");
+    object.tIFR    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(13).toString()),"hh:mm");
+
+    object.tPIC    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(14).toString()),"hh:mm");
+    object.tPICUS  = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(15).toString()),"hh:mm");
+    object.tSIC    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(16).toString()),"hh:mm");
+    object.tDUAL   = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(17).toString()),"hh:mm");
+    object.tFI     = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(18).toString()),"hh:mm");
+    object.tSIM    = QTime::fromString(
+                     calc::minutes_to_string(
+                     query.value(19).toString()),"hh:mm");
+
+    object.pilotFlying  = query.value(20).toInt();
+    object.toDay        = query.value(21).toInt();
+    object.toNight      = query.value(22).toInt();
+    object.ldgDay       = query.value(23).toInt();
+    object.ldgNight     = query.value(24).toInt();
+    object.autoland     = query.value(25).toInt();
+
+    object.secondPilot  = query.value(26).toInt();
+    object.thirdPilot   = query.value(27).toInt();
+    object.approachType = query.value(28).toString();
+    object.flightNumber = query.value(29).toString();
+    object.remarks      = query.value(30).toString();
+
+    //Database entries are assumed to be valid
+    object.isValid = true;
+    object.invalidItems.clear();
+
+    return object;
+}
+
+
+bool dbFlight::commitFlight(flight object)
+{
+    //To Do
+    qDebug() << object;
+    return false;
+}
+
 /*!
  * \brief SelectFlightById Retreives a single flight from the database.
  * \param flight_id Primary Key of flights database
@@ -124,33 +224,7 @@ QVector<QString> dbFlight::createFlightVectorFromInput(QString doft, QString dep
     //qDebug() << flight;
     return flight;
 }
-/*!
- * \brief CommitFlight Inserts prepared flight vector into database. Also creates
- * a corresponding entry in the extras database to ensure matching IDs.
- * \param flight a Vector of values in database format
- */
-void dbFlight::commitFlight(QVector<QString> flight)// flight vector shall always have length 9
-{
-    QSqlQuery query;
-    query.prepare("INSERT INTO flights (doft, dept, tofb, dest, tonb, tblk, pic, acft) "
-                  "VALUES (:doft, :dept, :tofb, :dest, :tonb, :tblk, :pic, :acft)");
-    //flight[0] is primary key, not required for commit
-    query.bindValue(":doft", flight[1]); //string
-    query.bindValue(":dept", flight[2]);
-    query.bindValue(":tofb", flight[3].toInt()); //int
-    query.bindValue(":dest", flight[4]);
-    query.bindValue(":tonb", flight[5].toInt());
-    query.bindValue(":tblk", flight[6].toInt());
-    query.bindValue(":pic", flight[7].toInt());
-    query.bindValue(":acft", flight[8].toInt());
-    query.exec();
-    qDebug() << "Error message for commiting flight: " << query.lastError().text();
 
-    QSqlQuery query2;
-    query2.prepare("INSERT INTO extras DEFAULT VALUES");
-    query2.exec();
-    qDebug() << "Creating extras entry" << query2.lastError().text();
-}
 /*!
  * \brief CommitToScratchpad Commits the inputs of the NewFlight window to a scratchpad
  * to make them available for restoring entries when the input fields are being reloaded.

+ 6 - 1
dbflight.h

@@ -35,13 +35,18 @@ public:
 
     static void verifyInput(flight object);
 
+    static flight retreiveFlight(QString flight_id);
+
+    static bool commitFlight(flight object);
+
+
+
     static QVector<QString> selectFlightById(QString flight_id);
 
     static bool deleteFlightById(QString flight_id);
 
     static QVector<QString> createFlightVectorFromInput(QString doft, QString dept, QTime tofb, QString dest,
                                                         QTime tonb, QTime tblk, QString pic, QString acft);
-    static void commitFlight(QVector<QString> flight);
 
     static void commitToScratchpad(QVector<QString> flight);
 

+ 8 - 2
flight.cpp

@@ -3,7 +3,7 @@
 /*!
  * \brief flight::printFlight Displays basic data for debugging
  */
-void flight::printFlight()
+void flight::print()
 {
     QTextStream cout(stdout, QIODevice::WriteOnly);
 
@@ -66,6 +66,12 @@ void flight::printFlight()
     }else{
         cout << "Object status:\t\033[38;2;255;0;0;48;2;0;0;0m UNVERIFIED \033[0m\n";
     }
+    if(!invalidItems.isEmpty()){
+        cout << "Invalid items:\t";
+        for(auto const& item : invalidItems){
+            cout << item + QLatin1Char(' ');
+        }
+    }
 }
 /*!
  * \brief flight::debug Provides compatibility with qDebug
@@ -73,7 +79,7 @@ void flight::printFlight()
  */
 QString flight::debug()
 {
-    printFlight();
+    print();
     return QString();
 }
 

+ 1 - 1
flight.h

@@ -63,7 +63,7 @@ public:
     static QVector<QString> toVector(flight);
 
     // Debug functionality
-    void printFlight();
+    void print();
     QString debug();
     operator QString() { return debug(); }
 };