From 95f37787bfe32eb5ce37afbee9c68bd233edffda Mon Sep 17 00:00:00 2001 From: horus Date: Sun, 19 May 2019 20:54:05 +0200 Subject: Adds search by spirit type. --- app/Http/Controllers/ListOfferController.php | 20 +++++++++++++++---- app/Http/Controllers/RSSController.php | 10 +++++++--- app/Http/Controllers/SearchController.php | 23 +++++++++++++++++----- resources/views/listoffer.blade.php | 6 +++++- resources/views/search.blade.php | 6 ++++-- .../views/snippets/spirittypesbuttons.blade.php | 14 +++++++++++++ 6 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 resources/views/snippets/spirittypesbuttons.blade.php diff --git a/app/Http/Controllers/ListOfferController.php b/app/Http/Controllers/ListOfferController.php index 993bfcd..ba4face 100644 --- a/app/Http/Controllers/ListOfferController.php +++ b/app/Http/Controllers/ListOfferController.php @@ -57,9 +57,18 @@ class ListOfferController extends Controller { * Database query */ $view_name = \Request::route()->getName(); - #$data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->simplePaginate(10); - $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10); - $count = DB::table($view_name . '_view')->whereNotNull('url')->count(); + + if ( "" != Input::get('type') ) { + $data = DB::table($view_name . '_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10); + $count = DB::table($view_name . '_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->count(); + + } else { + $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10); + $count = DB::table($view_name . '_view')->whereNotNull('url')->count(); + } + + # Only used on misc_view, all_view and search. + $spirit_types = DB::select('SELECT DISTINCT spirit_type FROM ' . $view_name . '_view ' . ' ORDER BY spirit_type' ); $rss_feed = "/angebote/" . $view_name . "/feed/"; $query_string = ""; @@ -73,6 +82,7 @@ class ListOfferController extends Controller { } if ( "misc" == $view_name ) { + $view_name = "Andere Angebote"; if ( $data->count() ) { $title = "andere Angebote"; @@ -87,9 +97,11 @@ class ListOfferController extends Controller { $title = "Angebote"; } } else { + $spirit_types = array(); + $title = ucfirst($view_name) . "-Angebote"; } - return view('listoffer', ['data' => $data, 'count' => $count, 'spirit_type' => $view_name, 'rss_feed' => $rss_feed, 'title' => $title ]); + return view('listoffer', ['data' => $data, 'count' => $count, 'spirit_type' => $view_name, 'spirit_types' => $spirit_types, 'rss_feed' => $rss_feed, 'title' => $title ]); } } diff --git a/app/Http/Controllers/RSSController.php b/app/Http/Controllers/RSSController.php index 5c30bd9..f46aef4 100644 --- a/app/Http/Controllers/RSSController.php +++ b/app/Http/Controllers/RSSController.php @@ -61,9 +61,13 @@ class RSSController extends Controller { $view_name = str_replace("/angebote/", "", $view_name); if ( "search" == $view_name ) { - $query = Input::get("q"); - $q = "%" . Utility::escapeLike($query) . "%"; - $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orderBy($sort_by, $order_by)->limit(20)->get(); + if ( "" != Input::get("q") ) { + $query = Input::get("q"); + $q = "%" . Utility::escapeLike($query) . "%"; + $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orderBy($sort_by, $order_by)->limit(20)->get(); + } else { + $data = DB::table('all_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->limit(20)->get(); + } } else { $data = DB::table($view_name . '_view')->orderBy($sort_by, $order_by)->limit(20)->get(); } diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 4fe8db3..9efc391 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -58,10 +58,22 @@ class SearchController extends Controller { } } - $query = Input::get("q"); - $q = "%" . Utility::escapeLike($query) . "%"; - $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->orderBy($sort_by, $order_by)->paginate(20); - $count = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q); + if ( "" != Input::get('type') ) { + $query = Input::get('type'); + $data = DB::table('all_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(20); + $count = DB::table('all_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->count(); + + $title = "Suche nach " . ucwords(Input::get('type')); + } else { + $query = Input::get("q"); + $q = "%" . Utility::escapeLike($query) . "%"; + $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->orderBy($sort_by, $order_by)->paginate(20); + $count = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->count(); + + $title = "Suche nach " . ucwords(Input::get('q')); + } + + $spirit_types = DB::select('SELECT DISTINCT spirit_type FROM all_view ORDER BY spirit_type' ); $query_string = ""; $query_params = Input::except('page'); @@ -70,11 +82,12 @@ class SearchController extends Controller { } $query_string = ltrim($query_string, "&"); + /* * For strftime() in view. */ #setlocale(LC_TIME, 'de_DE.utf8'); - return view('search', ['data' => $data, 'count' => $count, 'search_phrase' => $query, 'rss_feed' => '/angebote/search/feed/?' . $query_string ]); + return view('search', ['data' => $data, 'count' => $count, 'search_phrase' => $query, 'spirit_types' => $spirit_types, 'title' => $title, 'rss_feed' => '/angebote/search/feed/?' . $query_string ]); } } diff --git a/resources/views/listoffer.blade.php b/resources/views/listoffer.blade.php index a2a52e1..db9cf80 100644 --- a/resources/views/listoffer.blade.php +++ b/resources/views/listoffer.blade.php @@ -13,7 +13,9 @@ + @include('snippets.spirittypesbuttons') + {{ $data->appends(Input::except('page'))->links('paginate') }} count() ) { ?>
- Sie haben nach {{ ucwords($search_phrase) }} gesucht ({{$count->count()}} Treffer) + Sie haben nach {{ ucwords($search_phrase) }} gesucht ({{$count}} Treffer)
@include('snippets.sortbuttons') count() ) {