65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Livewire\Report;
 | |
| 
 | |
| use App\Models\Common\Report;
 | |
| use App\Utilities\Reports as Utility;
 | |
| use Livewire\Component;
 | |
| use Illuminate\Support\Str;
 | |
| use Illuminate\Contracts\View\View;
 | |
| 
 | |
| class Pins extends Component
 | |
| {
 | |
|     public $pins = [];
 | |
| 
 | |
|     public $categories;
 | |
| 
 | |
|     public $reports = [];
 | |
| 
 | |
|     public $icons = [];
 | |
| 
 | |
|     public $report_id = null;
 | |
| 
 | |
|     protected $listeners = [
 | |
|         'addedPin' => 'render',
 | |
|         'removedPin' => 'render',
 | |
|     ];
 | |
| 
 | |
|     public function render(): View
 | |
|     {
 | |
|         $this->reports = collect();
 | |
| 
 | |
|         $pins = setting('favorites.report.' . user()->id, []);
 | |
| 
 | |
|         if (!empty($pins)) {
 | |
|             $pins = json_decode($pins, true);
 | |
| 
 | |
|             foreach ($this->categories as $category) {
 | |
|                 foreach($category['reports'] as $report) {
 | |
|                     if (is_array($report)) {
 | |
|                         $report = Report::find($report['id']);
 | |
|                     }
 | |
| 
 | |
|                     if (! Utility::canShow($report->class)) {
 | |
|                         continue;
 | |
|                     }
 | |
| 
 | |
|                     $class = Utility::getClassInstance($report, false);
 | |
| 
 | |
|                     if (empty($class)) {
 | |
|                         continue;
 | |
|                     }
 | |
| 
 | |
|                     if (in_array($report->id, $pins)) {
 | |
|                         $this->reports->push($report);
 | |
| 
 | |
|                         $this->icons[$report->id] = $class->getIcon();
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return view('livewire.report.pins');
 | |
|     }
 | |
| }
 |