From 89461213340e657d9f268d92fce1808bcffd7eb4 Mon Sep 17 00:00:00 2001
From: Daniel Supernault <danielsupernault@gmail.com>
Date: Sun, 28 Apr 2019 16:39:26 -0600
Subject: [PATCH] Add LabsSettings controller

---
 .../Controllers/Settings/LabsSettings.php     | 83 +++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 app/Http/Controllers/Settings/LabsSettings.php

diff --git a/app/Http/Controllers/Settings/LabsSettings.php b/app/Http/Controllers/Settings/LabsSettings.php
new file mode 100644
index 000000000..f0020b570
--- /dev/null
+++ b/app/Http/Controllers/Settings/LabsSettings.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace App\Http\Controllers\Settings;
+
+use Illuminate\Http\Request;
+use Cookie, Redis;
+use App\Services\SuggestionService;
+
+trait LabsSettings {
+
+	public function __constructor()
+	{
+		$this->middleware('auth');
+	}
+
+	public function labs(Request $request)
+	{
+		$profile = $request->user()->profile;
+		return view('settings.labs', compact('profile'));
+	}
+
+	public function labsStore(Request $request)
+	{
+		$this->validate($request, [
+			'profile_layout' => 'nullable',
+			'dark_mode'	=> 'nullable',
+			'profile_suggestions' => 'nullable'
+		]);
+
+		$changes = false;
+
+		$profile = $request->user()->profile;
+
+		$cookie = Cookie::forget('dark-mode');
+		if($request->has('dark_mode') && $profile->profile_layout != 'moment') {
+			if($request->dark_mode == 'on') {
+				$cookie = Cookie::make('dark-mode', true, 43800);
+			} 
+		}
+
+		if($request->has('profile_layout')) {
+			if($profile->profile_layout != 'moment') {
+				$profile->profile_layout = 'moment';
+				$changes = true;
+			} else {
+				$profile->profile_layout = null;
+				$changes = true;
+			}
+		} else {
+			if($profile->profile_layout == 'moment') {
+				$profile->profile_layout = null;
+				$changes = true;
+			}
+		}
+
+		if($request->has('profile_suggestions')) {
+			if($profile->is_suggestable == false) {
+				$profile->is_suggestable = true;
+				$changes = true;
+				SuggestionService::set($profile->id);
+			} else {
+				$profile->is_suggestable = false;
+				$changes = true;
+				SuggestionService::del($profile->id);
+			}
+		} else {
+			if($profile->is_suggestable == true) {
+				$profile->is_suggestable = false;
+				$changes = true;
+				SuggestionService::del($profile->id);
+			}
+		}
+
+		if($changes == true) {
+			$profile->save();
+		}
+
+		return redirect(route('settings.labs'))
+			->with('status', 'Labs preferences successfully updated!')
+			->cookie($cookie);
+	}
+
+}
\ No newline at end of file