Files
Chronos/sources/models/day.cpp
Aurélie Delhaie 9bb56fe174 Pointer + time delta
2022-03-01 21:08:34 +01:00

132 lines
2.5 KiB
C++

#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<BreakPoint*> breaks)
{
this->breaks = breaks;
}
QTime Day::get_start()
{
return start;
}
QTime Day::get_end()
{
return end;
}
QVector<BreakPoint*> 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;
}
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));
}
}