/**
  * Generates an ICS file.
  *
  * @since 1.0.0
  *
  * @param iCalendar $iCalendar
  */
 public static function createIcsFile(iCalendar $iCalendar)
 {
     /** @var string $fileName */
     $fileName = $iCalendar->getSlug() . '.ics';
     header("Content-Type: text/Calendar; charset=utf-8");
     header("Content-Disposition: inline; filename={$fileName}");
     echo "BEGIN:VCALENDAR\n";
     echo "VERSION:2.0\n";
     /** @var string $organizerName */
     $organizerName = $iCalendar->getOrganizerName();
     echo "PRODID:-//{$organizerName}//NONSGML {$iCalendar->getEventName()}//EN\n";
     echo "METHOD:REQUEST\n";
     echo "BEGIN:VEVENT\n";
     echo "UID:" . date('Ymd') . 'T' . date('His') . "-" . rand();
     if (!empty($organizerName)) {
         echo "-{$organizerName}\n";
     }
     echo "DTSTAMP:" . date('Ymd') . 'T' . date('His') . "\n";
     echo "ORGANIZER:CN={$organizerName}:MAILTO:{$iCalendar->getOrganizerEmail()}\n";
     echo "DTSTART:{$iCalendar->getEventStart()}\n";
     echo "DTEND:{$iCalendar->getEventEnd()}\n";
     echo "LOCATION:{$iCalendar->getEventLocation()}\n";
     echo "SUMMARY:{$iCalendar->getEventName()}\n";
     echo "DESCRIPTION: {$iCalendar->getEventDescription()}\n";
     echo "END:VEVENT\n";
     echo "END:VCALENDAR\n";
 }