#include "version2upgrader.h" Version2Upgrader::Version2Upgrader() { } QJsonObject Version2Upgrader::Upgrade(QJsonObject old) { if (old["version"].toInt() == 1) { QJsonObject newVersion; newVersion["version"] = 2; newVersion["template"] = UpgradeTemplate(old["template"].toObject()); newVersion["weeks"] = UpgradeWeeks(old["weeks"].toArray()); return newVersion; } return old; } QJsonObject Version2Upgrader::UpgradeTemplate(QJsonObject week) { QJsonObject newTemplate; newTemplate["monday"] = UpgradeDay(week["monday"].toObject(), false); newTemplate["tuesday"] = UpgradeDay(week["tuesday"].toObject(), false); newTemplate["wednesday"] = UpgradeDay(week["wednesday"].toObject(), false); newTemplate["thurday"] = UpgradeDay(week["thurday"].toObject(), false); newTemplate["friday"] = UpgradeDay(week["friday"].toObject(), false); newTemplate["weekNumber"] = week["weekNumber"].toInt(); return newTemplate; } QJsonArray Version2Upgrader::UpgradeWeeks(QJsonArray weeks) { QDate date = QDate::currentDate(); int dow = date.dayOfWeek(); int weekNumber = date.weekNumber(); QJsonArray newWeeks; foreach (QJsonValue value, weeks) { QJsonObject newWeek; QJsonObject week = value.toObject(); if (week["weekNumber"].toInt() < weekNumber) { newWeek["monday"] = UpgradeDay(week["monday"].toObject(), true); newWeek["tuesday"] = UpgradeDay(week["tuesday"].toObject(), true); newWeek["wednesday"] = UpgradeDay(week["wednesday"].toObject(), true); newWeek["thurday"] = UpgradeDay(week["thurday"].toObject(), true); newWeek["friday"] = UpgradeDay(week["friday"].toObject(), true); } else if (week["weekNumber"].toInt() == weekNumber) { newWeek["monday"] = UpgradeDay(week["monday"].toObject(), dow > 1); newWeek["tuesday"] = UpgradeDay(week["tuesday"].toObject(), dow > 2); newWeek["wednesday"] = UpgradeDay(week["wednesday"].toObject(), dow > 3); newWeek["thurday"] = UpgradeDay(week["thurday"].toObject(), dow > 4); newWeek["friday"] = UpgradeDay(week["friday"].toObject(), dow > 5); } else { newWeek["monday"] = UpgradeDay(week["monday"].toObject(), false); newWeek["tuesday"] = UpgradeDay(week["tuesday"].toObject(), false); newWeek["wednesday"] = UpgradeDay(week["wednesday"].toObject(), false); newWeek["thurday"] = UpgradeDay(week["thurday"].toObject(), false); newWeek["friday"] = UpgradeDay(week["friday"].toObject(), false); } newWeek["weekNumber"] = week["weekNumber"].toInt(); newWeeks.append(newWeek); } return newWeeks; } QJsonObject Version2Upgrader::UpgradeDay(QJsonObject day, bool validate) { QJsonObject newDay; newDay["break"] = day["break"].toInt(); newDay["start"] = day["start"].toString(); newDay["end"] = day["end"].toString(); newDay["validate"] = validate; return newDay; }