processflights.cpp 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "processflights.h"
  2. #include <src/functions/atime.h>
  3. void ProcessFlights::parseRawData()
  4. {
  5. // doft, flightNumber, dept, dest, tofb, tonb, tblk, tPIC, tSIC, tDUAL, tPICUS, tFI, tNight, pic, secondPilot, thirdPilot toDN,ldDN pilotFlying, appType, remarks, acftReg
  6. int relevant_cols[24] = {0,3,5,7,9,11,17,19,20,21,22,23,25,38,42,46,53,54,55,56,58,60,64,79};
  7. QStringList row_data;
  8. for (const auto &row : qAsConst(rawData)) {
  9. for (const auto &col : relevant_cols) {
  10. row_data.append(row[col]);
  11. }
  12. rawFlightData.append(row_data);
  13. row_data.clear();
  14. }
  15. DEB << "Flight Info #1742:" << rawFlightData[1742];
  16. }
  17. void ProcessFlights::processParsedData()
  18. {
  19. QMap<QString, QVariant> new_flight_data;
  20. int flight_id = 1;
  21. for (const auto &row : qAsConst(rawFlightData)) {
  22. // insert values that don't require editing
  23. new_flight_data.insert(Opl::Db::FLIGHTS_FLIGHTNUMBER, row[1]);
  24. new_flight_data.insert(Opl::Db::FLIGHTS_DEPT, row[2]);
  25. new_flight_data.insert(Opl::Db::FLIGHTS_DEST, row[3]);
  26. new_flight_data.insert(Opl::Db::FLIGHTS_TBLK, row[6]);
  27. new_flight_data.insert(Opl::Db::FLIGHTS_TPIC, row[7]);
  28. new_flight_data.insert(Opl::Db::FLIGHTS_TSIC, row[8]);
  29. new_flight_data.insert(Opl::Db::FLIGHTS_TDUAL, row[9]);
  30. new_flight_data.insert(Opl::Db::FLIGHTS_TPICUS, row[10]);
  31. new_flight_data.insert(Opl::Db::FLIGHTS_TFI, row[11]);
  32. new_flight_data.insert(Opl::Db::FLIGHTS_TNIGHT, row[12]);
  33. new_flight_data.insert(Opl::Db::FLIGHTS_TODAY, row[16]);
  34. new_flight_data.insert(Opl::Db::FLIGHTS_TONIGHT, row[17]);
  35. new_flight_data.insert(Opl::Db::FLIGHTS_LDGDAY, row[18]);
  36. new_flight_data.insert(Opl::Db::FLIGHTS_LDGNIGHT, row[19]);
  37. new_flight_data.insert(Opl::Db::FLIGHTS_APPROACHTYPE, row[21]);
  38. new_flight_data.insert(Opl::Db::FLIGHTS_REMARKS, row[22]);
  39. // PF
  40. if (row[20] == QLatin1String("TRUE"))
  41. new_flight_data.insert(Opl::Db::FLIGHTS_PILOTFLYING, 1);
  42. else
  43. new_flight_data.insert(Opl::Db::FLIGHTS_PILOTFLYING, 0);
  44. // Convert Date and Time
  45. const QDate doft = QDate::fromString(row[0],QStringLiteral("dd/MM/yyyy"));
  46. new_flight_data.insert(Opl::Db::FLIGHTS_DOFT, doft.toString(Qt::ISODate));
  47. auto time_off = QTime::fromString(row[4], QStringLiteral("hh:mm"));
  48. if (!time_off.isValid())
  49. time_off = QTime::fromString(row[4], QStringLiteral("h:mm"));
  50. int tofb = ATime::toMinutes(time_off);
  51. new_flight_data.insert(Opl::Db::FLIGHTS_TOFB, tofb);
  52. auto time_on = QTime::fromString(row[5], QStringLiteral("hh:mm"));
  53. if (!time_on.isValid())
  54. time_on = QTime::fromString(row[5], QStringLiteral("h:mm"));
  55. int tonb = ATime::toMinutes(time_on);
  56. new_flight_data.insert(Opl::Db::FLIGHTS_TONB, tonb);
  57. // map pilots
  58. int pic = processedPilotsIds.value(row[13]);
  59. new_flight_data.insert(Opl::Db::FLIGHTS_PIC, pic);
  60. int second_pilot = processedPilotsIds.value(row[14]);
  61. new_flight_data.insert(Opl::Db::FLIGHTS_SECONDPILOT, second_pilot);
  62. int third_pilot = processedPilotsIds.value(row[15]);
  63. new_flight_data.insert(Opl::Db::FLIGHTS_THIRDPILOT, third_pilot);
  64. // map tail
  65. int acft = processedTailsIds.value(row[23]);
  66. new_flight_data.insert(Opl::Db::FLIGHTS_ACFT, acft);
  67. // set id, fix opl to include alias
  68. new_flight_data.insert(QStringLiteral("flight_id"), flight_id);
  69. processedFlights.append(new_flight_data);
  70. new_flight_data.clear();
  71. flight_id ++;
  72. }
  73. }
  74. QVector<QMap<QString, QVariant> > ProcessFlights::getProcessedFlights() const
  75. {
  76. return processedFlights;
  77. }