assign existing tag on timesheet import (#1877) (#1883)

This commit is contained in:
synaestic
2020-08-12 21:54:00 +02:00
committed by GitHub
parent 0914ebf737
commit dc9bc8a8ca
2 changed files with 18 additions and 5 deletions

View File

@@ -21,6 +21,7 @@ use App\Importer\UnknownUserException;
use App\Repository\ActivityRepository;
use App\Repository\CustomerRepository;
use App\Repository\ProjectRepository;
use App\Repository\TagRepository;
use App\Repository\TimesheetRepository;
use App\Repository\UserRepository;
use App\Utils\Duration;
@@ -79,6 +80,10 @@ class ImportTimesheetCommand extends Command
* @var UserRepository
*/
private $users;
/**
* @var TagRepository
*/
private $tagRepository;
/**
* @var TimesheetRepository
*/
@@ -116,13 +121,14 @@ class ImportTimesheetCommand extends Command
*/
private $begin = self::DEFAULT_BEGIN;
public function __construct(CustomerRepository $customers, ProjectRepository $projects, ActivityRepository $activities, UserRepository $users, TimesheetRepository $timesheets, FormConfiguration $configuration)
public function __construct(CustomerRepository $customers, ProjectRepository $projects, ActivityRepository $activities, UserRepository $users, TagRepository $tagRepository, TimesheetRepository $timesheets, FormConfiguration $configuration)
{
parent::__construct();
$this->customers = $customers;
$this->projects = $projects;
$this->activities = $activities;
$this->users = $users;
$this->tagRepository = $tagRepository;
$this->timesheets = $timesheets;
$this->configuration = $configuration;
}
@@ -309,11 +315,16 @@ class ImportTimesheetCommand extends Command
$timesheet->setExported((bool) $record['Exported']);
if (!empty($record['Tags'])) {
foreach (explode(',', $record['Tags']) as $tag) {
if (empty($tag)) {
foreach (explode(',', $record['Tags']) as $tagName) {
if (empty($tagName)) {
continue;
}
$timesheet->addTag((new Tag())->setName($tag));
if (null === ($tag = $this->tagRepository->findTagByName($tagName))) {
$tag = (new Tag())->setName($tagName);
}
$timesheet->addTag($tag);
}
}

View File

@@ -14,6 +14,7 @@ use App\Configuration\FormConfiguration;
use App\Repository\ActivityRepository;
use App\Repository\CustomerRepository;
use App\Repository\ProjectRepository;
use App\Repository\TagRepository;
use App\Repository\TimesheetRepository;
use App\Repository\UserRepository;
use Symfony\Bundle\FrameworkBundle\Console\Application;
@@ -39,10 +40,11 @@ class ImportTimesheetCommandTest extends KernelTestCase
$projects = $this->createMock(ProjectRepository::class);
$activities = $this->createMock(ActivityRepository::class);
$users = $this->createMock(UserRepository::class);
$tagRepository = $this->createMock(TagRepository::class);
$timesheets = $this->createMock(TimesheetRepository::class);
$configuration = $this->createMock(FormConfiguration::class);
$this->application->add(new ImportTimesheetCommand($customers, $projects, $activities, $users, $timesheets, $configuration));
$this->application->add(new ImportTimesheetCommand($customers, $projects, $activities, $users, $tagRepository, $timesheets, $configuration));
}
public function testCommandName()