LabsSettings.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Http\Controllers\Settings;
  3. use Illuminate\Http\Request;
  4. use Cookie, Redis;
  5. use App\Services\SuggestionService;
  6. trait LabsSettings {
  7. public function __constructor()
  8. {
  9. $this->middleware('auth');
  10. }
  11. public function labs(Request $request)
  12. {
  13. $profile = $request->user()->profile;
  14. return view('settings.labs', compact('profile'));
  15. }
  16. public function labsStore(Request $request)
  17. {
  18. $this->validate($request, [
  19. 'profile_layout' => 'nullable',
  20. 'dark_mode' => 'nullable',
  21. 'profile_suggestions' => 'nullable'
  22. ]);
  23. $changes = false;
  24. $profile = $request->user()->profile;
  25. $cookie = Cookie::forget('dark-mode');
  26. if($request->has('dark_mode')) {
  27. if($request->dark_mode == 'on') {
  28. $cookie = Cookie::make('dark-mode', true, 43800);
  29. }
  30. }
  31. if($request->has('profile_layout')) {
  32. if($profile->profile_layout != 'moment') {
  33. $profile->profile_layout = 'moment';
  34. $changes = true;
  35. }
  36. } else {
  37. $profile->profile_layout = null;
  38. $changes = true;
  39. }
  40. if($request->has('profile_suggestions')) {
  41. if($profile->is_suggestable == false) {
  42. $profile->is_suggestable = true;
  43. $changes = true;
  44. SuggestionService::set($profile->id);
  45. }
  46. } else {
  47. $profile->is_suggestable = false;
  48. $changes = true;
  49. SuggestionService::del($profile->id);
  50. }
  51. if($changes == true) {
  52. $profile->save();
  53. }
  54. return redirect(route('settings.labs'))
  55. ->with('status', 'Labs preferences successfully updated!')
  56. ->cookie($cookie);
  57. }
  58. }