#include "day.h" Day::Day() { start = QTime(9, 0, 0, 0); end = QTime(17, 15, 0, 0); BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0)); breaks.append(lunch); validate = false; } Day::Day(Day *old) { start = QTime(9, 0, 0, 0); end = QTime(17, 15, 0, 0); BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0)); breaks.append(lunch); validate = false; update(old); } Day::~Day() { foreach (BreakPoint *bp, breaks) { delete bp; } breaks.clear(); } float Day::get_total() { int sec = start.secsTo(end); int minutes = sec / 60; float breakTime = get_time_break(); return (minutes - breakTime) / 60; } void Day::set_start(QTime value) { start = value; } void Day::set_end(QTime value) { end = value; } void Day::set_validate(bool value) { validate = value; } void Day::setBreaks(QVector breaks) { this->breaks = breaks; } QTime Day::get_start() { return start; } QTime Day::get_end() { return end; } QVector Day::getBreaks() { return breaks; } QJsonObject Day::to_json() { QJsonArray arr; foreach (BreakPoint *bp, breaks) { arr.append(bp->to_json()); } QJsonObject obj{ {KEY_START, start.toString(Qt::DateFormat::ISODate)}, {KEY_END, end.toString(Qt::DateFormat::ISODate)}, {KEY_BREAKS, arr}, {KEY_VALIDATE, validate} }; return obj; } bool Day::has_warning() { bool warning = false; foreach (BreakPoint val, breaks) { if (val.getStart() < start) { warning = true; } if (val.getEnd() > end) { warning = true; } } return warning; } Day* Day::from_json(QJsonObject obj) { Day *result = new Day(); result->start = QTime::fromString(obj[KEY_START].toString(), Qt::DateFormat::ISODate); result->end = QTime::fromString(obj[KEY_END].toString(), Qt::DateFormat::ISODate); result->validate = obj[KEY_VALIDATE].toBool(); result->breaks.clear(); QJsonArray arr = obj[KEY_BREAKS].toArray(); foreach (QJsonValue val, arr) { result->breaks.append(BreakPoint::from_json(val.toObject())); } return result; } bool Day::get_validate() { return validate; } float Day::get_time_break() { float result = 0; foreach (BreakPoint* bp, breaks) { result += bp->getDuration(); } return result; } void Day::update(Day *old) { this->start = old->start; this->end = old->end; this->validate = old->validate; foreach (BreakPoint *bp, breaks) { delete bp; } breaks.clear(); foreach (BreakPoint *bp, old->breaks) { this->breaks.append(new BreakPoint(bp)); } }