Joli\SlackSecretSanta\Controller\SantaController::run PHP Method

run() public method

public run ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    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'));
        }
    }