%PDF- %PDF-
Direktori : /var/www/html/camillo/camillo-api-master/app/Nova/Actions/ |
Current File : /var/www/html/camillo/camillo-api-master/app/Nova/Actions/GenerateQRCode.php |
<?php namespace App\Nova\Actions; use App\Enums\UsertypeEnum; use Illuminate\Support\Facades\App; use SimpleSoftwareIO\QrCode\BaconQrCodeGenerator; use Illuminate\Bus\Queueable; use Laravel\Nova\Actions\Action; use Illuminate\Support\Collection; use Laravel\Nova\Fields\ActionFields; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; class GenerateQRCode extends Action { use InteractsWithQueue, Queueable, SerializesModels; /** * @return array|null|string */ public function name(){ return __('Generate QR code'); } /** * Perform the action on the given models. * * @param \Laravel\Nova\Fields\ActionFields $fields * @param \Illuminate\Support\Collection $models * @return mixed */ public function handle(ActionFields $fields, Collection $models) { $current_user = auth()->user(); if(!$current_user) { return Action::danger(__('Something went wrong!')); } foreach($models as $model) { if($current_user->role() != UsertypeEnum::ADMIN && !$current_user->isPrincipalOf($model)) { return Action::danger(__('You are not the principal of this institute')); } $qr_file_name = "qr_institute_$model->id.png"; if(!file_exists(storage_path("app/public/$qr_file_name"))){ $qr_code = new BaconQrCodeGenerator; $qr_code->encoding('UTF-8')->format('png')->size(250)->generate($model->id, storage_path("app/public/$qr_file_name")); } $data = [ "institute" => $model, "qr_file_name" => $qr_file_name ]; $pdf_file_name = "qr_institute_$model->id.pdf"; if(!file_exists(storage_path("app/public/$pdf_file_name"))){ $pdf = App::make('dompdf.wrapper'); $pdf->loadView('pdf.qrcode', $data)->setPaper('a4', 'portrait')->save(storage_path("app/public/$pdf_file_name")); } return Action::download(asset("storage/" . $pdf_file_name), $pdf_file_name); } return Action::danger(__("No institute selected!")); } /** * Get the fields available on the action. * * @return array */ public function fields() { return []; } }