CalendarSettings.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Http\Livewire;
  3. use Livewire\Component;
  4. use App\Http\Middleware\TenantMiddleware;
  5. class CalendarSettings extends Component
  6. {
  7. public $course_colors = [];
  8. public $colors = [];
  9. public $changed = false;
  10. public function boot()
  11. {
  12. app(TenantMiddleware::class)->setupTenantConnection();
  13. }
  14. public function mount()
  15. {
  16. $this->changed = false;
  17. $course_names = [];
  18. $courses = \App\Models\Course::select('name')->where('enabled', true)->groupBy('name')->orderBy('name', 'asc')->get();
  19. foreach ($courses as $course) {
  20. $name = $course->name;
  21. array_push($course_names, $name);
  22. if (!\App\Models\CourseColor::where('name', $name)->exists()) {
  23. \App\Models\CourseColor::create([
  24. 'name' => $name,
  25. 'hex' => '#d6c7fe',
  26. ]);
  27. }
  28. }
  29. $course_names = array_values(array_unique($course_names));
  30. $this->course_colors = \App\Models\CourseColor::get();
  31. foreach ($this->course_colors as $index => $color) {
  32. if (!in_array($color->name, $course_names)) {
  33. unset($this->course_colors[$index]);
  34. continue;
  35. }
  36. $this->colors[$color->id] = $color->hex;
  37. }
  38. }
  39. public function render()
  40. {
  41. return view('livewire.calendar_settings');
  42. }
  43. public function updatedColors() {
  44. $this->changed = true;
  45. }
  46. public function store() {
  47. foreach ($this->colors as $id => $hex) {
  48. \App\Models\CourseColor::whereId($id)->update([
  49. 'hex' => $hex,
  50. ]);
  51. }
  52. $this->changed = false;
  53. $this->emit('success');
  54. }
  55. }