Пример #1
0
 /**
  * Display a listing of the Events.
  *
  * @param EventRequest $request
  * @return \Illuminate\Http\JsonResponse
  */
 public function index(EventRequest $request)
 {
     $relations = $this->prepareRelations($request->get('with'));
     $events = Event::withRelations($relations)->paginate(getPerPage());
     return $this->response->ok($events);
 }
 /**
  * Add an event to the diary.
  * @param \App\Http\Requests\EventRequest $request
  * @return \Illuminate\Support\Facades\Response
  */
 public function store(EventRequest $request)
 {
     // Create the event
     $event = Event::create($request->stripped('name', 'venue', 'description', 'type') + ['client_type' => $request->stripped('type') == Event::TYPE_EVENT ? $request->stripped('client_type') : null, 'venue_type' => $request->stripped('type') == Event::TYPE_EVENT ? $request->stripped('venue_type') : null, 'em_id' => $request->get('em_id') ?: null, 'description_public' => $request->stripped('description'), 'crew_list_status' => 1, 'paperwork' => ['risk_assessment' => false, 'insurance' => false, 'finance_em' => false, 'finance_treas' => false, 'event_report' => false]]);
     // Set the event time limits
     $start_time = explode(':', $request->get('time_start'));
     $end_time = explode(':', $request->get('time_end'));
     $date_start = Carbon::createFromFormat('Y-m-d H:i:s', $request->get('date_start') . ' 00:00:00', env('SERVER_TIMEZONE', 'UTC'));
     $date_end = Carbon::createFromFormat('Y-m-d H:i:s', $request->get($request->has('one_day') ? 'date_start' : 'date_end') . ' 23:59:59', env('SERVER_TIMEZONE', 'UTC'));
     // Create each event time
     $date = $date_start->copy();
     while ($date->lte($date_end)) {
         $event->times()->save(new EventTime(['name' => $event->name, 'start' => $date->copy()->setTime($start_time[0], $start_time[1], 0)->tz('UTC'), 'end' => $date->copy()->setTime($end_time[0], $end_time[1], 0)->tz('UTC')]));
         $date->day++;
     }
     // Add the event to the finance Db
     $this->addEventToFinanceDb($event);
     // Send the email to alison if the event is non-SU and off-campus
     if ($event->client_type > 1 && $event->venue_type == 2) {
         Mail::queue('emails.events.notify_alison', ['event_name' => $event->name, 'event_dates' => $event->start_date . ($request->has('one_day') ? '' : ' &ndash; ' . $event->end_date), 'em' => $event->em_id ? $event->em->name : '<em>&ndash; not yet decided &ndash;</em>', 'client' => $event->client, 'venue' => $event->venue, 'venue_type' => Event::$VenueTypes[$event->venue_type], 'description' => $event->description], function ($message) {
             $message->subject('Backstage External Off-Campus Event')->to('*****@*****.**')->cc('*****@*****.**')->from('*****@*****.**');
         });
     }
     // Create a flash message and redirect
     Flash::success('Event created');
     if ($request->has('redirect')) {
         return redirect($request->get('redirect'));
     } else {
         return redirect(route('events.diary', ['year' => $date_start->year, 'month' => $date_start->month]));
     }
 }