Implemented begin-end timespan export

This commit is contained in:
0xFEEDC0DE64
2018-12-13 23:17:22 +01:00
parent c391547efc
commit 3a65f07af2

View File

@@ -6,6 +6,9 @@
#include <QFile>
#include <QMessageBox>
// dbcorelib includes
#include "utils/timeutils.h"
// zeiterfassungcorelib includes
#include "utils/timeutils.h"
@@ -54,7 +57,7 @@ void ExportDialog::start()
m_file = std::move(file);
m_textStream.setDevice(file.get());
m_textStream.setDevice(m_file.get());
m_date = ui->dateEditFrom->date();
m_toDate = ui->dateEditTo->date();
@@ -74,21 +77,63 @@ void ExportDialog::requestFinished()
{
ui->progressBar->setValue(ui->progressBar->maximum() - m_date.daysTo(m_toDate));
const auto date = QLocale().toString(m_date, QLocale::ShortFormat);
// writes a log line with date prefixed
const auto log = [plainTextEdit=ui->plainTextEdit, &date](const QString &msg){
plainTextEdit->appendHtml(QStringLiteral("<b>%0</b> %1<br/>").arg(date, msg));
};
if(m_reply->success())
{
for(const auto &booking : m_reply->bookings())
const auto logBooking = [log](const GetBookingsReply::Booking &booking){
log(QString("booking %0 %1").arg(QLocale().toString(booking.time), booking.type));
};
int totalSeconds = 0;
auto iter = m_reply->bookings().constBegin();
while(true)
{
ui->plainTextEdit->appendHtml(QStringLiteral("<b>%0</b> booking %1 %2<br/>")
.arg(QLocale().toString(m_date, QLocale::ShortFormat), QLocale().toString(booking.time), booking.type));
if(iter == m_reply->bookings().constEnd())
break;
const auto &startBooking = *(iter++);
logBooking(startBooking);
if(startBooking.type != "K")
{
log("<span style=\"color: red;\">unexpected booking type!</span>");
break;
}
if(iter == m_reply->bookings().constEnd())
{
log("<span style=\"color: red;\">missing end booking!</span>");
break;
}
const auto &endBooking = *(iter++);
logBooking(endBooking);
if(endBooking.type != "G")
{
log("<span style=\"color: red;\">unexpected booking type!</span>");
break;
}
totalSeconds += startBooking.time.secsTo(endBooking.time);
}
ui->plainTextEdit->appendHtml(QStringLiteral("<b>%0</b> <span style=\"color: darkgreen;\">succeeded</span>!<br/>")
.arg(QLocale().toString(m_date, QLocale::ShortFormat)));
const auto totalTime = QTime(0, 0).addSecs(totalSeconds).toString(QStringLiteral("HH:mm:ss"));
m_textStream << date << ';' << totalTime << endl;
log(QString("<span style=\"color: darkgreen;\">succeeded (%0)</span>!").arg(totalTime));
}
else
{
ui->plainTextEdit->appendHtml(QStringLiteral("<b>%0</b> <span style=\"color: red;\">failed to load</span>: %1<br/>")
.arg(QLocale().toString(m_date, QLocale::ShortFormat), m_reply->message()));
log(QString("<span style=\"color: red;\">failed to load</span>: %1").arg(m_reply->message()));
}
if(m_date < m_toDate)