/** * 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') ? '' : ' – ' . $event->end_date), 'em' => $event->em_id ? $event->em->name : '<em>– not yet decided –</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])); } }