From 8f2da568929232fd6cf206909c05ebefc1b24737 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Fri, 27 Dec 2019 06:07:48 +0100 Subject: Voucher: Added hours_per_voucher setting --- includes/model/User_model.php | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'includes') diff --git a/includes/model/User_model.php b/includes/model/User_model.php index ea2e3008..0858c0e2 100644 --- a/includes/model/User_model.php +++ b/includes/model/User_model.php @@ -237,17 +237,34 @@ function User_get_eligable_voucher_count($user) ? Carbon::createFromFormat('Y-m-d', $voucher_settings['voucher_start'])->setTime(0, 0) : null; + $shifts = ShiftEntries_finished_by_user($user->id, $start); + $worklog = UserWorkLogsForUser($user->id, $start); $shifts_done = - count(ShiftEntries_finished_by_user($user->id, $start)) - + count(UserWorkLogsForUser($user->id, $start)); + count($shifts) + + count($worklog); - $earned_vouchers = $user->state->got_voucher - $voucher_settings['initial_vouchers']; - $eligable_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers; - if ($eligable_vouchers < 0) { + $shiftsTime = 0; + foreach ($shifts as $shift){ + $shiftsTime += ($shift['end'] - $shift['start']) / 60 / 60; + } + foreach ($worklog as $entry){ + $shiftsTime += $entry['work_hours']; + } + + $vouchers = $voucher_settings['initial_vouchers']; + if($voucher_settings['shifts_per_voucher']){ + $vouchers += $shifts_done / $voucher_settings['shifts_per_voucher']; + } + if($voucher_settings['hours_per_voucher']){ + $vouchers += $shiftsTime / $voucher_settings['hours_per_voucher']; + } + + $vouchers -= $user->state->got_voucher; + if ($vouchers < 0) { return 0; } - return $eligable_vouchers; + return $vouchers; } /** -- cgit v1.2.3-54-g00ecf