diff --git a/src/Command/SyncIssuesCommand.php b/src/Command/SyncIssuesCommand.php index 480224c9..3310e0c2 100644 --- a/src/Command/SyncIssuesCommand.php +++ b/src/Command/SyncIssuesCommand.php @@ -42,7 +42,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $dataProviders = $this->dataProviderRepository->findAll(); foreach ($dataProviders as $dataProvider) { - $projects = $this->projectRepository->findBy(['include' => true, 'dataProviderId' => $dataProvider->getId()]); + $projects = $this->projectRepository->findBy(['include' => true, 'dataProvider' => $dataProvider]); $numberOfProjects = count($projects); diff --git a/src/Command/SyncWorklogsCommand.php b/src/Command/SyncWorklogsCommand.php index 00fc914b..5a51c288 100644 --- a/src/Command/SyncWorklogsCommand.php +++ b/src/Command/SyncWorklogsCommand.php @@ -42,7 +42,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $dataProviders = $this->dataProviderRepository->findAll(); foreach ($dataProviders as $dataProvider) { - $projects = $this->projectRepository->findBy(['include' => true, 'dataProviderId' => $dataProvider->getId()]); + $projects = $this->projectRepository->findBy(['include' => true, 'dataProvider' => $dataProvider]); $numberOfProjects = count($projects); diff --git a/src/Service/DataSynchronizationService.php b/src/Service/DataSynchronizationService.php index d4dd6548..bb82ebf5 100644 --- a/src/Service/DataSynchronizationService.php +++ b/src/Service/DataSynchronizationService.php @@ -14,6 +14,7 @@ use App\Exception\UnsupportedDataProviderException; use App\Repository\AccountRepository; use App\Repository\ClientRepository; +use App\Repository\DataProviderRepository; use App\Repository\InvoiceRepository; use App\Repository\IssueRepository; use App\Repository\ProjectRepository; @@ -38,6 +39,7 @@ public function __construct( private readonly AccountRepository $accountRepository, private readonly InvoiceRepository $invoiceRepository, private readonly DataProviderService $dataProviderService, + private readonly DataProviderRepository $dataProviderRepository, ) { } @@ -48,6 +50,8 @@ public function __construct( */ public function syncProjects(callable $progressCallback, DataProvider $dataProvider): void { + $dataProviderId = $dataProvider->getId(); + $service = $this->dataProviderService->getService($dataProvider); // Get all projects from ApiService. @@ -55,6 +59,7 @@ public function syncProjects(callable $progressCallback, DataProvider $dataProvi foreach ($allProjectData as $index => $projectDatum) { $project = $this->projectRepository->findOneBy(['projectTrackerId' => $projectDatum->projectTrackerId, 'dataProvider' => $dataProvider]); + $dataProvider = $this->dataProviderRepository->find($dataProviderId); if (!$project) { $project = new Project(); @@ -82,7 +87,7 @@ public function syncProjects(callable $progressCallback, DataProvider $dataProvi } // Only synchronize clients if this is enabled. - if ($dataProvider->isEnableClientSync()) { + if (null != $dataProvider && $dataProvider->isEnableClientSync()) { $projectClientData = $service->getClientDataForProject($projectDatum->projectTrackerId); foreach ($projectClientData as $clientData) { @@ -133,6 +138,8 @@ public function syncProjects(callable $progressCallback, DataProvider $dataProvi */ public function syncAccounts(callable $progressCallback, DataProvider $dataProvider): void { + $dataProviderId = $dataProvider->getId(); + if ($dataProvider->isEnableAccountSync()) { $service = $this->dataProviderService->getService($dataProvider); @@ -144,6 +151,7 @@ public function syncAccounts(callable $progressCallback, DataProvider $dataProvi if (!$account) { $account = new Account(); + $dataProvider = $this->dataProviderRepository->find($dataProviderId); $account->setDataProvider($dataProvider); $account->setProjectTrackerId($accountDatum->projectTrackerId); @@ -177,6 +185,8 @@ public function syncAccounts(callable $progressCallback, DataProvider $dataProvi */ public function syncIssuesForProject(int $projectId, callable $progressCallback = null, DataProvider $dataProvider): void { + $dataProviderId = $dataProvider->getId(); + $service = $this->dataProviderService->getService($dataProvider); $project = $this->projectRepository->find($projectId); @@ -196,6 +206,7 @@ public function syncIssuesForProject(int $projectId, callable $progressCallback $startAt = 0; do { + $dataProvider = $this->dataProviderRepository->find($dataProviderId); $project = $this->projectRepository->find($projectId); if (!$project) { @@ -260,6 +271,8 @@ public function syncIssuesForProject(int $projectId, callable $progressCallback */ public function syncWorklogsForProject(int $projectId, callable $progressCallback = null, DataProvider $dataProvider): void { + $dataProviderId = $dataProvider->getId(); + $service = $this->dataProviderService->getService($dataProvider); $project = $this->projectRepository->find($projectId); @@ -288,6 +301,9 @@ public function syncWorklogsForProject(int $projectId, callable $progressCallbac if (!$worklog) { $worklog = new Worklog(); + + $dataProvider = $this->dataProviderRepository->find($dataProviderId); + $worklog->setDataProvider($dataProvider); $this->entityManager->persist($worklog); @@ -300,7 +316,7 @@ public function syncWorklogsForProject(int $projectId, callable $progressCallbac $worklog->setProjectTrackerIssueId($worklogDatum->projectTrackerIssueId); $worklog->setTimeSpentSeconds($worklogDatum->timeSpentSeconds); - if (null !== $worklog->getProjectTrackerIssueId()) { + if (null != $worklog->getProjectTrackerIssueId()) { $issue = $this->issueRepository->findOneBy(['projectTrackerId' => $worklog->getProjectTrackerIssueId()]); $worklog->setIssue($issue); }