diff options
Diffstat (limited to 'site/app/Http/Controllers/OfferController.php')
| -rw-r--r-- | site/app/Http/Controllers/OfferController.php | 64 |
1 files changed, 57 insertions, 7 deletions
diff --git a/site/app/Http/Controllers/OfferController.php b/site/app/Http/Controllers/OfferController.php index 99108cd..563708f 100644 --- a/site/app/Http/Controllers/OfferController.php +++ b/site/app/Http/Controllers/OfferController.php @@ -6,6 +6,9 @@ use App\Helpers\CryptoHelper; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; +use Cookie; +use Illuminate\Support\Facades\Input; + class OfferController extends Controller { /** * Shows the index page. @@ -13,14 +16,61 @@ class OfferController extends Controller { * @return Response */ public function showPage(Request $request) { - - $view_name = \Request::route()->getName(); - $data = DB::table($view_name . '_view')->orderBy('procent', 'DESC')->limit(100)->simplePaginate(20); - if ( "misc" == $view_name ) { - $view_name = "Andere Angebote"; - } + /* + * Sorting + */ + $sort_by = Input::get("sort"); + if ( is_null($sort_by) ) { + $sort_by = $request->cookie("sort"); + } + switch ($sort_by) { + case("price"): + $sort_by = "discounted_price"; + break; + case("discounted_price"): + $sort_by = "discounted_price"; + break; + case("name"): + $sort_by = "name"; + break; + case("shop"): + $sort_by = "shop"; + break; + case("procent"): + $sort_by = "procent"; + break; + case("time"): + $sort_by = "created_at"; + break; + case("created_at"): + $sort_by = "created_at"; + break; + default: + $sort_by = "created_at"; + break; + } + Cookie::queue(Cookie::make('sort', $sort_by, 60*24)); + + $order_by = $request->input("order"); + if ( is_null($order_by) ) { + $order_by = $request->cookie("order"); + } + if ( "desc" != $order_by ) { + $order_by = "asc"; + } + Cookie::queue(Cookie::make('order', $order_by, 60*24)); + + /* + * Database query + */ + $view_name = \Request::route()->getName(); + $data = DB::table($view_name . '_view')->orderBy($sort_by, $order_by)->limit(100)->simplePaginate(20); - return view('offer', ['data' => $data, 'spirit_type' => $view_name]); + if ( "misc" == $view_name ) { + $view_name = "Andere Angebote"; + } + + return view('offer', ['data' => $data, 'spirit_type' => $view_name]); } } |
