summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhorus2018-02-10 04:43:48 +0100
committerhorus2018-02-10 04:43:48 +0100
commit968f6448af597b8375b858634f66ade558860aca (patch)
tree7a7be71c48db2da05acd82f9ebd0d4cdc380b3c1
parent192581bd55924b97ac14f270e408f1faeb856da8 (diff)
downloadalkobote-968f6448af597b8375b858634f66ade558860aca.tar.gz
Adds sorting.
-rw-r--r--site/app/Http/Controllers/IndexController.php15
-rw-r--r--site/app/Http/Controllers/OfferController.php64
-rw-r--r--site/resources/views/offer.blade.php50
3 files changed, 107 insertions, 22 deletions
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 "<pre>";
- #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]);
}
}
diff --git a/site/resources/views/offer.blade.php b/site/resources/views/offer.blade.php
index 54e4e75..73aa2bb 100644
--- a/site/resources/views/offer.blade.php
+++ b/site/resources/views/offer.blade.php
@@ -10,6 +10,56 @@
</div>
</div>
+<div class="btn-toolbar mb-2 align-top" role="toolbar" aria-label="Sortieren">
+ <div class="btn-group" role="group" aria-label="Sortieren">
+ <div class="dropdown">
+ <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ Preis
+ </button>
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+ <a class="dropdown-item" href="?sort=price&order=asc">Aufwärts</a>
+ <a class="dropdown-item" href="?sort=price&order=desc">Abwärts</a>
+ </div>
+ </div>
+ <div class="dropdown">
+ <button class="ml-2 btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ Name
+ </button>
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+ <a class="dropdown-item" href="?sort=name&order=asc">Aufwärts</a>
+ <a class="dropdown-item" href="?sort=name&order=desc">Abwärts</a>
+ </div>
+ </div>
+ <div class="dropdown">
+ <button class="ml-2 btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ Shop
+ </button>
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+ <a class="dropdown-item" href="?sort=shop&order=asc">Aufwärts</a>
+ <a class="dropdown-item" href="?sort=shop&order=desc">Abwärts</a>
+ </div>
+ </div>
+ <div class="dropdown">
+ <button class="ml-2 btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ Prozente
+ </button>
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+ <a class="dropdown-item" href="?sort=procent&order=asc">Aufwärts</a>
+ <a class="dropdown-item" href="?sort=procent&order=desc">Abwärts</a>
+ </div>
+ </div>
+ <div class="dropdown">
+ <button class="ml-2 btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ Aktualität
+ </button>
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+ <a class="dropdown-item" href="?sort=time&order=asc">Aktuellste</a>
+ <a class="dropdown-item" href="?sort=time&order=desc">Älteste</a>
+ </div>
+ </div>
+ </div>
+</div>
+
<div class="row mb-2">
</div>
<?php