From 2a134e6c0b8e7c5bbeade38d29052194bd9dfa46 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Mon, 17 Sep 2018 12:33:15 +0200 Subject: Config: Removed nightshifts query --- config/config.default.php | 26 +++++------------ includes/model/Stats.php | 10 +++++-- includes/model/User_model.php | 34 ++++++++++++++++++++-- includes/pages/admin_active.php | 2 +- includes/view/User_view.php | 9 ++++-- resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo | Bin 45036 -> 45040 bytes resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po | 7 +++-- resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo | Bin 41265 -> 41310 bytes resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po | 7 +++-- 9 files changed, 63 insertions(+), 32 deletions(-) diff --git a/config/config.default.php b/config/config.default.php index f80b54e1..dfccab0a 100644 --- a/config/config.default.php +++ b/config/config.default.php @@ -79,23 +79,13 @@ return [ // local timezone 'timezone' => env('TIMEZONE', 'Europe/Berlin'), - // weigh every shift the same - //'shift_sum_formula' => 'SUM(`end` - `start`)', - // Multiply 'night shifts' and freeloaded shifts (start or end between 2 and 6 exclusive) by 2 - 'shift_sum_formula' => ' - SUM( - (1 + - ( - (HOUR(FROM_UNIXTIME(`Shifts`.`end`)) > 2 AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) < 6) - OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) > 2 AND HOUR(FROM_UNIXTIME(`Shifts`.`start`)) < 6) - OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) <= 2 AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) >= 6) - ) - ) - * (`Shifts`.`end` - `Shifts`.`start`) - * (1 - 3 * `ShiftEntry`.`freeloaded`) - ) - ', + 'night_shifts' => [ + 'enabled' => true, // Disable to weigh every shift the same + 'start' => 2, + 'end' => 6, + 'multiplier' => 2, + ], // Voucher calculation 'voucher_settings' => [ @@ -109,10 +99,10 @@ return [ 'en_US.UTF-8' => 'English', ], - 'default_locale' => env('DEFAULT_LOCALE', 'en_US.UTF-8'), + 'default_locale' => env('DEFAULT_LOCALE', 'en_US.UTF-8'), // Available T-Shirt sizes, set value to null if not available - 'tshirt_sizes' => [ + 'tshirt_sizes' => [ 'S' => 'S', 'S-G' => 'S Girl', 'M' => 'M', diff --git a/includes/model/Stats.php b/includes/model/Stats.php index 20376ac6..c8342d82 100644 --- a/includes/model/Stats.php +++ b/includes/model/Stats.php @@ -128,17 +128,21 @@ function stats_angels_needed_three_hours() } /** - * Returns the number of needed angels for nightshifts (between 2 and 8) + * Returns the number of needed angels for nightshifts (see config) * * @return int|string */ function stats_angels_needed_for_nightshifts() { + $nightShiftsConfig = config('night_shifts'); + $nightStartTime = $nightShiftsConfig['start']; + $nightEndTime = $nightShiftsConfig['end']; + $night_start = parse_date( 'Y-m-d H:i', - date('Y-m-d', time() + 12 * 60 * 60) . ' 02:00' + date('Y-m-d', time() + 12 * 60 * 60) . ' ' . $nightStartTime . ':00' ); - $night_end = $night_start + 6 * 60 * 60; + $night_end = $night_start + ($nightEndTime - $nightStartTime) * 60 * 60; $result = Db::selectOne(" SELECT SUM(`count`) AS `count` FROM ( SELECT diff --git a/includes/model/User_model.php b/includes/model/User_model.php index cbdb5efe..092ddf27 100644 --- a/includes/model/User_model.php +++ b/includes/model/User_model.php @@ -26,8 +26,7 @@ function User_delete($user_id) */ function User_tshirt_score($user) { - $shift_sum_formula = config('shift_sum_formula'); - + $shift_sum_formula = User_get_shifts_sum_query(); $result_shifts = DB::selectOne(' SELECT ROUND((' . $shift_sum_formula . ') / 3600, 2) AS `tshirt_score` FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` @@ -530,3 +529,34 @@ function User_get_eligable_voucher_count(&$user) return $eligable_vouchers; } + +/** + * Generates the query to sum night shifts + * + * @return string + */ +function User_get_shifts_sum_query() +{ + $nightShifts = config('night_shifts'); + if (!$nightShifts['enabled']) { + return 'SUM(`end` - `start`)'; + } + + return sprintf(' + SUM( + (1 + + ( + (HOUR(FROM_UNIXTIME(`Shifts`.`end`)) > %1$d AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) < %2$d) + OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) > %1$d AND HOUR(FROM_UNIXTIME(`Shifts`.`start`)) < %2$d) + OR (HOUR(FROM_UNIXTIME(`Shifts`.`start`)) <= %1$d AND HOUR(FROM_UNIXTIME(`Shifts`.`end`)) >= %2$d) + ) + ) + * (`Shifts`.`end` - `Shifts`.`start`) + * (1 - (%3$d + 1) * `ShiftEntry`.`freeloaded`) + ) + ', + $nightShifts['start'], + $nightShifts['end'], + $nightShifts['multiplier'] + ); +} diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php index 7aeb249f..3a9ba8c4 100644 --- a/includes/pages/admin_active.php +++ b/includes/pages/admin_active.php @@ -16,7 +16,7 @@ function admin_active_title() function admin_active() { $tshirt_sizes = config('tshirt_sizes'); - $shift_sum_formula = config('shift_sum_formula'); + $shift_sum_formula = User_get_shifts_sum_query(); $request = request(); $msg = ''; diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 40e7bfe1..3d5cfd69 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -532,6 +532,7 @@ function User_view( $admin_user_worklog_privilege, $user_worklogs ) { + $nightShiftsConfig = config('night_shifts'); $user_name = htmlspecialchars($user_source['Vorname']) . ' ' . htmlspecialchars($user_source['Name']); $myshifts_table = ''; if ($its_me || $admin_user_privilege) { @@ -619,8 +620,12 @@ function User_view( ]), ($its_me || $admin_user_privilege) ? '

' . __('Shifts') . '

' : '', $myshifts_table, - $its_me ? info( - glyph('info-sign') . __('Your night shifts between 2 and 8 am count twice.'), + ($its_me && $nightShiftsConfig['enabled']) ? info( + glyph('info-sign') . sprintf( + __('Your night shifts between %d and %d am count twice.'), + $nightShiftsConfig['start'], + $nightShiftsConfig['end'] + ), true ) : '', $its_me && count($shifts) == 0 diff --git a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo index a5cbb44f..4909145a 100644 Binary files a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo and b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.mo differ diff --git a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po index f3c6a768..54e819c8 100644 --- a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po +++ b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Engelsystem 2.0\n" "POT-Creation-Date: 2017-12-29 19:01+0100\n" -"PO-Revision-Date: 2018-08-27 22:26+0200\n" +"PO-Revision-Date: 2018-09-17 12:10+0200\n" "Last-Translator: msquare \n" "Language-Team: \n" "Language: de_DE\n" @@ -2768,8 +2768,9 @@ msgid "JSON Export" msgstr "JSON Export" #: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:598 -msgid "Your night shifts between 2 and 8 am count twice." -msgstr "Deine Nachtschichten zwischen 2 und 8 Uhr zählen doppelt." +#, php-format +msgid "Your night shifts between %d and %d am count twice." +msgstr "Deine Nachtschichten zwischen %d und %d Uhr zählen doppelt." #: /Users/msquare/workspace/projects/engelsystem/includes/view/User_view.php:603 #, php-format diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo index 576ea202..5ad48984 100644 Binary files a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo and b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo differ diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po index f49f6333..19b08ad7 100644 --- a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po +++ b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Engelsystem 2.0\n" "POT-Creation-Date: 2017-04-25 05:23+0200\n" -"PO-Revision-Date: 2017-04-25 05:23+0200\n" +"PO-Revision-Date: 2018-09-17 12:11+0200\n" "Last-Translator: samba \n" "Language-Team: \n" "Language: pt_BR\n" @@ -2385,8 +2385,9 @@ msgid "Action" msgstr "Ação" #: includes/view/User_view.php:373 -msgid "Your night shifts between 2 and 8 am count twice." -msgstr "Os seus turnos noturnos entre 2h e 8h contam como dois." +#, php-format +msgid "Your night shifts between %d and %d am count twice." +msgstr "Os seus turnos noturnos entre %dh e %dh contam como dois." #: includes/view/User_view.php:374 #, php-format -- cgit v1.2.3-54-g00ecf