Files
Chronos/sources/models/week.cpp
2022-10-16 17:36:47 +02:00

168 lines
3.0 KiB
C++

#include "week.h"
Week::Week()
{
mon = new Day();
tue = new Day();
wed = new Day();
thu = new Day();
fri = new Day();
time_delta = 0;
week_number = 0;
}
Week::Week(Week *old)
{
mon = new Day();
tue = new Day();
wed = new Day();
thu = new Day();
fri = new Day();
time_delta = 0;
week_number = 0;
update(old);
}
Week::~Week()
{
delete mon;
delete tue;
delete wed;
delete thu;
delete fri;
}
Week* Week::from_json(QJsonObject obj) {
Week *w = new Week();
w->mon = Day::from_json(obj[MONDAY].toObject());
w->tue = Day::from_json(obj[TUESDAY].toObject());
w->wed = Day::from_json(obj[WEDNESDAY].toObject());
w->thu = Day::from_json(obj[THURDAY].toObject());
w->fri = Day::from_json(obj[FRIDAY].toObject());
w->time_delta = obj[TIME_DELTA].toInt(0);
w->week_number = obj[WEEK_NUMBER].toInt();
return w;
}
QJsonObject Week::to_json() {
QJsonObject obj {
{MONDAY, mon->to_json()},
{TUESDAY, tue->to_json()},
{WEDNESDAY, wed->to_json()},
{THURDAY, thu->to_json()},
{FRIDAY, fri->to_json()},
{TIME_DELTA, time_delta},
{WEEK_NUMBER, week_number}
};
return obj;
}
double Week::total() {
return mon->get_total() + tue->get_total() + wed->get_total() + thu->get_total() + fri->get_total();
}
double Week::total(Week *wtemplate)
{
double t = 0.0;
if (mon->not_working()) {
t += wtemplate->mon->get_total();
} else {
t += mon->get_total();
}
if (tue->not_working()) {
t += wtemplate->tue->get_total();
} else {
t += tue->get_total();
}
if (wed->not_working()) {
t += wtemplate->wed->get_total();
} else {
t += wed->get_total();
}
if (thu->not_working()) {
t += wtemplate->thu->get_total();
} else {
t += thu->get_total();
}
if (fri->not_working()) {
t += wtemplate->fri->get_total();
} else {
t += fri->get_total();
}
return t;
}
Day* Week::getMon() {
return mon;
}
Day* Week::getTue() {
return tue;
}
Day* Week::getWed() {
return wed;
}
Day* Week::getThu() {
return thu;
}
Day* Week::getFri() {
return fri;
}
void Week::update(Week *old)
{
mon = new Day(old->mon);
tue = new Day(old->tue);
wed = new Day(old->wed);
thu = new Day(old->thu);
fri = new Day(old->fri);
time_delta = old->time_delta;
week_number = old->week_number;
}
int Week::getWeekNumber() {
return week_number;
}
int Week::getTimeDelta()
{
return time_delta;
}
float Week::getTimeDeltaInHours()
{
return time_delta/60.0;
}
void Week::setMon(Day* value) {
mon = value;
}
void Week::setTue(Day* value) {
tue = value;
}
void Week::setWed(Day* value) {
wed = value;
}
void Week::setThu(Day* value) {
thu = value;
}
void Week::setFri(Day* value) {
fri = value;
}
void Week::setWeekNumber(int value) {
week_number = value;
}
void Week::setTimeDelta(int value)
{
time_delta = value;
}