pre-populate tags for new timesheet records via request params (#930)

This commit is contained in:
Toby Batch
2019-07-09 15:32:40 +01:00
committed by Kevin Papst
parent 6de1a55d73
commit b833e1ce27
5 changed files with 26 additions and 7 deletions

View File

@@ -165,7 +165,7 @@ abstract class TimesheetAbstractController extends AbstractController
* @param ActivityRepository $activityRepository
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
protected function create(Request $request, string $renderTemplate, ProjectRepository $projectRepository, ActivityRepository $activityRepository)
protected function create(Request $request, string $renderTemplate, ProjectRepository $projectRepository, ActivityRepository $activityRepository, TagRepository $tagRepository)
{
$entry = new Timesheet();
$entry->setUser($this->getUser());
@@ -181,6 +181,18 @@ abstract class TimesheetAbstractController extends AbstractController
$entry->setActivity($activity);
}
if ($request->query->get('tags')) {
$tagNames = explode(',', $request->query->get('tags'));
foreach ($tagNames as $tagName) {
$tag = $tagRepository->findOneByName($tagName);
if (!$tag) {
$tag = new Tag();
$tag->setName($tagName);
}
$entry->addTag($tag);
}
}
$event = new TimesheetMetaDefinitionEvent($entry);
$this->dispatcher->dispatch(TimesheetMetaDefinitionEvent::class, $event);

View File

@@ -12,6 +12,7 @@ namespace App\Controller;
use App\Entity\Timesheet;
use App\Repository\ActivityRepository;
use App\Repository\ProjectRepository;
use App\Repository\TagRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
@@ -70,9 +71,9 @@ class TimesheetController extends TimesheetAbstractController
* @param ActivityRepository $activityRepository
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
public function createAction(Request $request, ProjectRepository $projectRepository, ActivityRepository $activityRepository)
public function createAction(Request $request, ProjectRepository $projectRepository, ActivityRepository $activityRepository, TagRepository $tagRepository)
{
return $this->create($request, 'timesheet/edit.html.twig', $projectRepository, $activityRepository);
return $this->create($request, 'timesheet/edit.html.twig', $projectRepository, $activityRepository, $tagRepository);
}
/**

View File

@@ -13,6 +13,7 @@ use App\Entity\Timesheet;
use App\Form\TimesheetAdminEditForm;
use App\Repository\ActivityRepository;
use App\Repository\ProjectRepository;
use App\Repository\TagRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
@@ -70,9 +71,9 @@ class TimesheetTeamController extends TimesheetAbstractController
* @param ActivityRepository $activityRepository
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
public function createAction(Request $request, ProjectRepository $projectRepository, ActivityRepository $activityRepository)
public function createAction(Request $request, ProjectRepository $projectRepository, ActivityRepository $activityRepository, TagRepository $tagRepository)
{
return $this->create($request, 'timesheet-team/edit.html.twig', $projectRepository, $activityRepository);
return $this->create($request, 'timesheet-team/edit.html.twig', $projectRepository, $activityRepository, $tagRepository);
}
protected function getCreateFormClassName(): string