public function create() { $messages = array(); if (!preg_match('#^[0-9]{2}/[0-9]{2}/[0-9]{4}$#', Input::get('date'))) { $messages['date'] = 'La date doit être renseignée'; } if (!preg_match('#^[0-9]{2}:[0-9]{2}$#', Input::get('start'))) { $messages['start'] = 'L\'heure de début doit être renseignée'; } if (!preg_match('#^[0-9]{2}:[0-9]{2}$#', Input::get('end'))) { $messages['end'] = 'L\'heure de fin doit être renseignée'; } $rooms = Input::get('rooms'); if (empty($rooms)) { $messages['rooms'] = 'La salle doit être renseignée'; } else { // $start = newDateTime(Input::get('date'), Input::get('start')); // $end = newDateTime(Input::get('date'), Input::get('start')); // $end->modify(sprintf('+%d hours', getDuration(Input::get('start'), Input::get('end')))); // // foreach (Input::get('rooms') as $ressource_id) { // 'SELECT count(*) FROM booking_item WHERE // start_at < :start AND DATE_ADD() // //' // BookingItem::whereRessourceId($ressource_id) // ->where('start_at', '<', $start->format('Y-m-d H:i:s')) // ->where('start_at', '<', $start->format('Y-m-d H:i:s')) // ; // } } $start_at = newDateTime(Input::get('date'), Input::get('start')); if (!Auth::user()->isSuperAdmin() && $start_at->format('Y-m-d H:i:s') < (new \DateTime())->format('Y-m-d H:i:s')) { $messages['start'] = 'Vous ne pouvez pas réserver une salle dans le passé'; } if (count($messages)) { return Response::json(array('status' => 'KO', 'messages' => $messages)); } $id = Input::get('id'); $booking_items = array(); if ($id) { $booking_item = BookingItem::whereId($id)->with('booking')->first(); if (!$booking_item) { App::abort(404); } $booking = $booking_item->booking; if (!Auth::user()->isSuperAdmin() && Auth::id() != $booking->user_id) { App::abort(403); } foreach ($booking->items()->where('start_at', '=', $booking_item->start_at)->get() as $item) { $booking_items[$item->ressource_id] = $item; } $is_new = false; } else { $booking = new Booking(); $is_new = true; } $booking->title = Input::get('title'); $booking->content = Input::get('description'); if (Auth::user()->isSuperAdmin()) { $booking->user_id = Input::get('user_id'); if (empty($booking->user_id)) { $booking->user_id = Auth::id(); } } else { $booking->user_id = Auth::id(); } $booking->is_private = Input::get('is_private', false); $booking->save(); $result = array(); foreach (Input::get('rooms') as $ressource_id) { if (isset($booking_items[$ressource_id])) { $booking_item = $booking_items[$ressource_id]; unset($booking_items[$ressource_id]); } else { $booking_item = new BookingItem(); $booking_item->booking_id = $booking->id; $booking_item->ressource_id = $ressource_id; } $booking_item->start_at = $start_at; $booking_item->duration = getDuration(Input::get('start'), Input::get('end')); $booking_item->is_open_to_registration = Input::get('is_open_to_registration', false); $booking_item->save(); $result[] = $booking_item->toJsonEvent(); } foreach ($booking_items as $booking_item) { $booking_item->delete(); } try { $this->sendNewBookingNotification($booking, $is_new); } catch (\Exception $e) { } return Response::json(array('status' => 'OK', 'events' => $result)); }
function saveToCalendar($gig, $calendartype = 'private') { // print_r($gig_details = getGigTextDescription($gig, 'calendar')); exit(); // return; //FIXME global $calendars; extract($calendars[$calendartype]); if ($calendartype == 'public' && !$gig['public_description']) { return; } $cal = getGoogleClient(); $event = new Google_Event(); $gig_details = ""; $title = $gig['title']; if ($calendartype == 'private') { if ($gig['type'] == 'gig') { $prefix = 'Proposed'; if ($gig['approved'] == 1) { $prefix = 'Gig'; } else { if ($gig['approved'] == -1) { $prefix = 'Declined'; } } $title = "{$prefix}: {$title}"; } else { if ($gig['tactical']) { $members = gigs_fetchMembers(); $title .= ": " . $members[$gig['tactical']]['name']; } } $gig_details = getGigTextDescription($gig, 'calendar'); if (!$gig[$start_field]) { $start_field = 'band_start'; } } else { $gig_details = $gig['public_description']; } $event->setSummary($title); $event->setLocation($gig['location']); $event->setStart(newDateTime($gig['date'], $gig[$start_field])); $event->setEnd(newDateTime($gig['date'], $gig[$end_field])); $event->setDescription($gig_details); $createdEvent = ''; try { if ($gig[$id_field]) { $event->setSequence(time()); $createdEvent = $cal->events->update($calendar_id, $gig[$id_field], $event); } else { $createdEvent = $cal->events->insert($calendar_id, $event); $google_gig_id = $createdEvent->getId(); dbwrite("update gigs set {$id_field} = '" . dbEscape($google_gig_id) . "' where gig_id = {$gig['gig_id']}"); } } catch (Exception $e) { //trigger_error('Error creating google calendar entry: '.$e->getMessage(), E_USER_ERROR); } if (!$createdEvent) { //trigger_error('Error creating google calendar entry', E_USER_ERROR); } }