public function exportRsvpReport(SS_HTTPRequest $request)
 {
     try {
         $query_string = $request->getVars();
         $search_term = isset($query_string['term']) ? Convert::raw2sql($query_string['term']) : '';
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $ext = 'csv';
         $events = $this->event_repository->searchBySummitTermAndHasRSVP($summit, $search_term);
         if (count($events)) {
             $objPHPExcel = new PHPExcel();
             $objPHPExcel->getProperties()->setCreator("OpenStack");
             $objPHPExcel->getProperties()->setTitle("RSVP per Event Report");
             foreach ($events as $event) {
                 $room_cap = $event->Location() && $event->Location()->is_a('SummitVenueRoom') ? $event->Location()->Capacity : 0;
                 list($regulars, $reg_count) = $this->rsvp_repository->getByEventAndType($event->ID, 'Regular');
                 list($waitlists, $wait_count) = $this->rsvp_repository->getByEventAndType($event->ID, 'WaitList');
                 list($rsvps, $total) = $this->rsvp_repository->getByEventPaged($event->ID, null, null);
                 $rsvp_array_template = array();
                 $headers = array();
                 $active_sheet = $objPHPExcel->createSheet();
                 $active_sheet->setTitle('Event ' . $event->Location());
                 foreach ($event->RSVPTemplate()->Questions()->sort('Order') as $question) {
                     if ($question->Label) {
                         $rsvp_array_template[$question->Label] = '';
                         $headers[] = $question->Label;
                     }
                 }
                 $headers[] = 'Seat Type';
                 $active_sheet->setCellValue('A1', $event->getTitleAndTime());
                 $active_sheet->mergeCells('A1:K1');
                 $active_sheet->setCellValue('A3', 'Room Total:');
                 $active_sheet->setCellValue('B3', $room_cap);
                 $active_sheet->setCellValue('A4', 'RSVP #:');
                 $active_sheet->setCellValue('B4', $reg_count);
                 $active_sheet->setCellValue('C4', 'WaitList #:');
                 $active_sheet->setCellValue('D4', $wait_count);
                 $active_sheet->fromArray($headers, NULL, 'A6');
                 $active_sheet->getStyle("A6:K6")->getFont()->setBold(true);
                 if (count($rsvps)) {
                     foreach ($rsvps as $key => $rsvp) {
                         $row = $key + 7;
                         $rsvp_array = $rsvp_array_template;
                         foreach ($rsvp->Answers() as $answer) {
                             $rsvp_array[$answer->Question()->Label] = $answer->getFormattedAnswer();
                         }
                         $rsvp_array['Seat Type'] = $rsvp->SeatType;
                         $active_sheet->fromArray($rsvp_array, NULL, 'A' . $row);
                     }
                 }
             }
             $filename = count($events) == 1 ? $event->getTitleForUrl() . "-" . date('Ymd') . ".xlsx" : "rsvp_report-" . date('Ymd') . ".xlsx";
             $objPHPExcel->removeSheetByIndex(0);
             $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
             header('Content-type: application/vnd.ms-excel');
             header('Content-Disposition: attachment; filename="' . $filename . '"');
             $objWriter->save('php://output');
             return;
         }
         return $this->notFound();
     } catch (NotFoundEntityException $ex2) {
         SS_Log::log($ex2->getMessage(), SS_Log::WARN);
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $ex->getMessage();
     }
 }