summaryrefslogtreecommitdiff
path: root/site/app
diff options
context:
space:
mode:
authorhorus2018-02-13 14:28:40 +0100
committerhorus2018-02-13 14:28:40 +0100
commitef460c65ab5e6e3bfdb27ef596d00fc93314eb72 (patch)
tree9d6f969d2d554af07568808f5977e346176b4f20 /site/app
parent62f478feda37fb116ccede1481f80b1bea88fc04 (diff)
downloadalkobote-ef460c65ab5e6e3bfdb27ef596d00fc93314eb72.tar.gz
Adds RSS-Feeds.
Diffstat (limited to 'site/app')
-rw-r--r--site/app/Http/Controllers/FeedController.php89
-rw-r--r--site/app/Http/Controllers/PageFeedController.php34
2 files changed, 123 insertions, 0 deletions
diff --git a/site/app/Http/Controllers/FeedController.php b/site/app/Http/Controllers/FeedController.php
new file mode 100644
index 0000000..7ac39c1
--- /dev/null
+++ b/site/app/Http/Controllers/FeedController.php
@@ -0,0 +1,89 @@
+<?php
+namespace App\Http\Controllers;
+use Illuminate\Http\Request;
+use App\Helpers\CryptoHelper;
+
+use Illuminate\Support\Facades\DB;
+use App\Http\Controllers\Controller;
+
+use Cookie;
+use Carbon;
+use Illuminate\Support\Facades\Input;
+
+class FeedController extends Controller {
+ /**
+ * Shows the index page.
+ *
+ * @return Response
+ */
+ public function showPage(Request $request) {
+
+ /*
+ * Sorting
+ */
+ $sort_by = Input::get("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;
+ }
+
+ $order_by = $request->input("order");
+ if ( "desc" != $order_by ) {
+ $order_by = "asc";
+ }
+
+ /*
+ * Database query
+ */
+ $view_name = str_replace("_feed", "", \Request::route()->getName());
+ #$data = DB::table($view_name . '_view')->orderBy('created_at', 'DESC')->limit(100)->get();
+ $data = DB::table($view_name . '_view')->orderBy($sort_by, $order_by)->limit(20)->get();
+
+ /*
+ * For strftime().
+ */
+ setlocale(LC_TIME, 'de_DE.utf8');
+
+ $feed = \App::make("feed");
+
+ $feed->title = "Sonderangebote";
+ $feed->description = 'Finde immer die günstigsten Angebote im Bereich Spirituosen. Täglich neue Schnäppchen.';
+ $feed->logo = 'https://fuselkoenig.de/favicon.ico';
+ $feed->link = url('feed');
+ $feed->setDateFormat('timestamp'); // 'datetime', 'timestamp' or 'carbon'
+ $feed->pubdate = $data[0]->created_at;
+ $feed->lang = 'de';
+ $feed->setShortening(true); // true or false
+ $feed->setTextLimit(5000); // maximum length of description text
+
+ foreach ( $data as $offer ) {
+ $desc = '<p><img src="'.$offer->image_url.'"></p><p><strong>'.$offer->spirit_type.'</strong><br>Statt ' . \TF::fF($offer->original_price) . '€ nur noch ' . \TF::fF($offer->discounted_price) . "€ (".$offer->procent."% Rabatt).";
+ $feed->add($offer->name, $offer->shop, $offer->url, $offer->created_at, $desc, $offer->name);
+ }
+
+ return $feed->render('atom');
+
+ }
+}
diff --git a/site/app/Http/Controllers/PageFeedController.php b/site/app/Http/Controllers/PageFeedController.php
new file mode 100644
index 0000000..e29c8ca
--- /dev/null
+++ b/site/app/Http/Controllers/PageFeedController.php
@@ -0,0 +1,34 @@
+<?php
+namespace App\Http\Controllers;
+use Illuminate\Http\Request;
+use App\Helpers\CryptoHelper;
+
+use Illuminate\Support\Facades\DB;
+use App\Http\Controllers\Controller;
+
+class PageFeedController extends Controller {
+ /**
+ * Shows the index page.
+ *
+ * @return Response
+ */
+ public function showPage(Request $request) {
+
+
+ $views = array("whisky", "wodka", "gin", "rum", "misc", "all");
+ $query = "";
+
+ foreach($views as $view) {
+ if ($query != "") {
+ $query .= " UNION ";
+ }
+ $query .= "(SELECT name, image_url, spirit_type, spirit_type AS url, spirit_type AS feedname, '' AS linktext, created_at FROM ". $view ."_view WHERE original_price > 19.98 ORDER BY created_at DESC LIMIT 1)";
+ }
+ # todo: schlägt manchmal fehl
+ $query .= " UNION (SELECT name, image_url, spirit_type, spirit_type AS url, spirit_type AS feedname, '' AS linktext, created_at FROM ". $view ."_view WHERE original_price > 19.98 AND (procent < (SELECT MAX(procent) FROM all_view)) ORDER BY procent LIMIT 1)";
+
+ $data = DB::select($query);
+
+ return view('feeds', ['data' => $data, 'views' => $views]);
+ }
+}