|  | @@ -0,0 +1,113 @@
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + *openPilot Log - A FOSS Pilot Logbook Application
 | 
	
		
			
				|  |  | + *Copyright (C) 2020  Felix Turowsky
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *This program is free software: you can redistribute it and/or modify
 | 
	
		
			
				|  |  | + *it under the terms of the GNU General Public License as published by
 | 
	
		
			
				|  |  | + *the Free Software Foundation, either version 3 of the License, or
 | 
	
		
			
				|  |  | + *(at your option) any later version.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *This program is distributed in the hope that it will be useful,
 | 
	
		
			
				|  |  | + *but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
	
		
			
				|  |  | + *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
	
		
			
				|  |  | + *GNU General Public License for more details.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *You should have received a copy of the GNU General Public License
 | 
	
		
			
				|  |  | + *along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#include "dbstat.h"
 | 
	
		
			
				|  |  | +#include "dbman.cpp"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*!
 | 
	
		
			
				|  |  | + * \brief retreiveTotalTime Looks up Total Blocktime in the flights database
 | 
	
		
			
				|  |  | + * \return Amount of Total Block Time in blockminutes
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +QString dbStat::retreiveTotalTime()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    QSqlQuery query;
 | 
	
		
			
				|  |  | +    query.prepare("SELECT SUM(tblk) FROM flights");
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QString result;
 | 
	
		
			
				|  |  | +    while (query.next()){
 | 
	
		
			
				|  |  | +      result = query.value(0).toString();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return result;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*!
 | 
	
		
			
				|  |  | + * \brief retreiveTotalTimeThisCalendarYear Looks up Total Block Time in
 | 
	
		
			
				|  |  | + * the current calendar year
 | 
	
		
			
				|  |  | + * \return Total Amount of Blockminutes
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +QString dbStat::retreiveTotalTimeThisCalendarYear()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    QDate today = QDate::currentDate();
 | 
	
		
			
				|  |  | +    QDate start;
 | 
	
		
			
				|  |  | +    start.setDate(today.year(),1,1);
 | 
	
		
			
				|  |  | +    QString startdate = start.toString(Qt::ISODate);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QSqlQuery query;
 | 
	
		
			
				|  |  | +    query.prepare("SELECT SUM(tblk) FROM flights WHERE doft >= ?");
 | 
	
		
			
				|  |  | +    query.addBindValue(startdate);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QString result;
 | 
	
		
			
				|  |  | +    while (query.next()){
 | 
	
		
			
				|  |  | +        result = query.value(0).toString();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    qDebug() << "db::retreiveTotalTimeThisCalendarYear: Total minutes: " << result;
 | 
	
		
			
				|  |  | +    return result;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*!
 | 
	
		
			
				|  |  | + * \brief retreiveTotalTimeRollingYear Looks up Total Time in the last 365 days.
 | 
	
		
			
				|  |  | + * \return Total Blockminutes
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +QString dbStat::retreiveTotalTimeRollingYear()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    QDate start = QDate::fromJulianDay(QDate::currentDate().toJulianDay() - 365);
 | 
	
		
			
				|  |  | +    QString startdate = start.toString(Qt::ISODate);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QSqlQuery query;
 | 
	
		
			
				|  |  | +    query.prepare("SELECT SUM(tblk) FROM flights WHERE doft >= ?");
 | 
	
		
			
				|  |  | +    query.addBindValue(startdate);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QString result;
 | 
	
		
			
				|  |  | +    while (query.next()){
 | 
	
		
			
				|  |  | +        result = query.value(0).toString();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    qDebug() << "db::retreiveTotalTimeRollingYear: Total minutes: " << result;
 | 
	
		
			
				|  |  | +    return result;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*!
 | 
	
		
			
				|  |  | + * \brief retreiveCurrencyTakeoffLanding Looks up the amount of Take Offs and
 | 
	
		
			
				|  |  | + * Landings performed in the last 90 days.
 | 
	
		
			
				|  |  | + * \return {TO,LDG}
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +QVector<QString> dbStat::retreiveCurrencyTakeoffLanding()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    QDate start = QDate::fromJulianDay(QDate::currentDate().toJulianDay() - 90);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QSqlQuery query;
 | 
	
		
			
				|  |  | +    query.prepare("SELECT "
 | 
	
		
			
				|  |  | +                  "SUM(extras.TOday + extras.TOnight) AS 'TakeOFF', "
 | 
	
		
			
				|  |  | +                  "SUM(extras.LDGday + extras.LDGnight) AS 'Landing' "
 | 
	
		
			
				|  |  | +                  "FROM flights "
 | 
	
		
			
				|  |  | +                  "INNER JOIN extras on flights.id = extras.extras_id "
 | 
	
		
			
				|  |  | +                  "WHERE doft >= ?");
 | 
	
		
			
				|  |  | +    query.addBindValue(start.toString(Qt::ISODate));
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    QVector<QString> result(2,"0"); // make sure to return a valid vector even if result 0
 | 
	
		
			
				|  |  | +    while (query.next()){
 | 
	
		
			
				|  |  | +        result.insert(0,query.value(0).toString());
 | 
	
		
			
				|  |  | +        result.insert(1,query.value(1).toString());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    qDebug() << "db::retreiveCurrencyTakeoffLanding: " << result[0] << " TO, " <<result[1] << " LDG";
 | 
	
		
			
				|  |  | +    return result;
 | 
	
		
			
				|  |  | +}
 |