$app['translator.domains'] = array();
// Controller
$app->match('/', function (Request $request) use($app) {
    date_default_timezone_set('Europe/Paris');
    $startDate = new \DateTime('midnight first day of this month');
    $endDate = new \DateTime('23:59:59 last day of +4 months');
    $form = $app['form.factory']->create(new UserType());
    if ($request->getMethod() === 'POST') {
        $form->bindRequest($request);
        if ($form->isValid()) {
            $data = $form->getData();
            $data['startDate'] = $startDate;
            $data['endDate'] = $endDate;
            try {
                $client = new Client($data['login'], $data['password']);
                $events = $client->fetchEvents($data['startDate'], $data['endDate']);
                if (count($events) > 0) {
                    return CalendarResponse::create($events);
                }
                $error = 'No event was found in your calendar.';
            } catch (AuthenticationException $e) {
                $error = 'Your login or password is incorrect. Please try again.';
            } catch (\Exception $e) {
                $error = 'There was an error (cas.tem-tsp.eu or si-etudiants.it-sudparis.eu might be offline). Please try again later.';
            }
            if (isset($error)) {
                $form->addError(new FormError($error));
            }
        }
    }
    return $app['twig']->render('layout.html.twig', array('form' => $form->createView(), 'startDate' => $startDate, 'endDate' => $endDate, 'formHasErrors' => $form->hasErrors()));