where(function ($q) use ($start, $end) { $q->whereBetween('start_date', [$start, $end]); })->orWhere(function ($q) use ($start, $end) { $q->whereBetween('end_date', [$start, $end]); })->orWhere(function ($q) use ($start, $end) { $q->whereDate('start_date','<=',$start); $q->whereDate('end_date','>=',$end); }); })->whereHas('sharedWith', function ($query) { $query->where('id', \Auth::user()->id); })->where('company_id','=',Landlord::getTenants()->first()); return $events->get(); } /** * Get Events for calendar * * @param $calendarId * @param $start * @param $end * @return mixed */ public function getEvents($calendarId, $start, $end, $user_ext=null, $group_ext=null, $conds=null) { $start = $start . ' 00:00:00'; $end = $end . ' 23:59:29'; $events = Event::where('calendar_id', $calendarId) ->where(function ($subquery) use ($start, $end) { $subquery->where(function ($q) use ($start, $end) { $q->whereBetween('start_date', [$start, $end]); })->orWhere(function ($q) use ($start, $end) { $q->whereBetween('end_date', [$start, $end]); })->orWhere(function ($q) use ($start, $end) { $q->whereDate('start_date','<=',$start); $q->whereDate('end_date','>=',$end); }); }); if (isset($conds)) { $events->whereBetween('created_at',[$conds['from'],$conds['to']]); } if(isset($user_ext)){ $events->where('owned_by_id', $user_ext); } elseif(isset($group_ext)){ $user_exts = User::join('group_user',config('database.connections.mysql.database').'.users.id','group_user.user_id') ->where('group_id', $group_ext)->pluck('id')->toArray(); $events->whereIn('owned_by_id', $user_exts); } $events->where('company_id','=',Landlord::getTenants()->first()); return $events->get(); } }