Merge pull request #243 from tike/calculate_vouchers

issue #242 - make app caluclate number of vouchers for angels
This commit is contained in:
msquare 2016-03-22 14:40:52 +01:00
commit c35cf85db5
6 changed files with 59 additions and 1 deletions

View File

@ -47,6 +47,12 @@ $shift_sum_formula = "SUM(
))*(`Shifts`.`end` - `Shifts`.`start`)*(1 - 3 * `ShiftEntry`.`freeloaded`)
)";
// voucher calculation
$voucher_settings = array(
"initial_vouchers" => 2,
"shifts_per_voucher" => 1
);
// weigh every shift the same
// $shift_sum_formula = "SUM(`end` - `start`)";

View File

@ -84,6 +84,23 @@ function ShiftEntries_upcoming_for_user($user) {
");
}
/**
* Returns shifts completed by the given user.
*
* @param User $user
*/
function ShiftEntries_finished_by_user($user){
return sql_select("
SELECT *
FROM `ShiftEntry`
JOIN `Shifts` ON (`Shifts`.`SID` = `ShiftEntry`.`SID`)
JOIN `ShiftTypes` ON `ShiftTypes`.`id` = `Shifts`.`shifttype_id`
WHERE `ShiftEntry`.`UID`=" . sql_escape($user['UID']) . "
AND `Shifts`.`end` < " . sql_escape(time()) . "
ORDER BY `Shifts`.`end`
");
}
/**
* Returns all shift entries in given shift for given angeltype.
*

View File

@ -260,4 +260,19 @@ function User_generate_password_recovery_token(&$user) {
return $user['password_recovery_token'];
}
function User_get_eligable_voucher_count(&$user) {
global $voucher_settings;
$shifts_done = count(ShiftEntries_finished_by_user($user));
$earned_vouchers = $user['got_voucher'] - $voucher_settings['initial_vouchers'];
$elegible_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers;
if ( $elegible_vouchers < 0) {
return 0;
}
return $elegible_vouchers;
}
?>

View File

@ -45,8 +45,10 @@ function User_edit_vouchers_view($user) {
buttons([
button(user_link($user), glyph('chevron-left') . _("back"))
]),
heading(sprintf(_("angel should receive at least %d vouchers."), User_get_eligable_voucher_count($user)), 3),
heading(_("This is a automatically calculated MINIMUM value, you can of course give out more if appropriate!"), 4),
form([
form_spinner('vouchers', _("Number of vouchers"), $user['got_voucher']),
form_spinner('vouchers', _("Number of vouchers given out"), $user['got_voucher']),
form_submit('submit', _("Save"))
], page_link_to('users') . '&action=edit_vouchers&user_id=' . $user['UID'])
]);

View File

@ -2402,6 +2402,24 @@ msgstr ""
"Du hast keinen Zugriff auf diese Seite. Registriere Dich und logge Dich "
"bitte ein, um Zugriff zu erhalten!"
#: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:49
msgid ""
"angel should receive at least %d vouchers."
msgstr ""
"Engel sollte mindestens %d voucher bekommen."
#: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:49
msgid ""
" vouchers."
msgstr ""
" Vouchers."
#: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:50
msgid ""
"This is a automatically calculated MINIMUM value, you can of course give out more if appropriate!"
msgstr ""
"Dies ist ein automatisch berechneter MINIMAL Wert, du kannst natürlich mehr ausgeben, wenn du es für angemessen hälst!"
#~ msgid "You have been signed off from the shift."
#~ msgstr "Du wurdest aus der Schicht ausgetragen."