| @@ 30-71 (lines=42) @@ | ||
| 27 | * |
|
| 28 | * @return \Illuminate\Http\Response |
|
| 29 | */ |
|
| 30 | public function index(Request $request) |
|
| 31 | { |
|
| 32 | $cacheExpireTime = 900; // Set the duration time of the cache (15 min - 900sec) |
|
| 33 | $countries = Cache::remember('countries', $cacheExpireTime, function () { |
|
| 34 | return Country::orderBy('name')->pluck('name', 'id'); |
|
| 35 | }); |
|
| 36 | ||
| 37 | $searchKeywords = $request->input('keywords'); |
|
| 38 | $searchCountry = $request->input('country_id'); |
|
| 39 | ||
| 40 | // To show just the veues created by the the user - If admin or super admin is set to null show all the venues |
|
| 41 | $authorUserId = ($this->getLoggedAuthorId()) ? $this->getLoggedAuthorId() : null; |
|
| 42 | ||
| 43 | if ($searchKeywords || $searchCountry) { |
|
| 44 | $eventVenues = DB::table('event_venues') |
|
| 45 | ->when($authorUserId, function ($query, $authorUserId) { |
|
| 46 | return $query->where('created_by', $authorUserId); |
|
| 47 | }) |
|
| 48 | ->when($searchKeywords, function ($query, $searchKeywords) { |
|
| 49 | return $query->where('name', $searchKeywords)->orWhere('name', 'like', '%'.$searchKeywords.'%'); |
|
| 50 | }) |
|
| 51 | ->when($searchCountry, function ($query, $searchCountry) { |
|
| 52 | return $query->where('country_id', '=', $searchCountry); |
|
| 53 | }) |
|
| 54 | ->orderBy('name') |
|
| 55 | ->paginate(20); |
|
| 56 | } else { |
|
| 57 | $eventVenues = EventVenue:: |
|
| 58 | when($authorUserId, function ($query, $authorUserId) { |
|
| 59 | return $query->where('created_by', $authorUserId); |
|
| 60 | }) |
|
| 61 | ->orderBy('name') |
|
| 62 | ->paginate(20); |
|
| 63 | } |
|
| 64 | //dd(DB::getQueryLog()); |
|
| 65 | ||
| 66 | return view('eventVenues.index', compact('eventVenues')) |
|
| 67 | ->with('i', (request()->input('page', 1) - 1) * 20) |
|
| 68 | ->with('countries', $countries) |
|
| 69 | ->with('searchKeywords', $searchKeywords) |
|
| 70 | ->with('searchCountry', $searchCountry); |
|
| 71 | } |
|
| 72 | ||
| 73 | /***************************************************************************/ |
|
| 74 | ||
| @@ 35-88 (lines=54) @@ | ||
| 32 | * |
|
| 33 | * @return \Illuminate\Http\Response |
|
| 34 | */ |
|
| 35 | public function index(Request $request) |
|
| 36 | { |
|
| 37 | $countries = Country::orderBy('countries.name')->pluck('name', 'id'); |
|
| 38 | ||
| 39 | // Get the countries with active teachers - BUG! IF I CACHE JUST A PART OF THE COUNTRIES WHEN I INSERT A NEW TEACHER WITH A COUNTRY THAT IS NOT IN THE CACHE I GET AN ERROR WHEN I'M BACK TO THE INDEX (eg.no index error) |
|
| 40 | /* $cacheExpireTime = 900; // Set the duration time of the cache (15 min - 900sec) |
|
| 41 | $countries = Cache::remember('teachers_countries', cacheExpireTime, function () { |
|
| 42 | return DB::table('countries') |
|
| 43 | ->join('teachers', 'countries.id', '=', 'teachers.country_id') |
|
| 44 | ->orderBy('countries.name') |
|
| 45 | ->pluck('countries.name', 'countries.id'); |
|
| 46 | });*/ |
|
| 47 | ||
| 48 | // Search keywords |
|
| 49 | $searchKeywords = $request->input('keywords'); |
|
| 50 | $searchCountry = $request->input('country_id'); |
|
| 51 | ||
| 52 | // To show just the teachers created by the the user - If admin or super admin is set to null show all the teachers |
|
| 53 | $authorUserId = ($this->getLoggedAuthorId()) ? $this->getLoggedAuthorId() : null; // if is 0 (super admin or admin) it's setted to null to avoid include it in the query |
|
| 54 | ||
| 55 | // To retrieve all the teachers when the route is teacher.directory, we set the logged user id to null |
|
| 56 | if (Route::currentRouteName() == 'teachers.directory') { |
|
| 57 | $authorUserId = null; |
|
| 58 | } |
|
| 59 | ||
| 60 | if ($searchKeywords || $searchCountry) { |
|
| 61 | $teachers = DB::table('teachers') |
|
| 62 | ->when($authorUserId, function ($query, $authorUserId) { |
|
| 63 | return $query->where('created_by', $authorUserId); |
|
| 64 | }) |
|
| 65 | ->when($searchKeywords, function ($query, $searchKeywords) { |
|
| 66 | return $query->where('name', $searchKeywords)->orWhere('name', 'like', '%'.$searchKeywords.'%'); |
|
| 67 | }) |
|
| 68 | ->when($searchCountry, function ($query, $searchCountry) { |
|
| 69 | return $query->where('country_id', '=', $searchCountry); |
|
| 70 | }) |
|
| 71 | ->orderBy('name') |
|
| 72 | ->paginate(20); |
|
| 73 | } else { |
|
| 74 | $teachers = Teacher:: |
|
| 75 | when($authorUserId, function ($query, $authorUserId) { |
|
| 76 | return $query->where('created_by', $authorUserId); |
|
| 77 | }) |
|
| 78 | ->orderBy('name') |
|
| 79 | ->paginate(20); |
|
| 80 | } |
|
| 81 | ||
| 82 | return view('teachers.index', compact('teachers')) |
|
| 83 | ->with('i', (request()->input('page', 1) - 1) * 20) |
|
| 84 | ->with('countries', $countries) |
|
| 85 | ->with('searchKeywords', $searchKeywords) |
|
| 86 | ->with('searchCountry', $searchCountry) |
|
| 87 | ->with('loggedUser', $authorUserId); |
|
| 88 | } |
|
| 89 | ||
| 90 | /***************************************************************************/ |
|
| 91 | ||