From 59c583ac7485fcc6f9e19cfd68648b2eb0257832 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 8 Mar 2022 16:42:27 -0800 Subject: [PATCH] adds the ability to save eula pdfs to storage, still working on storing them in the DB and exposing them in the UI --- .../Account/AcceptanceController.php | 43 +++++++++++-------- app/Http/Controllers/ActionlogController.php | 7 +++ .../Controllers/Api/ReportsController.php | 1 + .../Transformers/ActionlogsTransformer.php | 2 +- .../account/accept/accept-eula.blade.php | 32 ++++++++++++++ resources/views/reports/activity.blade.php | 1 + routes/web.php | 4 ++ 7 files changed, 72 insertions(+), 18 deletions(-) create mode 100644 resources/views/account/accept/accept-eula.blade.php diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 45b59f4ce2..bb5eaafe3d 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -10,11 +10,11 @@ use App\Http\Controllers\Controller; use App\Models\CheckoutAcceptance; use App\Models\Company; use App\Models\Contracts\Acceptable; -use Barryvdh\DomPDF\PDF; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; +use Barryvdh\DomPDF\Facade\Pdf; class AcceptanceController extends Controller { @@ -40,6 +40,7 @@ class AcceptanceController extends Controller { $acceptance = CheckoutAcceptance::find($id); + if (is_null($acceptance)) { return redirect()->route('account.accept')->with('error', trans('admin/hardware/message.does_not_exist')); } @@ -96,20 +97,25 @@ class AcceptanceController extends Controller if (! Storage::exists('private_uploads/signatures')) { Storage::makeDirectory('private_uploads/signatures', 775); } + $sig_filename = ''; + if ($request->filled('signature_output')) { $sig_filename = 'siglog-'.Str::uuid().'-'.date('Y-m-d-his').'.png'; $data_uri = e($request->input('signature_output')); $encoded_image = explode(',', $data_uri); $decoded_image = base64_decode($encoded_image[1]); - Storage::put('private_uploads/signatures/'.$sig_filename, (string) $decoded_image); + $path = Storage::put('private_uploads/signatures/'.$sig_filename, (string) $decoded_image); } if ($request->input('asset_acceptance') == 'accepted') { $acceptance->accept($sig_filename); + event(new CheckoutAccepted($acceptance)); $return_msg = trans('admin/users/message.accepted'); + + } else { $acceptance->decline($sig_filename); @@ -117,21 +123,24 @@ class AcceptanceController extends Controller $return_msg = trans('admin/users/message.declined'); } - $sig_image=Storage::get('private_uploads/signatures/'.$sig_filename); - $this->SignatureEulaPDF($acceptance, $sig_image ); + + $item = $acceptance->checkoutable_type::find($acceptance->checkoutable_id); + + $data = [ + 'item' => $item, + 'eula' => $item->getEula(), + 'signature' => storage_path().'/private_uploads/signatures/'.$sig_filename, + 'logo' => public_path().'/uploads/snipe-logo.png', + ]; + + \Log::error(storage_path().'/eula-pdfs/'.$sig_filename); + + $pdf = Pdf::loadView('account.accept.accept-eula', $data); + $stored_eula = Storage::put('private_uploads/eula-pdfs/accepted-eula-'.date('Y-m-d-h-i-s').'.pdf', $pdf->output()); + + //not sure what im doing here,but I think its something of this. + route('log.storedeula.download', $stored_eula); return redirect()->to('account/accept')->with('success', $return_msg); } - - public function SignatureEulaPDF($acceptance, $sig_image) - { -// When I compact the $data I at least get back an ipsum string in the error message that is recognized as an -// "unknown variable". 2nd param in load view should be the array of things you wanted rendered in the pdf. - $data = [ - 'eula'=> $acceptance->checkoutable->getEula(), - 'signature' => $sig_image, - ]; - $pdf = PDF::loadView('account.accept.create', compact($data)); - return $pdf->download('test.pdf'); - } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/ActionlogController.php b/app/Http/Controllers/ActionlogController.php index 31ac13dab5..2b3f6d6f5c 100644 --- a/app/Http/Controllers/ActionlogController.php +++ b/app/Http/Controllers/ActionlogController.php @@ -16,4 +16,11 @@ class ActionlogController extends Controller return Response::make($contents)->header('Content-Type', $filetype); } + + public function getStoredEula($filename){ + $this->authorize('view', \App\Models\Asset::class); + $file = config('app.private_uploads').'/eula-pdfs/'.$filename; + + return Response::download($file); + } } diff --git a/app/Http/Controllers/Api/ReportsController.php b/app/Http/Controllers/Api/ReportsController.php index 1406dba791..815138654d 100644 --- a/app/Http/Controllers/Api/ReportsController.php +++ b/app/Http/Controllers/Api/ReportsController.php @@ -52,6 +52,7 @@ class ReportsController extends Controller 'accept_signature', 'action_type', 'note', + 'stored_eula_file', ]; $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; diff --git a/app/Http/Transformers/ActionlogsTransformer.php b/app/Http/Transformers/ActionlogsTransformer.php index 7959157105..4e774ac581 100644 --- a/app/Http/Transformers/ActionlogsTransformer.php +++ b/app/Http/Transformers/ActionlogsTransformer.php @@ -112,7 +112,7 @@ class ActionlogsTransformer 'signature_file' => ($actionlog->accept_signature) ? route('log.signature.view', ['filename' => $actionlog->accept_signature ]) : null, 'log_meta' => ((isset($clean_meta)) && (is_array($clean_meta))) ? $clean_meta: null, 'action_date' => ($actionlog->action_date) ? Helper::getFormattedDateObject($actionlog->action_date, 'datetime'): Helper::getFormattedDateObject($actionlog->created_at, 'datetime'), - + 'stored_eula_file' => ($actionlog->stored_eula_file) ? route('log.storedeula.download', [ 'filename' => $actionlog->stored_eula_file]) : null, ]; return $array; diff --git a/resources/views/account/accept/accept-eula.blade.php b/resources/views/account/accept/accept-eula.blade.php new file mode 100644 index 0000000000..71a08169f2 --- /dev/null +++ b/resources/views/account/accept/accept-eula.blade.php @@ -0,0 +1,32 @@ + + + + + + + HTML 5 Boilerplate + + + + +@if ($signature) +
+ +
+@endif +
+ +

{{ $item->name }}

+

Date: {{ date('Y-m-d h:i') }}

+@if ($eula) + {!! $eula !!} +@endif + +

+@if ($signature) +
+ +
+@endif + + \ No newline at end of file diff --git a/resources/views/reports/activity.blade.php b/resources/views/reports/activity.blade.php index 92af14ed03..1ab6f74cf0 100644 --- a/resources/views/reports/activity.blade.php +++ b/resources/views/reports/activity.blade.php @@ -53,6 +53,7 @@ {{ trans('general.to') }} {{ trans('general.notes') }} {{ trans('general.changed') }} + {{ trans('general.accept_eula') }} diff --git a/routes/web.php b/routes/web.php index 315d841655..0eb5d8ec56 100644 --- a/routes/web.php +++ b/routes/web.php @@ -124,6 +124,10 @@ Route::group(['middleware' => 'auth'], function () { 'display-sig/{filename}', [ActionlogController::class, 'displaySig'] )->name('log.signature.view'); + Route::get( + 'stored-eula-file/{$filename}/download', + [ActionlogController::class, 'getStoredEula'] + )->name('log.storedeula.download'); }); /*