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' => [
'initial_vouchers' => 0,
'shifts_per_voucher' => 1,
// 'Y-m-d' formatted
'voucher_start' => null,
],
// Available locales in /locale/

View File

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