public function run(Request $request) { $token = $this->session->get(self::TOKEN_SESSION_KEY); $userId = $this->session->get(self::USER_ID_SESSION_KEY); if (!$token instanceof AccessToken) { return new RedirectResponse($this->router->generate('authenticate')); } $apiClient = $this->getApiClient($token); $selectedUsers = []; $message = null; $errors = []; if ($request->isMethod('POST')) { $selectedUsers = $request->request->get('users'); $message = $request->request->get('message'); $errors = $this->validate($selectedUsers, $message); if (count($errors) < 1) { $associatedUsers = (new Rudolph())->associateUsers($selectedUsers); $hash = md5(serialize($associatedUsers)); $secretSanta = new SecretSanta($hash, $associatedUsers, $userId, str_replace('```', '', $message)); (new SecretDispatcher($apiClient))->dispatchRemainingMessages($secretSanta); $request->getSession()->set($this->getSecretSantaSessionKey($secretSanta->getHash()), $secretSanta); return new RedirectResponse($this->router->generate('finish', ['hash' => $secretSanta->getHash()])); } } try { $userExtractor = new UserExtractor($apiClient); $users = $userExtractor->extractAll(); $content = $this->twig->render('run.html.twig', ['users' => $users, 'selectedUsers' => $selectedUsers, 'message' => $message, 'errors' => $errors]); return new Response($content); } catch (\RuntimeException $e) { return new RedirectResponse($this->router->generate('authenticate')); } }
public function run(Request $request) { $token = $this->session->get(self::TOKEN_SESSION_KEY); $userId = $this->session->get(self::USER_ID_SESSION_KEY); if (!$token instanceof AccessToken) { return new RedirectResponse($this->router->generate('authenticate')); } $apiClient = new ApiClient($token->getToken()); $selectedUsers = []; $message = ''; $errors = []; if ($request->isMethod('POST')) { $selectedUsers = $request->request->get('users'); $message = $request->request->get('message'); $errors = $this->validate($selectedUsers, $message); if (count($errors) < 1) { $secretDispatcher = new SecretDispatcher($apiClient); $result = $secretDispatcher->dispatchTo($selectedUsers, $message, $userId); $request->getSession()->set($this->getResultSessionKey($result->getHash()), $result); return new RedirectResponse($this->router->generate('finish', ['hash' => $result->getHash()])); } } try { $userExtractor = new UserExtractor($apiClient); $users = $userExtractor->extractAll(); $content = $this->twig->render('run.html.twig', ['users' => $users, 'selectedUsers' => $selectedUsers, 'message' => $message, 'errors' => $errors]); return new Response($content); } catch (\RuntimeException $e) { return new RedirectResponse($this->router->generate('authenticate')); } }