View.php
1 <?php 2 3 namespace App\Http\Livewire\CertifiedProducts; 4 5 use App\Http\Services\CertifiedProductsService; 6 use Illuminate\Support\Facades\File; 7 use Livewire\Component; 8 use WireUi\Traits\Actions; 9 10 class View extends Component 11 { 12 use Actions; 13 14 public $certifiedProductId; 15 16 public function mount() 17 { 18 $this->authorize('can_read_certified_products'); 19 } 20 21 public function getCertifiedProductProperty() 22 { 23 return CertifiedProductsService::getCertifiedProduct($this->certifiedProductId); 24 } 25 26 public function getNormScopesProperty() 27 { 28 return $this->certifiedProduct->dossier->norm->normScopes->map(function ($normScope) { 29 return $normScope->name; 30 })->implode(' + '); 31 } 32 33 public function getProtectionProfileProperty() 34 { 35 return $this->certifiedProduct->dossier->protectionProfiles->map(function ($protectionProfile) { 36 return $protectionProfile->name; 37 })->implode('\n'); 38 } 39 40 public function downloadFile() 41 { 42 43 if (!File::exists($this->certifiedProduct->xml_path)) { 44 $this->notification()->error( 45 __('certified-products.notifications.download.error.title'), 46 __('certified-products.notifications.download.error.message') 47 ); 48 return; 49 } 50 51 return response()->download($this->certifiedProduct->xml_path, $this->certifiedProduct->file_name); 52 } 53 54 public function render() 55 { 56 return view('livewire.certified-products.view') 57 ->layoutData([ 58 'title' => __('certified-products.title'), 59 'entity' => $this->certifiedProduct, 60 'breadcrumb' => 'certified-products.view', 61 ]); 62 } 63 }