CalendarSettings.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. $courses = \App\Models\Course::select('name')->groupBy('name')->orderBy('name', 'asc')->get();
  18. foreach ($courses as $course) {
  19. $name = $course->name;
  20. if (!\App\Models\CourseColor::where('name', $name)->exists()) {
  21. \App\Models\CourseColor::create([
  22. 'name' => $name,
  23. 'hex' => '#d6c7fe',
  24. ]);
  25. }
  26. }
  27. $this->course_colors = \App\Models\CourseColor::get();
  28. foreach ($this->course_colors as $color) {
  29. $this->colors[$color->id] = $color->hex;
  30. }
  31. }
  32. public function render()
  33. {
  34. return view('livewire.calendar_settings');
  35. }
  36. public function updatedColors() {
  37. $this->changed = true;
  38. }
  39. public function store() {
  40. foreach ($this->colors as $id => $hex) {
  41. \App\Models\CourseColor::whereId($id)->update([
  42. 'hex' => $hex,
  43. ]);
  44. }
  45. $this->changed = false;
  46. $this->emit('success');
  47. }
  48. }