76 lines
3.0 KiB
C++
76 lines
3.0 KiB
C++
#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;
|
|
}
|
|
|