From 8260fa56e1cd984cd433d890c0a3316714b8b059 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Thu, 28 Feb 2019 17:07:09 +0000 Subject: [PATCH] Wrote createTimesheet function. --- WEB-INF/lib/ttTimesheetHelper.class.php | 81 +++++++------------------ WEB-INF/templates/footer.tpl | 2 +- timesheet_add.php | 5 +- 3 files changed, 24 insertions(+), 64 deletions(-) diff --git a/WEB-INF/lib/ttTimesheetHelper.class.php b/WEB-INF/lib/ttTimesheetHelper.class.php index 2ba87abc..e65a6216 100644 --- a/WEB-INF/lib/ttTimesheetHelper.class.php +++ b/WEB-INF/lib/ttTimesheetHelper.class.php @@ -54,59 +54,17 @@ class ttTimesheetHelper { return false; } - // insert function inserts a new timesheet into database. - static function insert($fields) + // createTimesheet function creates a new timesheet. + static function createTimesheet($fields) { - // First, we obtain report items. - - // Obtain session bean with report attributes. - $bean = new ActionForm('reportBean', new Form('reportForm')); - $options = ttReportHelper::getReportOptions($bean); - $report_items = ttReportHelper::getItems($options); - - // Prepare ids for time and expense items, at the same time checking - // if we can proceed with creating a timesheet. - $canCreateTimesheet = true; - $first_user_id = null; - - foreach ($report_items as $report_item) { - // Check user id. - if (!$first_user_id) - $first_user_id = $report_item['user_id']; - else { - if ($report_item['user_id'] != $first_user_id) { - // We have items for multiple users. - $canCreateTimesheet = false; - break; - } - } - // Check timesheet id. - if ($report_item['timesheet_id']) { - // We have an item already assigned to a timesheet. - $canCreateTimesheet = false; - break; - } - if ($report_item['type'] == 1) - $time_ids[] = $report_item['id']; - elseif ($report_item['type'] == 2) - $expense_ids[] = $report_item['id']; - } - if (!$canCreateTimesheet) return false; - - // Make comma-seperated lists of ids for sql. - if ($time_ids) - $comma_separated_time_ids = implode(',', $time_ids); - if ($expense_ids) - $comma_separated_expense_ids = implode(',', $expense_ids); - // Create a new timesheet entry. global $user; $mdb2 = getConnection(); + $user_id = $user->getUser(); $group_id = $user->getGroup(); $org_id = $user->org_id; - $user_id = $fields['user_id']; $client_id = $fields['client_id']; $name = $fields['name']; $submitter_comment = $fields['comment']; @@ -120,22 +78,25 @@ class ttTimesheetHelper { $last_id = $mdb2->lastInsertID('tt_timesheets', 'id'); // Associate time items with timesheet. - if ($comma_separated_time_ids) { - $sql = "update tt_log set timesheet_id = $last_id". - " where id in ($comma_separated_time_ids) and group_id = $group_id and org_id = $org_id"; - $affected = $mdb2->exec($sql); - if (is_a($affected, 'PEAR_Error')) - return false; - } + if (isset($fields['client'])) $client_id = (int) $fields['client_id']; + if (isset($fields['project_id'])) $project_id = (int) $fields['project_id']; + // sql parts. + if ($client_id) $client_part = " and client_id = $client_id"; + if ($project_id) $project_part = " and project_id = $project_id"; - // Associate expense items with timesheet. - if ($comma_separated_expense_ids) { - $sql = "update tt_expense_items set timesheet_id = $last_id". - " where id in ($comma_separated_expense_ids) and group_id = $group_id and org_id = $org_id"; - $affected = $mdb2->exec($sql); - if (is_a($affected, 'PEAR_Error')) - return false; - } + $start_date = new DateAndTime($user->date_format, $fields['start_date']); + $start = $start_date->toString(DB_DATEFORMAT); + + $end_date = new DateAndTime($user->date_format, $fields['end_date']); + $end = $end_date->toString(DB_DATEFORMAT); + + $sql = "update tt_log set timesheet_id = $last_id". + " where status = 1 $client_part $project_part and timesheet_id is null". + " and date >= ".$mdb2->quote($start)." and date <= ".$mdb2->quote($end). + " and user_id = $user_id and group_id = $group_id and org_id = $org_id"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) + return false; return $last_id; } diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index ec180725..5499b12e 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.46.4793 | Copyright © Anuko | +  Anuko Time Tracker 1.18.46.4794 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/timesheet_add.php b/timesheet_add.php index 4dd1afae..c450695e 100644 --- a/timesheet_add.php +++ b/timesheet_add.php @@ -90,12 +90,11 @@ if ($request->isPost()) { // Finished validating user input. if ($err->no()) { - /* - if (ttTimesheetHelper::insert($fields)) { + if (ttTimesheetHelper::createTimesheet($fields)) { header('Location: timesheets.php'); exit(); } else - $err->add($i18n->get('error.db'));*/ + $err->add($i18n->get('error.db')); } } // isPost -- 2.20.1