/**
  * Display attendee summary
  *
  * @param Date $selectedDate Selected date
  * @return void
  */
 public function indexAction(Date $selectedDate = null)
 {
     $dates = [];
     $now = time();
     /** @var Date $date */
     foreach ($this->dateRepository->findAll() as $date) {
         $dates[] = $date;
         if ($selectedDate === null && $date->getStart()->format('U') >= $now) {
             $selectedDate = $date;
         }
     }
     $this->view->assign('dates', $dates);
     $this->view->assign('selectedDate', $selectedDate);
     $chartSeries = [];
     $genderSeries = [];
     $this->createChartSeries($chartSeries, $genderSeries, 'ninjas', $selectedDate->getNinjas());
     $this->createChartSeries($chartSeries, $genderSeries, 'helpers', $selectedDate->getHelpers());
     $this->createChartSeries($chartSeries, $genderSeries, 'mentors', $selectedDate->getMentors());
     ksort($chartSeries);
     $ages = range(min(array_keys($chartSeries)), max(array_keys($chartSeries)));
     $this->view->assign('ages', json_encode($ages));
     $completeSeries = ['ninjas' => array_fill_keys($ages, 0), 'helpers' => array_fill_keys($ages, 0), 'mentors' => array_fill_keys($ages, 0)];
     foreach ($chartSeries as $age => $data) {
         foreach ($data as $type => $value) {
             $completeSeries[$type][$age] = $value;
         }
     }
     foreach ($completeSeries as $type => $data) {
         $completeSeries[$type] = json_encode(array_values($data));
     }
     $this->view->assign('chartSeries', $completeSeries);
     foreach ($genderSeries as $type => $data) {
         ksort($genderSeries[$type]);
     }
     $this->view->assign('genderSeries', $genderSeries);
     $this->view->assign('now', new \DateTime('now'));
 }