CalendarSettings.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Http\Livewire;
  3. use Livewire\Component;
  4. class CalendarSettings extends Component
  5. {
  6. public $course_colors = [];
  7. public $colors = [];
  8. public $changed = false;
  9. public function mount()
  10. {
  11. $this->changed = false;
  12. $courses = \App\Models\Course::select('name')->groupBy('name')->orderBy('name', 'asc')->get();
  13. foreach ($courses as $course) {
  14. $name = $course->name;
  15. if (!\App\Models\CourseColor::where('name', $name)->exists()) {
  16. \App\Models\CourseColor::create([
  17. 'name' => $name,
  18. 'hex' => '#0c6197',
  19. ]);
  20. }
  21. }
  22. $this->course_colors = \App\Models\CourseColor::get();
  23. foreach ($this->course_colors as $color) {
  24. $this->colors[$color->id] = $color->hex;
  25. }
  26. }
  27. public function render()
  28. {
  29. return view('livewire.calendar_settings');
  30. }
  31. public function updatedColors() {
  32. $this->changed = true;
  33. }
  34. public function store() {
  35. foreach ($this->colors as $id => $hex) {
  36. \App\Models\CourseColor::whereId($id)->update([
  37. 'hex' => $hex,
  38. ]);
  39. }
  40. $this->changed = false;
  41. $this->emit('success');
  42. }
  43. }