From 1e8f0c484588882e01bc173f7f60e2cf1376f790 Mon Sep 17 00:00:00 2001 From: msquare Date: Wed, 27 Dec 2017 12:24:55 +0100 Subject: fixes #208, fixes #310: T-Shirt Scoreā„¢ should be shown on the user view page below your shifts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/controller/users_controller.php | 6 ++++-- includes/model/User_model.php | 24 ++++++++++++++++++++++++ includes/view/User_view.php | 24 +++++++++++++++++------- 3 files changed, 45 insertions(+), 9 deletions(-) (limited to 'includes') diff --git a/includes/controller/users_controller.php b/includes/controller/users_controller.php index e206176f..ae297851 100644 --- a/includes/controller/users_controller.php +++ b/includes/controller/users_controller.php @@ -220,7 +220,7 @@ function user_controller() ); } } - + if ($user_source['api_key'] == '') { User_reset_api_key($user_source, false); } @@ -234,7 +234,9 @@ function user_controller() User_angeltypes($user_source), User_groups($user_source), $shifts, - $user['UID'] == $user_source['UID'] + $user['UID'] == $user_source['UID'], + User_tshirt_score($user_source), + in_array('admin_active', $privileges) ) ]; } diff --git a/includes/model/User_model.php b/includes/model/User_model.php index 33fca639..fa24aac1 100644 --- a/includes/model/User_model.php +++ b/includes/model/User_model.php @@ -17,6 +17,30 @@ function User_delete($user_id) DB::delete('DELETE FROM `User` WHERE `UID`=?', [$user_id]); } +/** + * Returns the tshirt score (number of hours counted for tshirt). + * Accounts only ended shifts. + * + * @param array[] $user + */ +function User_tshirt_score($user) { + $shift_sum_formula = config('shift_sum_formula'); + + $result = DB::selectOne(' + SELECT ROUND((' . $shift_sum_formula . ') / 3600, 2) AS `tshirt_score` + FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` + LEFT JOIN `Shifts` ON `ShiftEntry`.`SID` = `Shifts`.`SID` + WHERE `User`.`UID` = ? + AND `Shifts`.`end` < ? + GROUP BY `User`.`UID` + ',[ + $user['UID'], + time() + ]); + + return $result['tshirt_score']; +} + /** * Update user. * diff --git a/includes/view/User_view.php b/includes/view/User_view.php index a80eb096..7a36aafe 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -401,16 +401,14 @@ function User_view_myshift($shift, $user_source, $its_me) * @param bool $its_me * @return array */ -function User_view_myshifts($shifts, $user_source, $its_me) +function User_view_myshifts($shifts, $user_source, $its_me, $tshirt_score, $tshirt_admin) { $myshifts_table = []; $timesum = 0; foreach ($shifts as $shift) { $myshifts_table[] = User_view_myshift($shift, $user_source, $its_me); - if ($shift['freeloaded']) { - $timesum += (-2 * ($shift['end'] - $shift['start'])); - } else { + if (!$shift['freeloaded']) { $timesum += ($shift['end'] - $shift['start']); } } @@ -418,12 +416,22 @@ function User_view_myshifts($shifts, $user_source, $its_me) if (count($myshifts_table) > 0) { $myshifts_table[] = [ 'date' => '' . _('Sum:') . '', - 'time' => '' . round($timesum / 3600, 1) . ' h', + 'time' => '' . round($timesum / 3600, 2) . ' h', 'room' => '', 'shift_info' => '', 'comment' => '', 'actions' => '' ]; + if($its_me || $tshirt_admin) { + $myshifts_table[] = [ + 'date' => '' . _('Your t-shirt score') . '™:', + 'time' => '' . round($tshirt_score, 2) . ' h', + 'room' => '', + 'shift_info' => '', + 'comment' => '', + 'actions' => '' + ]; + } } return $myshifts_table; } @@ -438,12 +446,14 @@ function User_view_myshifts($shifts, $user_source, $its_me) * @param array[] $user_groups * @param array[] $shifts * @param bool $its_me + * @param int $tshirt_score + * @param bool $tshirt_admin * @return string */ -function User_view($user_source, $admin_user_privilege, $freeloader, $user_angeltypes, $user_groups, $shifts, $its_me) +function User_view($user_source, $admin_user_privilege, $freeloader, $user_angeltypes, $user_groups, $shifts, $its_me, $tshirt_score, $tshirt_admin) { $user_name = htmlspecialchars($user_source['Vorname']) . ' ' . htmlspecialchars($user_source['Name']); - $myshifts_table = User_view_myshifts($shifts, $user_source, $its_me); + $myshifts_table = User_view_myshifts($shifts, $user_source, $its_me, $tshirt_score, $tshirt_admin); return page_with_title( ' ' -- cgit v1.2.3-54-g00ecf