machineHttpClient = $machineHttpClient; $this->remoteEventConverter = $remoteEventConverter; $this->tokenStorage = $tokenStorage; $this->urlGenerator = $urlGenerator; $this->userHttpClient = $userHttpClient; } public function getDefaultUserCalendar(string $idOrUserPrincipalName): ?array { $value = $this->machineHttpClient->request('GET', "users/{$idOrUserPrincipalName}/calendars", [ 'query' => ['$filter' => 'isDefaultCalendar eq true'], ])->toArray()['value']; return $value[0] ?? null; } public function getMakeReadyResponse(string $returnPath): Response { return new RedirectResponse($this->urlGenerator ->generate('chill_calendar_remote_connect_azure', ['returnPath' => $returnPath])); } public function getUserByEmail(string $email): ?array { $value = $this->machineHttpClient->request('GET', 'users', [ 'query' => ['$filter' => "mail eq '{$email}'"], ])->toArray()['value']; return $value[0] ?? null; } public function isReady(): bool { return $this->tokenStorage->hasToken(); } public function listEventsForUser(User $user, DateTimeImmutable $startDate, DateTimeImmutable $endDate): array { $bareEvents = $this->userHttpClient->request( 'GET', 'users/c4f1fcc7-10e4-4ea9-89ac-c89a00e0a51a/calendarView', [ 'query' => [ 'startDateTime' => $startDate->format(DateTimeImmutable::ATOM), 'endDateTime' => $endDate->format(DateTimeImmutable::ATOM), '$select' => 'id,subject,start,end', ], ] )->toArray(); return array_map(function ($item) { return $this->remoteEventConverter->convertToRemote($item); }, $bareEvents['value']); } }