From 968f6448af597b8375b858634f66ade558860aca Mon Sep 17 00:00:00 2001 From: horus Date: Sat, 10 Feb 2018 04:43:48 +0100 Subject: Adds sorting. --- site/app/Http/Controllers/IndexController.php | 15 ------- site/app/Http/Controllers/OfferController.php | 64 ++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 22 deletions(-) (limited to 'site/app') diff --git a/site/app/Http/Controllers/IndexController.php b/site/app/Http/Controllers/IndexController.php index c0056d9..d175388 100644 --- a/site/app/Http/Controllers/IndexController.php +++ b/site/app/Http/Controllers/IndexController.php @@ -25,21 +25,6 @@ class IndexController extends Controller { $query .= "(SELECT name, image_url, spirit_type, spirit_type AS url, spirit_type AS angebotsname, original_price, discounted_price, procent, '' AS linktext FROM ". $view ."_view WHERE original_price > 19.98 ORDER BY procent DESC LIMIT 1)"; } - // removes the last union - #$query .= substr($query, -1, strlen(" UNION ")); - #echo "
";
-	    #var_dump($query); exit;
-
-	    /*
-	    $dbh = DB::connection('mysql')->getPdo();
-	    $stmt = $dbh->prepare($query);
-	    $stmt->execute();
-
-	    $data = $stmt->fetchAll(\PDO::FETCH_ASSOC);
-	     */
-
-
-	    #var_dump($query); exit;
 	    $data = DB::select($query);
 		#$data = DB::table('whisky_view')->orderBy('procent', 'DESC')->limit(100)->simplePaginate(20);
 
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]);
     }
 } 
-- 
cgit v1.2.3