diff --git a/src/Controller/QuickEntryController.php b/src/Controller/QuickEntryController.php index 9f775458..50e57183 100644 --- a/src/Controller/QuickEntryController.php +++ b/src/Controller/QuickEntryController.php @@ -118,7 +118,10 @@ class QuickEntryController extends AbstractController ]; } - $beginTime = $factory->createDateTime($this->configuration->getTimesheetDefaultBeginTime())->format('H:i:s'); + $defaultBegin = $factory->createDateTime($this->configuration->getTimesheetDefaultBeginTime()); + $defaultHour = (int) $defaultBegin->format('H'); + $defaultMinute = (int) $defaultBegin->format('i'); + $defaultBegin->setTime($defaultHour, $defaultMinute, 0, 0); // fill all rows and columns to make sure we do not have missing records /** @var QuickEntryModel[] $models */ @@ -132,7 +135,7 @@ class QuickEntryController extends AbstractController $tmp->setProject($row['project']); $tmp->setActivity($row['activity']); $tmp->setBegin(clone $day['day']); - $tmp->getBegin()->modify($beginTime); + $tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0); $model->addTimesheet($tmp); } else { $model->addTimesheet($day['entry']); @@ -147,7 +150,7 @@ class QuickEntryController extends AbstractController $tmp = new Timesheet(); $tmp->setUser($user); $tmp->setBegin(clone $day['day']); - $tmp->getBegin()->modify($beginTime); + $tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0); $empty->addTimesheet($tmp); } @@ -161,7 +164,7 @@ class QuickEntryController extends AbstractController $tmp = new Timesheet(); $tmp->setUser($user); $tmp->setBegin(clone $day['day']); - $tmp->getBegin()->modify($beginTime); + $tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0); $model->addTimesheet($tmp); } @@ -204,26 +207,26 @@ class QuickEntryController extends AbstractController } } - if ($this->isGranted('delete_own_timesheet') && \count($deleteTimesheets) > 0) { - try { + try { + $saved = false; + if (\count($deleteTimesheets) > 0 && $this->isGranted('delete_own_timesheet')) { $this->timesheetService->deleteMultipleTimesheets($deleteTimesheets); - - return $this->redirectToRoute('quick_entry', ['begin' => $begin->format('Y-m-d')]); - } catch (\Exception $ex) { - $this->flashError('action.delete.error'); - $this->logException($ex); + $saved = true; } - } - if (\count($saveTimesheets) > 0) { - try { + if (\count($saveTimesheets) > 0) { $this->timesheetService->updateMultipleTimesheets($saveTimesheets); + $saved = true; + } + + if ($saved) { + $this->flashSuccess('action.update.success'); return $this->redirectToRoute('quick_entry', ['begin' => $begin->format('Y-m-d')]); - } catch (\Exception $ex) { - $this->flashError('action.update.error'); - $this->logException($ex); } + } catch (\Exception $ex) { + $this->flashError('action.update.error'); + $this->logException($ex); } } diff --git a/src/Form/Type/QuickEntryTimesheetType.php b/src/Form/Type/QuickEntryTimesheetType.php index 0fbdeb5d..e5240c1d 100644 --- a/src/Form/Type/QuickEntryTimesheetType.php +++ b/src/Form/Type/QuickEntryTimesheetType.php @@ -81,7 +81,7 @@ class QuickEntryTimesheetType extends AbstractType try { if (null !== $duration) { $end = clone $data->getBegin(); - $end->modify('+ ' . $duration . ' seconds'); + $end->modify('+ ' . abs($duration) . ' seconds'); $data->setEnd($end); } else { $data->setDuration(null);