Voucher: Added calculation start time

This commit is contained in:
Igor Scheller 2019-12-25 16:26:59 +01:00
parent 45d13ac998
commit 25cdf1cac8
3 changed files with 11 additions and 3 deletions

View File

@ -138,6 +138,8 @@ return [
'voucher_settings' => [ 'voucher_settings' => [
'initial_vouchers' => 0, 'initial_vouchers' => 0,
'shifts_per_voucher' => 1, 'shifts_per_voucher' => 1,
// 'Y-m-d' formatted
'voucher_start' => null,
], ],
// Available locales in /locale/ // Available locales in /locale/

View File

@ -1,5 +1,6 @@
<?php <?php
use Carbon\Carbon;
use Engelsystem\Database\DB; use Engelsystem\Database\DB;
use Engelsystem\Models\User\User; use Engelsystem\Models\User\User;
@ -201,10 +202,11 @@ function ShiftEntries_upcoming_for_user($userId)
/** /**
* Returns shifts completed by the given user. * Returns shifts completed by the given user.
* *
* @param int $userId * @param int $userId
* @param Carbon|null $sinceTime
* @return array * @return array
*/ */
function ShiftEntries_finished_by_user($userId) function ShiftEntries_finished_by_user($userId, Carbon $sinceTime = null)
{ {
return DB::select(' return DB::select('
SELECT * SELECT *
@ -214,6 +216,7 @@ function ShiftEntries_finished_by_user($userId)
WHERE `ShiftEntry`.`UID` = ? WHERE `ShiftEntry`.`UID` = ?
AND `Shifts`.`end` < ? AND `Shifts`.`end` < ?
AND `ShiftEntry`.`freeloaded` = 0 AND `ShiftEntry`.`freeloaded` = 0
' . ($sinceTime ? 'AND Shifts.start >= ' . $sinceTime->getTimestamp() : '') . '
ORDER BY `Shifts`.`end` desc ORDER BY `Shifts`.`end` desc
', ',
[ [

View File

@ -233,7 +233,10 @@ function User_reset_api_key($user, $log = true)
function User_get_eligable_voucher_count($user) function User_get_eligable_voucher_count($user)
{ {
$voucher_settings = config('voucher_settings'); $voucher_settings = config('voucher_settings');
$shifts_done = count(ShiftEntries_finished_by_user($user->id)); $start = $voucher_settings['voucher_start']
? Carbon::createFromFormat('Y-m-d', $voucher_settings['voucher_start'])->setTime(0, 0)
: null;
$shifts_done = count(ShiftEntries_finished_by_user($user->id, $start));
$earned_vouchers = $user->state->got_voucher - $voucher_settings['initial_vouchers']; $earned_vouchers = $user->state->got_voucher - $voucher_settings['initial_vouchers'];
$eligable_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers; $eligable_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers;