/**
  * Parse bookings
  * @param int $a_groupid
  * @param ilDate $start
  * @param ilDate $end
  *
  * throws ilViteroConnectionException
  */
 public function parse($a_groupid, ilDateTime $start, ilDateTime $end)
 {
     $booking_list = array();
     try {
         $con = new ilViteroBookingSoapConnector();
         $bookings = $con->getByGroupAndDate($a_groupid, $start, $end);
     } catch (Exception $e) {
         throw $e;
     }
     $booking_arr = array();
     if (is_object($bookings->booking)) {
         $booking_arr = array($bookings->booking);
     } elseif (is_array($bookings->booking)) {
         $booking_arr = $bookings->booking;
     }
     $counter = 0;
     foreach ($booking_arr as $booking) {
         $fstart = ilViteroUtils::parseSoapDate($booking->start);
         $fend = ilViteroUtils::parseSoapDate($booking->end);
         $duration = $fend->get(IL_CAL_UNIX) - $fstart->get(IL_CAL_UNIX);
         foreach (ilViteroUtils::calculateBookingAppointments($start, $end, $booking) as $dl) {
             $booking_list[$counter]['rec'] = $booking->repetitionpattern;
             $booking_list[$counter]['id'] = $booking->bookingid;
             $booking_list[$counter]['start'] = $dl;
             $booking_list[$counter]['startt'] = $dl->get(IL_CAL_UNIX);
             $bend = clone $dl;
             $bend->setDate($dl->get(IL_CAL_UNIX) + $duration, IL_CAL_UNIX);
             $booking_list[$counter]['end'] = $bend;
             if ($booking->cafe) {
                 $booking_list[$counter]['start'] = new ilDate($booking_list[$counter]['startt'], IL_CAL_UNIX);
                 $booking_list[$counter]['time'] = ilDatePresentation::formatDate($booking_list[$counter]['start']);
             } else {
                 $booking_list[$counter]['time'] = ilDatePresentation::formatPeriod($booking_list[$counter]['start'], $booking_list[$counter]['end']);
             }
             $booking_list[$counter]['duration'] = ilFormat::_secondsToString($booking_list[$counter]['end']->get(IL_CAL_UNIX) - $booking_list[$counter]['start']->get(IL_CAL_UNIX), false);
             if ($booking->repetitionpattern) {
                 $repend = ilViteroUtils::parseSoapDate($booking->repetitionenddate);
                 $booking_list[$counter]['ends'] = ilDatePresentation::formatDate(new ilDate($repend->get(IL_CAL_UNIX), IL_CAL_UNIX));
             }
             $counter++;
         }
     }
     $this->setMaxCount(count($booking_list));
     $this->setData($booking_list);
 }