From 641c199c8c0600de8d3b63b5bcf14c5d402c67ab Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Sat, 23 Nov 2019 14:21:46 +0100 Subject: [PATCH] API: allow to set user for timesheet (#1259) --- src/API/TimesheetController.php | 4 +++- src/Form/API/TimesheetApiEditForm.php | 4 ++++ src/Form/TimesheetEditForm.php | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/API/TimesheetController.php b/src/API/TimesheetController.php index c5aaa75b..b55e057a 100644 --- a/src/API/TimesheetController.php +++ b/src/API/TimesheetController.php @@ -307,12 +307,13 @@ class TimesheetController extends BaseApiController $form = $this->createForm(TimesheetApiEditForm::class, $timesheet, [ 'include_rate' => $this->isGranted('edit_rate', $timesheet), 'include_exported' => $this->isGranted('edit_export', $timesheet), + 'include_user' => $this->isGranted('create_other_timesheet'), 'allow_begin_datetime' => $mode->canUpdateTimesWithAPI(), 'allow_end_datetime' => $mode->canUpdateTimesWithAPI(), 'date_format' => self::DATE_FORMAT, ]); - $form->submit($request->request->all()); + $form->submit($request->request->all(), false); if ($form->isValid()) { if (null === $timesheet->getEnd()) { @@ -387,6 +388,7 @@ class TimesheetController extends BaseApiController $form = $this->createForm(TimesheetApiEditForm::class, $timesheet, [ 'include_rate' => $this->isGranted('edit_rate', $timesheet), 'include_exported' => $this->isGranted('edit_export', $timesheet), + 'include_user' => $this->isGranted('edit', $timesheet), 'allow_begin_datetime' => $mode->canUpdateTimesWithAPI(), 'allow_end_datetime' => $mode->canUpdateTimesWithAPI(), 'date_format' => self::DATE_FORMAT, diff --git a/src/Form/API/TimesheetApiEditForm.php b/src/Form/API/TimesheetApiEditForm.php index 80a19cb8..9c90cce9 100644 --- a/src/Form/API/TimesheetApiEditForm.php +++ b/src/Form/API/TimesheetApiEditForm.php @@ -23,6 +23,10 @@ class TimesheetApiEditForm extends TimesheetEditForm parent::buildForm($builder, $options); $builder->remove('metaFields'); + + if ($builder->has('user')) { + $builder->get('user')->setRequired(false); + } } public function configureOptions(OptionsResolver $resolver) diff --git a/src/Form/TimesheetEditForm.php b/src/Form/TimesheetEditForm.php index b0486450..1b1662c1 100644 --- a/src/Form/TimesheetEditForm.php +++ b/src/Form/TimesheetEditForm.php @@ -225,7 +225,7 @@ class TimesheetEditForm extends AbstractType 'group_by' => null, 'query_builder' => function (ProjectRepository $repo) use ($builder, $project, $customer, $isNew) { // is there a better wa to prevent starting a record with a hidden project ? - if ($isNew && !is_object($project)) { + if ($isNew && !empty($project) && (is_int($project) || is_string($project))) { /** @var Project $project */ $project = $repo->find($project); if (null !== $project) {