diff options
Diffstat (limited to 'includes/model/UserWorkLog_model.php')
-rw-r--r-- | includes/model/UserWorkLog_model.php | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/includes/model/UserWorkLog_model.php b/includes/model/UserWorkLog_model.php new file mode 100644 index 00000000..36442943 --- /dev/null +++ b/includes/model/UserWorkLog_model.php @@ -0,0 +1,123 @@ +<?php +use Engelsystem\Database\Db; + +/** + * Load a single work log entry. + * + * @param int $user_worklog_id + */ +function UserWorkLog($user_worklog_id) +{ + return Db::selectOne("SELECT * FROM `UserWorkLog` WHERE `id`=?", [ + $user_worklog_id + ]); +} + +/** + * Returns all work log entries for a user. + * + * @param User $user + */ +function UserWorkLogsForUser($user) +{ + return Db::select("SELECT * FROM `UserWorkLog` WHERE `user_id`=? ORDER BY `created_timestamp`", [ + $user['UID'] + ]); +} + +/** + * Delete a work log entry. + * + * @param UserWorkLog $userWorkLog + */ +function UserWorkLog_delete($userWorkLog) +{ + $user_source = User($userWorkLog['user_id']); + $result = Db::delete("DELETE FROM `UserWorkLog` WHERE `id`=?", [ + $userWorkLog['id'] + ]); + + engelsystem_log(sprintf('Delete work log for %s, %s hours, %s', User_Nick_render($user_source), $userWorkLog['work_hours'], $userWorkLog['comment'])); + + return $result; +} + +/** + * Update work log entry (only work hours and comment) + * + * @param UserWorkLog $userWorkLog + */ +function UserWorkLog_update($userWorkLog) +{ + $user_source = User($userWorkLog['user_id']); + + $result = Db::update("UPDATE `UserWorkLog` SET + `work_timestamp`=?, + `work_hours`=?, + `comment`=? + WHERE `id`=?", [ + $userWorkLog['work_timestamp'], + $userWorkLog['work_hours'], + $userWorkLog['comment'], + $userWorkLog['id'] + ]); + + engelsystem_log(sprintf('Updated work log for %s, %s hours, %s', User_Nick_render($user_source), $userWorkLog['work_hours'], $userWorkLog['comment'])); + + return $result; +} + +/** + * Create a new work log entry + * + * @param UserWorkLog $userWorkLog + */ +function UserWorkLog_create($userWorkLog) +{ + global $user; + + $user_source = User($userWorkLog['user_id']); + + $result = Db::insert("INSERT INTO `UserWorkLog` ( + `user_id`, + `work_timestamp`, + `work_hours`, + `comment`, + `created_user_id`, + `created_timestamp` + ) + VALUES (?, ?, ?, ?, ?, ?)", [ + $userWorkLog['user_id'], + $userWorkLog['work_timestamp'], + $userWorkLog['work_hours'], + $userWorkLog['comment'], + $user['UID'], + time() + ]); + + engelsystem_log(sprintf('Added work log entry for %s, %s hours, %s', User_Nick_render($user_source), $userWorkLog['work_hours'], $userWorkLog['comment'])); + + return $result; +} + +/** + * New user work log entry + * + * @param array[] $user + */ +function UserWorkLog_new($user) +{ + $work_date = parse_date('Y-m-d H:i', date('Y-m-d 00:00', time())); + $event_config = EventConfig(); + if (! empty($event_config['buildup_start_date'])) { + $work_date = parse_date('Y-m-d H:i', date('Y-m-d 00:00', $event_config['buildup_start_date'])); + } + return [ + 'user_id' => $user['UID'], + 'work_timestamp' => $work_date, + 'work_hours' => 0, + 'comment' => '' + ]; +} + +?>
\ No newline at end of file |