flight.cpp 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. #include "flight.h"
  2. flight::flight()
  3. {
  4. isValid = false;
  5. invalidItems.append( { // Upon verification, verified entries are removed from the list
  6. "doft", "dept", "dest", "tofb",
  7. "tonb", "pic", "acft", "tblk"
  8. });
  9. id = -1; //[1] Primary Key in Database, needed for retreival but not for commiting (sqlite autoincrement)
  10. doft = QDate(); //[2] Date of Flight, initialised invalid
  11. dept = "INVA"; //[3] Departure, initialised invalid
  12. dest = "INVA"; //[4] Destination, initialised invalid
  13. tofb = QTime(); //[5] Time off blocks (UTC), initialised invalid
  14. tonb = QTime(); //[6] Time on blocks (UTC), initialised invalid
  15. pic = "INVA"; //[7] Pilot in command (ID), initialised invalid
  16. acft = "INVA"; //[8] Aircraft Registration (ID), initialised invalid
  17. tblk = QTime(); //[9] Total Blocktime, initialised invalid
  18. tSPSE = QTime(0,0); //[10] optional times initialised as 0
  19. tSPME = QTime(0,0); //[11]
  20. tMP = QTime(0,0); //[12]
  21. tNIGHT = QTime(0,0); //[13]
  22. tIFR = QTime(0,0); //[14]
  23. tPIC = QTime(0,0); //[15]
  24. tPICUS = QTime(0,0); //[16]
  25. tSIC = QTime(0,0); //[17]
  26. tDUAL = QTime(0,0); //[18]
  27. tFI = QTime(0,0); //[19]
  28. tSIM = QTime(0,0); //[20]
  29. }
  30. flight::flight(QVector<QString> details)
  31. {
  32. isValid = false;
  33. invalidItems.append({ // Upon verification, verified entries are removed from the list
  34. "doft", "dept", "dest", "tofb",
  35. "tonb", "pic", "acft", "tblk"
  36. });
  37. if(details.length() != 32){
  38. qWarning() << __PRETTY_FUNCTION__ << "Vector needs to be of size 32.";
  39. qWarning() << __PRETTY_FUNCTION__ << "Unable to create object.";
  40. details = QVector<QString>(32);
  41. }
  42. id = details[1].toInt();
  43. doft = QDate::fromString(details[2],Qt::ISODate);
  44. dept = details[3];
  45. dest = details[4];
  46. tofb = QTime::fromString(details[5],"hh:mm");
  47. tonb = QTime::fromString(details[6],"hh:mm");
  48. pic = details[7];
  49. acft = details[8];
  50. tblk = QTime::fromString(details[9],"hh:mm");
  51. tSPSE = QTime::fromString(details[10],"hh:mm");
  52. tSPME = QTime::fromString(details[11],"hh:mm");
  53. tMP = QTime::fromString(details[12],"hh:mm");
  54. tNIGHT = QTime::fromString(details[13],"hh:mm");
  55. tIFR = QTime::fromString(details[14],"hh:mm");
  56. tPIC = QTime::fromString(details[15],"hh:mm");
  57. tPICUS = QTime::fromString(details[16],"hh:mm");
  58. tSIC = QTime::fromString(details[17],"hh:mm");
  59. tDUAL = QTime::fromString(details[18],"hh:mm");
  60. tFI = QTime::fromString(details[19],"hh:mm");
  61. tSIM = QTime::fromString(details[20],"hh:mm");
  62. pilotFlying = details[21].toInt();
  63. toDay = details[22].toInt();
  64. toNight = details[23].toInt();
  65. ldgDay = details[24].toInt();
  66. ldgNight = details[25].toInt();
  67. autoland = details[26].toInt();
  68. secondPilot = details[27];
  69. thirdPilot = details[28];
  70. approachType = details[29];
  71. flightNumber = details[30];
  72. remarks = details[31];
  73. }
  74. /*!
  75. * \brief flight::printFlight Displays basic data for debugging
  76. */
  77. void flight::print()
  78. {
  79. QTextStream cout(stdout, QIODevice::WriteOnly);
  80. if(id != -1){
  81. cout << "Flight ID:\t\t" + QString::number(id) + "\n";
  82. }else{
  83. cout << "Flight ID:\t\tnot set\n";
  84. }
  85. if(doft.toString(Qt::ISODate).length()){
  86. cout << "Date of Flight:\t" + doft.toString(Qt::ISODate) + "\n";
  87. }else{
  88. cout << "Date of Flight:\tnot set\n";
  89. }
  90. if(dept != QStringLiteral("INVA")){
  91. cout << "Departure:\t\t" + dept + "\n";
  92. }else{
  93. cout << "Departure:\t\tnot set\n";
  94. }
  95. if(dest != QStringLiteral("INVA")){
  96. cout << "Destination:\t\t" + dest + "\n";
  97. }else{
  98. cout << "Destination:\t\tnot set\n";
  99. }
  100. if(tofb.toString("hh:mm").length()){
  101. cout << "Departure Time:\t" + tofb.toString("hh:mm") + "\n";
  102. }else{
  103. cout << "Departure Time:\tnot set\n";
  104. }
  105. if(tonb.toString("hh:mm").length()){
  106. cout << "Arrival Time:\t" + tonb.toString("hh:mm") + "\n";
  107. }else{
  108. cout << "Arrival Time:\tnot set\n";
  109. }
  110. if(pic != QStringLiteral("INVA")){
  111. cout << "Pilot in Command:\t" + pic + "\n";
  112. }else{
  113. cout << "Pilot in Command:\tnot set\n";
  114. }
  115. if(acft != QStringLiteral("INVA")){
  116. cout << "Aircraft:\t\t" + acft + "\n";
  117. }else{
  118. cout << "Aircraft:\t\tnot set\n";
  119. }
  120. if(tblk.isValid()){
  121. cout << "Blocktime:\t\t" + tblk.toString("hh:mm") + "\n";
  122. }else{
  123. cout << "Blocktime:\t\tnot set\n";
  124. }
  125. if(isValid){
  126. cout << "Object status:\t\033[38;2;0;255;0;48;2;0;0;0m VERIFIED \033[0m\n";
  127. }else{
  128. cout << "Object status:\t\033[38;2;255;0;0;48;2;0;0;0m UNVERIFIED \033[0m\n";
  129. }
  130. if(!invalidItems.isEmpty()){
  131. cout << "Invalid items:\t";
  132. for(auto const& item : invalidItems){
  133. cout << item + QLatin1Char(' ');
  134. }
  135. cout << "\n";
  136. }
  137. }
  138. /*!
  139. * \brief flight::debug Provides compatibility with qDebug
  140. * \return
  141. */
  142. QString flight::debug()
  143. {
  144. print();
  145. return QString();
  146. }
  147. flight flight::fromVector(QVector<QString> details)
  148. {
  149. if(details.length() != 32){
  150. qWarning() << __PRETTY_FUNCTION__ << "Invalid Input. Aborting.";
  151. return flight();
  152. }
  153. flight object;
  154. object.id = details[1].toInt();
  155. object.doft = QDate::fromString(details[2],Qt::ISODate);
  156. object.dept = details[3];
  157. object.dest = details[4];
  158. object.tofb = QTime::fromString(details[5],"hh:mm");
  159. object.tonb = QTime::fromString(details[6],"hh:mm");
  160. object.pic = details[7];
  161. object.acft = details[8];
  162. object.tblk = QTime::fromString(details[9],"hh:mm");
  163. object.tSPSE = QTime::fromString(details[10],"hh:mm");
  164. object.tSPME = QTime::fromString(details[11],"hh:mm");
  165. object.tMP = QTime::fromString(details[12],"hh:mm");
  166. object.tNIGHT = QTime::fromString(details[13],"hh:mm");
  167. object.tIFR = QTime::fromString(details[14],"hh:mm");
  168. object.tPIC = QTime::fromString(details[15],"hh:mm");
  169. object.tPICUS = QTime::fromString(details[16],"hh:mm");
  170. object.tSIC = QTime::fromString(details[17],"hh:mm");
  171. object.tDUAL = QTime::fromString(details[18],"hh:mm");
  172. object.tFI = QTime::fromString(details[19],"hh:mm");
  173. object.tSIM = QTime::fromString(details[20],"hh:mm");
  174. object.pilotFlying = details[21].toInt();
  175. object.toDay = details[22].toInt();
  176. object.toNight = details[23].toInt();
  177. object.ldgDay = details[24].toInt();
  178. object.ldgNight = details[25].toInt();
  179. object.autoland = details[26].toInt();
  180. object.secondPilot = details[27];
  181. object.thirdPilot = details[28];
  182. object.approachType = details[29];
  183. object.flightNumber = details[30];
  184. object.remarks = details[31];
  185. return object;
  186. }
  187. QVector<QString> flight::toVector(flight object)
  188. {
  189. QVector<QString> vecOut(32);
  190. vecOut [1] = QString::number(object.id);
  191. vecOut [2] = object.doft.toString(Qt::ISODate);
  192. vecOut [3] = object.dept;
  193. vecOut [4] = object.dest;
  194. vecOut [5] = object.tofb.toString("hh:mm");
  195. vecOut [6] = object.tonb.toString("hh:mm");
  196. vecOut [7] = object.pic;
  197. vecOut [8] = object.acft;
  198. vecOut [9] = object.tblk.toString("hh:mm");
  199. vecOut [10] = object.tSPSE.toString("hh:mm");
  200. vecOut [11] = object.tSPME.toString("hh:mm");
  201. vecOut [12] = object.tMP.toString("hh:mm");
  202. vecOut [13] = object.tNIGHT.toString("hh:mm");
  203. vecOut [14] = object.tIFR.toString("hh:mm");
  204. vecOut [15] = object.tPIC.toString("hh:mm");
  205. vecOut [16] = object.tPICUS.toString("hh:mm");
  206. vecOut [17] = object.tSIC.toString("hh:mm");
  207. vecOut [18] = object.tDUAL.toString("hh:mm");
  208. vecOut [19] = object.tFI.toString("hh:mm");
  209. vecOut [20] = object.tSIM.toString("hh:mm");
  210. vecOut [21] = QString::number(object.pilotFlying);
  211. vecOut [22] = QString::number(object.toDay);
  212. vecOut [23] = QString::number(object.toNight);
  213. vecOut [24] = QString::number(object.ldgDay);
  214. vecOut [25] = QString::number(object.ldgNight);
  215. vecOut [26] = QString::number(object.autoland);
  216. vecOut [27] = object.secondPilot;
  217. vecOut [28] = object.thirdPilot;
  218. vecOut [29] = object.approachType;
  219. vecOut [30] = object.flightNumber;
  220. vecOut [31] = object.remarks;
  221. return vecOut;
  222. }