LabsSettings.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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') && $profile->profile_layout != 'moment') {
  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. } else {
  36. $profile->profile_layout = null;
  37. $changes = true;
  38. }
  39. } else {
  40. if($profile->profile_layout == 'moment') {
  41. $profile->profile_layout = null;
  42. $changes = true;
  43. }
  44. }
  45. if($request->has('profile_suggestions')) {
  46. if($profile->is_suggestable == false) {
  47. $profile->is_suggestable = true;
  48. $changes = true;
  49. SuggestionService::set($profile->id);
  50. } else {
  51. $profile->is_suggestable = false;
  52. $changes = true;
  53. SuggestionService::del($profile->id);
  54. }
  55. } else {
  56. if($profile->is_suggestable == true) {
  57. $profile->is_suggestable = false;
  58. $changes = true;
  59. SuggestionService::del($profile->id);
  60. }
  61. }
  62. if($changes == true) {
  63. $profile->save();
  64. }
  65. return redirect(route('settings.labs'))
  66. ->with('status', 'Labs preferences successfully updated!')
  67. ->cookie($cookie);
  68. }
  69. }