Julio Biason
4 years ago
3 changed files with 53 additions and 27 deletions
@ -0,0 +1,33 @@ |
|||||||
|
#include "period.h" |
||||||
|
|
||||||
|
#define MUST_WORK "08:48" |
||||||
|
|
||||||
|
hours* period_worked_so_far(hours* start, hours* lunch_break, hours* lunch_return, hours* now) { |
||||||
|
hours* so_far; |
||||||
|
if (hours_preceed(now, lunch_return) == -1) { |
||||||
|
so_far = hours_sub(start, now); |
||||||
|
} else { |
||||||
|
hours* before_lunch = hours_sub(start, lunch_break); |
||||||
|
hours* after_lunch = hours_sub(lunch_return, now); |
||||||
|
|
||||||
|
so_far = hours_add(before_lunch, after_lunch); |
||||||
|
|
||||||
|
hours_free(before_lunch); |
||||||
|
hours_free(after_lunch); |
||||||
|
} |
||||||
|
|
||||||
|
return so_far; |
||||||
|
} |
||||||
|
|
||||||
|
hours* period_calc_time(hours* so_far, int* extra_indicator) { |
||||||
|
hours* must_work = hours_new(MUST_WORK); |
||||||
|
hours* result; |
||||||
|
if (hours_preceed(so_far, must_work) == -1) { |
||||||
|
*extra_indicator = 0; |
||||||
|
result = hours_sub(so_far, must_work); |
||||||
|
} else { |
||||||
|
*extra_indicator = 1; |
||||||
|
result = hours_sub(must_work, so_far); |
||||||
|
} |
||||||
|
return result; |
||||||
|
} |
Loading…
Reference in new issue