Implemented begin-end timespan export
This commit is contained in:
@@ -6,6 +6,9 @@
|
|||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
// dbcorelib includes
|
||||||
|
#include "utils/timeutils.h"
|
||||||
|
|
||||||
// zeiterfassungcorelib includes
|
// zeiterfassungcorelib includes
|
||||||
#include "utils/timeutils.h"
|
#include "utils/timeutils.h"
|
||||||
|
|
||||||
@@ -54,7 +57,7 @@ void ExportDialog::start()
|
|||||||
|
|
||||||
m_file = std::move(file);
|
m_file = std::move(file);
|
||||||
|
|
||||||
m_textStream.setDevice(file.get());
|
m_textStream.setDevice(m_file.get());
|
||||||
|
|
||||||
m_date = ui->dateEditFrom->date();
|
m_date = ui->dateEditFrom->date();
|
||||||
m_toDate = ui->dateEditTo->date();
|
m_toDate = ui->dateEditTo->date();
|
||||||
@@ -74,21 +77,63 @@ void ExportDialog::requestFinished()
|
|||||||
{
|
{
|
||||||
ui->progressBar->setValue(ui->progressBar->maximum() - m_date.daysTo(m_toDate));
|
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())
|
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/>")
|
if(iter == m_reply->bookings().constEnd())
|
||||||
.arg(QLocale().toString(m_date, QLocale::ShortFormat), QLocale().toString(booking.time), booking.type));
|
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/>")
|
const auto totalTime = QTime(0, 0).addSecs(totalSeconds).toString(QStringLiteral("HH:mm:ss"));
|
||||||
.arg(QLocale().toString(m_date, QLocale::ShortFormat)));
|
|
||||||
|
m_textStream << date << ';' << totalTime << endl;
|
||||||
|
|
||||||
|
log(QString("<span style=\"color: darkgreen;\">succeeded (%0)</span>!").arg(totalTime));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->plainTextEdit->appendHtml(QStringLiteral("<b>%0</b> <span style=\"color: red;\">failed to load</span>: %1<br/>")
|
log(QString("<span style=\"color: red;\">failed to load</span>: %1").arg(m_reply->message()));
|
||||||
.arg(QLocale().toString(m_date, QLocale::ShortFormat), m_reply->message()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_date < m_toDate)
|
if(m_date < m_toDate)
|
||||||
|
Reference in New Issue
Block a user