#include "version3upgrader.h" Version3Upgrader::Version3Upgrader() { } QJsonObject Version3Upgrader::UpgradeDay(QJsonObject day) { QTime start(12,0,0,0); QTime end = start.addSecs(day["break"].toInt(45) * 60); QJsonObject newDay; newDay["breaks"] = QJsonArray { QJsonObject { {"start", start.toString(Qt::DateFormat::ISODate)}, {"end", end.toString(Qt::DateFormat::ISODate)} } }; newDay["start"] = day["start"].toString(); newDay["end"] = day["end"].toString(); newDay["validate"] = day["validate"].toBool(false); return newDay; } QJsonObject Version3Upgrader::UpgradeTemplate(QJsonObject week) { QJsonObject newTemplate; newTemplate["monday"] = UpgradeDay(week["monday"].toObject()); newTemplate["tuesday"] = UpgradeDay(week["tuesday"].toObject()); newTemplate["wednesday"] = UpgradeDay(week["wednesday"].toObject()); newTemplate["thurday"] = UpgradeDay(week["thurday"].toObject()); newTemplate["friday"] = UpgradeDay(week["friday"].toObject()); newTemplate["weekNumber"] = week["weekNumber"].toInt(); return newTemplate; } QJsonArray Version3Upgrader::UpgradeWeeks(QJsonArray weeks) { QDate d = QDate::currentDate(); QJsonArray years; QJsonArray newWeeks; foreach (QJsonValue value, weeks) { QJsonObject week = value.toObject(); QJsonObject newWeek; newWeek["monday"] = UpgradeDay(week["monday"].toObject()); newWeek["tuesday"] = UpgradeDay(week["tuesday"].toObject()); newWeek["wednesday"] = UpgradeDay(week["wednesday"].toObject()); newWeek["thurday"] = UpgradeDay(week["thurday"].toObject()); newWeek["friday"] = UpgradeDay(week["friday"].toObject()); newWeek["weekNumber"] = week["weekNumber"].toInt(); newWeeks.append(newWeek); } QJsonObject year; year["number"] = d.year(); year["weeks"] = newWeeks; years.append(year); return years; } QJsonObject Version3Upgrader::Upgrade(QJsonObject old) { if (old["version"].toInt() == 2) { QJsonObject newVersion; newVersion["version"] = 3; newVersion["template"] = UpgradeTemplate(old["template"].toObject()); newVersion["years"] = UpgradeWeeks(old["weeks"].toArray()); return newVersion; } return old; }