*/ class EventsTimetableController extends Controller { public function index() { $unapproved = Event::where('week', Carbon::now()->weekOfYear) ->where('year', Carbon::now()->year) ->where('approved', false) ->orderBy('id', 'desc') ->get(); foreach ($unapproved as $event) { // translate to the user's set timezone $carbon = Carbon::now()->setISODate( Carbon::now()->year, Carbon::now()->weekOfYear, $event->day )->setTime($event->hour, 0)->tz(auth()->user()->getTimezone()); $event->day = $carbon->dayOfWeek; $event->hour = $carbon->hour; } return view('events.senior.events-timetable', ['unapproved' => $unapproved]); } /** * Approve an event and delete every other event for that hour. * * @param $id * @return mixed */ public function approve($id) { $event = Event::findOrFail($id); if ($event->approved) { return redirect()->back()->with('msg', [ 'type' => 'success', 'msg' => _('This event has already been approved.') ]); } $others = Event::where('week', Carbon::now()->weekOfYear) ->where('year', Carbon::now()->year) ->where('day', $event->day) ->where('hour', $event->hour) ->where('approved', true) ->count(); if ($others) { // there is already an approved event in this slot. return redirect()->back()->with('msg', [ 'msg' => _('There is already an approved event in this slot.'), 'type' => 'danger' ]); } // approve this event $event->approved = true; $event->save(); // delete all the other unapproved events that wanted this slot. Event::where('week', Carbon::now()->weekOfYear) ->where('year', Carbon::now()->year) ->where('day', $event->day) ->where('hour', $event->hour) ->where('approved', false) ->delete(); return redirect()->back()->with('msg', [ 'msg' => _('Successfully approved event and deleted other events which wanted this slot.'), 'type' => 'success' ]); } /** * Deny an event. * * @param $id * @return mixed */ public function deny($id) { $event = Event::findOrFail($id); if ($event->approved) { return redirect()->back()->with('msg', [ 'type' => 'success', 'msg' => _('This event has already been approved.') ]); } $event->delete(); return redirect()->back()->with('msg', [ 'msg' => _('Successfully declined event.'), 'type' => 'success' ]); } }