support custom fields in timesheet batch update (#2043)

This commit is contained in:
Kevin Papst
2020-10-21 17:10:11 +02:00
committed by GitHub
parent 167a826f50
commit 6ed7ee76e7
25 changed files with 392 additions and 105 deletions

View File

@@ -270,6 +270,15 @@ abstract class TimesheetAbstractController extends AbstractController
$dto->setEntities($form->getData()->getEntities());
}
// using a new timesheet to make sure we ONLY use meta-fields which are registered via events
$fake = new Timesheet();
$event = new TimesheetMetaDefinitionEvent($fake);
$this->dispatcher->dispatch($event);
foreach ($fake->getMetaFields() as $field) {
$dto->setMetaField(clone $field);
}
$form = $this->getMultiUpdateForm($dto);
$form->handleRequest($request);
@@ -342,6 +351,17 @@ abstract class TimesheetAbstractController extends AbstractController
$timesheet->setHourlyRate($dto->getHourlyRate());
$execute = true;
}
foreach ($dto->getUpdateMeta() as $metaName) {
if (null !== ($metaField = $dto->getMetaField($metaName))) {
if (null !== ($timesheetMeta = $timesheet->getMetaField($metaName))) {
$timesheetMeta->setValue($metaField->getValue());
} else {
$timesheet->setMetaField(clone $metaField);
}
$execute = true;
}
}
}
if ($execute) {