Implemented begin-end timespan export
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user