calendarService = $calendarService; $this->eventRepo = $eventRepo; } /** * Get accessible calendars for ajax * * @return \Illuminate\Http\JsonResponse */ public function ajaxAccessibleCalendars() { $result = [ 'results' => $this->calendarService->getAccessibleCalendarsForAjax() ]; return \Response::json($result); } /** * Get events for ajax request * * @param int $calendarId Calendar Identifier * @param Request $request request * * @return \Illuminate\Http\JsonResponse */ public function ajaxEvents($calendarId, Request $request) { $start = $request->get('start', Carbon::now()->startOfMonth()); $end = $request->get('end', Carbon::now()->endOfMonth()); $calendar = $this->calendarService->getCalendar($calendarId); // Check if this is default calendar $defaultCalendar = $this->calendarService->getOrCreateDefaultCalendar(); if ($this->calendarService->calendarAccess($calendar)) { $calendarEvents = $this->calendarService->getCalendarEvents( $calendarId, $start, $end, $request->user_ext, $request->group_ext, $request->conds ); if ($calendar->id == $defaultCalendar->id) { // Add shared events $calendarEvents = collect($calendarEvents)->merge($this->calendarService->getSharedEvents($start, $end)); } } else { $calendarEvents = []; } return \Response::json($calendarEvents); } /** * @param Request $request * * @return \Illuminate\Http\JsonResponse */ public function manageEvent(Request $request) { $eventId = $request->get('eventId'); $action = $request->get('action'); $startDate = UserHelper::parseDateFromString($request->get('startDate')); $endDate = UserHelper::parseDateFromString($request->get('endDate')); $fullDay = filter_var($request->get('fullDay',false),FILTER_VALIDATE_BOOLEAN); if($fullDay){ $fullDay = 1; }else{ $fullDay = 0; } $event = $this->eventRepo->findWithoutFail($eventId); $hasAccess = $this->calendarService->eventEditAccess($event); if (!$hasAccess) { return \Response::json( [ 'eventId' => $event->id, 'action' => 'show_message', 'message' => trans('calendar::calendar.you_dont_have_access_to_event') ] ); } if ($action == CalendarViewController::ACTION_RESIZE) { $event = $this->eventRepo->update(['end_date' => $endDate], $event->id); // How to skip timezone return \Response::json( [ 'eventId' => $event->id, 'action' => 'refresh', 'message' => trans('calendar::calendar.event_resized') ] ); } if ($action == CalendarViewController::ACTION_DROP) { $event = $this->eventRepo->update(['start_date' => $startDate, 'end_date' => $endDate, 'full_day' => $fullDay], $event->id); // How to skip timezone return \Response::json( [ 'eventId' => $event->id, 'action' => 'refresh', 'message' => trans('calendar::calendar.event_moved') ] ); } } /** * Load full calendar * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index(Request $request) { $view = view('calendar::calendar'); $calendar = $this->calendarService->getCalendar($request->get('calid')); if ($calendar == null) { $calendar = $this->calendarService->getOrCreateDefaultCalendar(); } $hasCalendarAccess = $this->calendarService->calendarAccess($calendar); if (!$hasCalendarAccess) { flash(trans('calendar::calendar.you_dont_have_access_to_calendar', ['id' => $calendar->id]))->error(); return redirect(route('calendar.index')); } $fullCalendar = $this->calendarService->fullCalendarInstance($calendar); $view->with('accessibleCalendars', $this->calendarService->getAccessibleCalendars()); $view->with('userCalendar', $calendar); $view->with('fullCalendar', $fullCalendar); return $view; } }