164 lines
3.0 KiB
C++
164 lines
3.0 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;
|
|
notWorking = 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;
|
|
notWorking = false;
|
|
update(old);
|
|
}
|
|
|
|
Day::~Day()
|
|
{
|
|
foreach (BreakPoint *bp, breaks) {
|
|
delete bp;
|
|
}
|
|
breaks.clear();
|
|
}
|
|
|
|
float Day::get_total() {
|
|
if (notWorking) {
|
|
return 0.0;
|
|
}
|
|
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::set_not_working(bool value)
|
|
{
|
|
this->notWorking = 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},
|
|
{KEY_NOT_WORKING, notWorking}
|
|
};
|
|
|
|
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(false);
|
|
result->notWorking = obj[KEY_NOT_WORKING].toBool(false);
|
|
|
|
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;
|
|
}
|
|
|
|
bool Day::not_working()
|
|
{
|
|
return notWorking;
|
|
}
|
|
|
|
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;
|
|
this->notWorking = old->notWorking;
|
|
|
|
foreach (BreakPoint *bp, breaks) {
|
|
delete bp;
|
|
}
|
|
breaks.clear();
|
|
|
|
foreach (BreakPoint *bp, old->breaks) {
|
|
this->breaks.append(new BreakPoint(bp));
|
|
}
|
|
}
|