QR Codes: Added QR codes for non-assets
This commit is contained in:
@@ -358,7 +358,7 @@ class AssetsController extends Controller
|
|||||||
|
|
||||||
$qr_code = (object) [
|
$qr_code = (object) [
|
||||||
'display' => $settings->qr_code == '1',
|
'display' => $settings->qr_code == '1',
|
||||||
'url' => route('qr_code/hardware', $asset),
|
'url' => route('qr_code/common', ['object_type' => 'hardware', 'id' => $asset->id]),
|
||||||
];
|
];
|
||||||
|
|
||||||
$total_maintenance_cost = $asset->maintenances?->sum('cost');
|
$total_maintenance_cost = $asset->maintenances?->sum('cost');
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use App\Models\Setting;
|
||||||
|
use Com\Tecnick\Barcode\Barcode;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
|
||||||
|
class QrCodeController extends Controller
|
||||||
|
{
|
||||||
|
public static $map_show_route = [
|
||||||
|
'accessories' => 'accessories.show',
|
||||||
|
'assets' => 'hardware.show',
|
||||||
|
'companies' => 'companies.show',
|
||||||
|
'components' => 'components.show',
|
||||||
|
'consumables' => 'consumables.show',
|
||||||
|
'hardware' => 'hardware.show',
|
||||||
|
'licenses' => 'licenses.show',
|
||||||
|
'locations' => 'locations.show',
|
||||||
|
'models' => 'models.show',
|
||||||
|
'users' => 'users.show',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function show($object_type, $id): Response|BinaryFileResponse|string|bool
|
||||||
|
{
|
||||||
|
$settings = Setting::getSettings();
|
||||||
|
|
||||||
|
if ($settings->label2_2d_type === 'none') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! array_key_exists($object_type, self::$map_show_route)) {
|
||||||
|
return $object_type.' is not a valid type.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$object = self::$map_object_type[$object_type]::withTrashed()->find($id);
|
||||||
|
|
||||||
|
if (! $object) {
|
||||||
|
return 'That item is invalid';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->authorize('view', $object);
|
||||||
|
|
||||||
|
$size = Helper::barcodeDimensions($settings->label2_2d_type);
|
||||||
|
$qr_file = public_path().'/uploads/barcodes/qr-'.str_slug($object_type).'-'.str_slug($id).'.png';
|
||||||
|
|
||||||
|
if (file_exists($qr_file)) {
|
||||||
|
return response()->file($qr_file, ['Content-type' => 'image/png']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$barcode = new Barcode;
|
||||||
|
$barcode_obj = $barcode->getBarcodeObj(
|
||||||
|
$settings->label2_2d_type,
|
||||||
|
route(self::$map_show_route[$object_type], $id),
|
||||||
|
$size['height'],
|
||||||
|
$size['width'],
|
||||||
|
'black',
|
||||||
|
[-2, -2, -2, -2]
|
||||||
|
);
|
||||||
|
file_put_contents($qr_file, $barcode_obj->getPngData());
|
||||||
|
|
||||||
|
return response($barcode_obj->getPngData())->header('Content-type', 'image/png');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,6 +26,7 @@ class AccessoriesTransformer
|
|||||||
'id' => $accessory->id,
|
'id' => $accessory->id,
|
||||||
'name' => e($accessory->name),
|
'name' => e($accessory->name),
|
||||||
'image' => ($accessory->image) ? Storage::disk('public')->url('accessories/'.e($accessory->image)) : null,
|
'image' => ($accessory->image) ? Storage::disk('public')->url('accessories/'.e($accessory->image)) : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'accessories', 'id' => $accessory->id]),
|
||||||
'company' => ($accessory->company) ? [
|
'company' => ($accessory->company) ? [
|
||||||
'id' => $accessory->company->id,
|
'id' => $accessory->company->id,
|
||||||
'name' => e($accessory->company->name),
|
'name' => e($accessory->company->name),
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ class AssetModelsTransformer
|
|||||||
'tag_color' => ($assetmodel->manufacturer->tag_color) ? e($assetmodel->manufacturer->tag_color) : null,
|
'tag_color' => ($assetmodel->manufacturer->tag_color) ? e($assetmodel->manufacturer->tag_color) : null,
|
||||||
] : null,
|
] : null,
|
||||||
'image' => ($assetmodel->image != '') ? Storage::disk('public')->url('models/'.e($assetmodel->image)) : null,
|
'image' => ($assetmodel->image != '') ? Storage::disk('public')->url('models/'.e($assetmodel->image)) : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'models', 'id' => $assetmodel->id]),
|
||||||
'model_number' => ($assetmodel->model_number ? e($assetmodel->model_number) : null),
|
'model_number' => ($assetmodel->model_number ? e($assetmodel->model_number) : null),
|
||||||
'min_amt' => ($assetmodel->min_amt) ? (int) $assetmodel->min_amt : null,
|
'min_amt' => ($assetmodel->min_amt) ? (int) $assetmodel->min_amt : null,
|
||||||
|
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ class AssetsTransformer
|
|||||||
'tag_color' => ($asset->defaultLoc->tag_color) ? e($asset->defaultLoc->tag_color) : null,
|
'tag_color' => ($asset->defaultLoc->tag_color) ? e($asset->defaultLoc->tag_color) : null,
|
||||||
] : null,
|
] : null,
|
||||||
'image' => ($asset->getImageUrl()) ? $asset->getImageUrl() : null,
|
'image' => ($asset->getImageUrl()) ? $asset->getImageUrl() : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'hardware', 'id' => $asset->id]),
|
||||||
'qr' => ($setting->qr_code == '1') ? Storage::disk('public')->url('barcodes/qr-'.str_slug($asset->asset_tag).'-'.str_slug($asset->id).'.png') : null,
|
'qr' => ($setting->qr_code == '1') ? Storage::disk('public')->url('barcodes/qr-'.str_slug($asset->asset_tag).'-'.str_slug($asset->id).'.png') : null,
|
||||||
'alt_barcode' => ($setting->alt_barcode_enabled == '1') ? Storage::disk('public')->url('barcodes/'.str_slug($setting->alt_barcode).'-'.str_slug($asset->asset_tag).'.png') : null,
|
'alt_barcode' => ($setting->alt_barcode_enabled == '1') ? Storage::disk('public')->url('barcodes/'.str_slug($setting->alt_barcode).'-'.str_slug($asset->asset_tag).'.png') : null,
|
||||||
'assigned_to' => $this->transformAssignedTo($asset),
|
'assigned_to' => $this->transformAssignedTo($asset),
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class CompaniesTransformer
|
|||||||
'fax' => ($company->fax != '') ? e($company->fax) : null,
|
'fax' => ($company->fax != '') ? e($company->fax) : null,
|
||||||
'email' => ($company->email != '') ? e($company->email) : null,
|
'email' => ($company->email != '') ? e($company->email) : null,
|
||||||
'image' => ($company->image) ? Storage::disk('public')->url('companies/'.e($company->image)) : null,
|
'image' => ($company->image) ? Storage::disk('public')->url('companies/'.e($company->image)) : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'companies', 'id' => $company->id]),
|
||||||
'assets_count' => (int) $company->assets_count,
|
'assets_count' => (int) $company->assets_count,
|
||||||
'licenses_count' => (int) $company->licenses_count,
|
'licenses_count' => (int) $company->licenses_count,
|
||||||
'accessories_count' => (int) $company->accessories_count,
|
'accessories_count' => (int) $company->accessories_count,
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class ComponentsTransformer
|
|||||||
'id' => (int) $component->id,
|
'id' => (int) $component->id,
|
||||||
'name' => e($component->name),
|
'name' => e($component->name),
|
||||||
'image' => ($component->image) ? Storage::disk('public')->url('components/'.e($component->image)) : null,
|
'image' => ($component->image) ? Storage::disk('public')->url('components/'.e($component->image)) : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'components', 'id' => $component->id]),
|
||||||
'serial' => ($component->serial) ? e($component->serial) : null,
|
'serial' => ($component->serial) ? e($component->serial) : null,
|
||||||
'location' => ($component->location) ? [
|
'location' => ($component->location) ? [
|
||||||
'id' => (int) $component->location->id,
|
'id' => (int) $component->location->id,
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class ConsumablesTransformer
|
|||||||
'id' => (int) $consumable->id,
|
'id' => (int) $consumable->id,
|
||||||
'name' => e($consumable->name),
|
'name' => e($consumable->name),
|
||||||
'image' => ($consumable->getImageUrl()) ? ($consumable->getImageUrl()) : null,
|
'image' => ($consumable->getImageUrl()) ? ($consumable->getImageUrl()) : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'consumables', 'id' => $consumable->id]),
|
||||||
'category' => ($consumable->category) ? [
|
'category' => ($consumable->category) ? [
|
||||||
'id' => $consumable->category->id,
|
'id' => $consumable->category->id,
|
||||||
'name' => e($consumable->category->name),
|
'name' => e($consumable->category->name),
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ class LicensesTransformer
|
|||||||
$array = [
|
$array = [
|
||||||
'id' => (int) $license->id,
|
'id' => (int) $license->id,
|
||||||
'name' => e($license->name),
|
'name' => e($license->name),
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'licenses', 'id' => $license->id]),
|
||||||
'company' => ($license->company) ? ['id' => (int) $license->company->id, 'name' => e($license->company->name)] : null,
|
'company' => ($license->company) ? ['id' => (int) $license->company->id, 'name' => e($license->company->name)] : null,
|
||||||
'manufacturer' => ($license->manufacturer) ? [
|
'manufacturer' => ($license->manufacturer) ? [
|
||||||
'id' => (int) $license->manufacturer->id,
|
'id' => (int) $license->manufacturer->id,
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class LocationsTransformer
|
|||||||
'id' => (int) $location->id,
|
'id' => (int) $location->id,
|
||||||
'name' => e($location->name),
|
'name' => e($location->name),
|
||||||
'image' => ($location->image) ? Storage::disk('public')->url('locations/'.e($location->image)) : null,
|
'image' => ($location->image) ? Storage::disk('public')->url('locations/'.e($location->image)) : null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'locations', 'id' => $location->id]),
|
||||||
'address' => ($location->address) ? e($location->address) : null,
|
'address' => ($location->address) ? e($location->address) : null,
|
||||||
'address2' => ($location->address2) ? e($location->address2) : null,
|
'address2' => ($location->address2) ? e($location->address2) : null,
|
||||||
'city' => ($location->city) ? e($location->city) : null,
|
'city' => ($location->city) ? e($location->city) : null,
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ class UsersTransformer
|
|||||||
|
|
||||||
public function transformUser(User $user)
|
public function transformUser(User $user)
|
||||||
{
|
{
|
||||||
|
|
||||||
$role = null;
|
$role = null;
|
||||||
if ($user->isSuperUser()) {
|
if ($user->isSuperUser()) {
|
||||||
$role = 'superadmin';
|
$role = 'superadmin';
|
||||||
@@ -31,6 +30,7 @@ class UsersTransformer
|
|||||||
$array = [
|
$array = [
|
||||||
'id' => (int) $user->id,
|
'id' => (int) $user->id,
|
||||||
'avatar' => e($user->present()->gravatar) ?? null,
|
'avatar' => e($user->present()->gravatar) ?? null,
|
||||||
|
'qr_code_url' => route('qr_code/common', ['object_type' => 'users', 'id' => $user->id]),
|
||||||
'name' => e($user->getFullNameAttribute()) ?? null,
|
'name' => e($user->getFullNameAttribute()) ?? null,
|
||||||
'first_name' => e($user->first_name) ?? null,
|
'first_name' => e($user->first_name) ?? null,
|
||||||
'last_name' => e($user->last_name) ?? null,
|
'last_name' => e($user->last_name) ?? null,
|
||||||
|
|||||||
@@ -216,6 +216,11 @@ class Setting extends Model
|
|||||||
return $custom_css;
|
return $custom_css;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isQrEnabled(): bool
|
||||||
|
{
|
||||||
|
return $this->qr_code == '1' || $this->label2_2d_type !== 'none';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts bytes into human readable file size.
|
* Converts bytes into human readable file size.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$accessory" img_path="{{ app('accessories_upload_url') }}">
|
<x-info-panel :infoPanelObj="$accessory" img_path="{{ app('accessories_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'accessories', 'id' => $accessory->id])">
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
<x-button.edit :item="$accessory" :route="route('accessories.edit', $accessory->id)"/>
|
<x-button.edit :item="$accessory" :route="route('accessories.edit', $accessory->id)"/>
|
||||||
<x-button.clone :item="$accessory" :route="route('clone/accessories', $accessory->id)"/>
|
<x-button.clone :item="$accessory" :route="route('clone/accessories', $accessory->id)"/>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
@props([
|
@props([
|
||||||
'infoPanelObj' => null,
|
'infoPanelObj' => null,
|
||||||
'img_path' => null,
|
'img_path' => null,
|
||||||
|
'qr_code_url' => null,
|
||||||
'snipeSettings' => \App\Models\Setting::getSettings()
|
'snipeSettings' => \App\Models\Setting::getSettings()
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -589,6 +590,12 @@
|
|||||||
{{ $after_list }}
|
{{ $after_list }}
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@if ($qr_code_url && $snipeSettings->isQrEnabled())
|
||||||
|
<div class="col-md-12 text-center asset-qr-img" style="padding-top: 15px;">
|
||||||
|
<img src="{{ $qr_code_url }}" class="img-thumbnail" style="height: 150px; width: 150px; margin-right: 10px;" alt="QR code for {{ $infoPanelObj->name }}">
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- end side info-box -->
|
<!-- end side info-box -->
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
</x-page-column>
|
</x-page-column>
|
||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$company" img_path="{{ app('companies_upload_url') }}">
|
<x-info-panel :infoPanelObj="$company" img_path="{{ app('companies_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'companies', 'id' => $company->id])">
|
||||||
|
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
<x-button.edit :item="$company" :route="route('companies.edit', $company->id)" />
|
<x-button.edit :item="$company" :route="route('companies.edit', $company->id)" />
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
|
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$snipe_component" img_path="{{ app('components_upload_url') }}">
|
<x-info-panel :infoPanelObj="$snipe_component" img_path="{{ app('components_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'components', 'id' => $snipe_component->id])">
|
||||||
|
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
<x-button.edit :item="$snipe_component" :route="route('components.edit', $snipe_component->id)"/>
|
<x-button.edit :item="$snipe_component" :route="route('components.edit', $snipe_component->id)"/>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$consumable" img_path="{{ app('consumables_upload_url') }}">
|
<x-info-panel :infoPanelObj="$consumable" img_path="{{ app('consumables_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'consumables', 'id' => $consumable->id])">
|
||||||
|
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
<x-button.edit :item="$consumable" :route="route('consumables.edit', $consumable->id)"/>
|
<x-button.edit :item="$consumable" :route="route('consumables.edit', $consumable->id)"/>
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ $qr_size = ($settings->alt_barcode_enabled=='1') && ($settings->label2_1d_type!=
|
|||||||
|
|
||||||
@if ($settings->qr_code=='1')
|
@if ($settings->qr_code=='1')
|
||||||
<div class="qr_img">
|
<div class="qr_img">
|
||||||
<img src="{{ config('app.url') }}/hardware/{{ $asset->id }}/qr_code" class="qr_img">
|
<img src="{{ route('qr_code/common', ['object_type' => 'hardware', 'id' => $asset->id]) }}" class="qr_img">
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ $qr_size = ($settings->alt_barcode_enabled=='1') && ($settings->label2_1d_type!=
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (($count % $settings->labels_per_page == 0) && $count!=count($assets))
|
@if ($settings->labels_per_page > 0 && ($count % $settings->labels_per_page == 0) && $count != count($assets))
|
||||||
<div class="page-break"></div>
|
<div class="page-break"></div>
|
||||||
<div class="next-padding"> </div>
|
<div class="next-padding"> </div>
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
@@ -318,12 +318,13 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
@if (($snipeSettings->qr_code=='1') || $snipeSettings->label2_2d_type!='none')
|
@if ($snipeSettings->isQrEnabled())
|
||||||
<div class="col-md-12 text-center asset-qr-img" style="padding-top: 15px;">
|
<div class="col-md-12 text-center asset-qr-img" style="padding-top: 15px;">
|
||||||
<img src="{{ config('app.url') }}/hardware/{{ $asset->id }}/qr_code" class="img-thumbnail" style="height: 150px; width: 150px; margin-right: 10px;" alt="QR code for {{ $asset->getDisplayNameAttribute() }}">
|
<img src="{{ route('qr_code/common', ['object_type' => 'hardware', 'id' => $asset->id]) }}" class="img-thumbnail" style="height: 150px; width: 150px; margin-right: 10px;" alt="QR code for {{ $asset->getDisplayNameAttribute() }}">
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
|
||||||
</x-page-column>
|
</x-page-column>
|
||||||
<!-- end side stats column -->
|
<!-- end side stats column -->
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
|
|
||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$license" img_path="{{ app('licenses_upload_url') }}">
|
<x-info-panel :infoPanelObj="$license" img_path="{{ app('licenses_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'licenses', 'id' => $license->id])">
|
||||||
|
|
||||||
|
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
|
|||||||
@@ -216,7 +216,7 @@
|
|||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
|
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$location" img_path="{{ app('locations_upload_url') }}">
|
<x-info-panel :infoPanelObj="$location" img_path="{{ app('locations_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'locations', 'id' => $location->id])">
|
||||||
|
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
<x-button.edit :item="$location" :route="route('locations.edit', $location->id)" />
|
<x-button.edit :item="$location" :route="route('locations.edit', $location->id)" />
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
</x-page-column>
|
</x-page-column>
|
||||||
<x-page-column class="col-md-3">
|
<x-page-column class="col-md-3">
|
||||||
<x-box class="side-box expanded">
|
<x-box class="side-box expanded">
|
||||||
<x-info-panel :infoPanelObj="$model" img_path="{{ app('models_upload_url') }}">
|
<x-info-panel :infoPanelObj="$model" img_path="{{ app('models_upload_url') }}" :qr_code_url="route('qr_code/common', ['object_type' => 'models', 'id' => $model->id])">
|
||||||
<x-slot:buttons>
|
<x-slot:buttons>
|
||||||
<x-button.edit :item="$model" :route="route('models.edit', $model->id)" />
|
<x-button.edit :item="$model" :route="route('models.edit', $model->id)" />
|
||||||
<x-button.add :item="\App\Models\Asset::class" :tooltip="trans('general.new_asset')" :route="route('hardware.create', ['model_id' => $model->id])"/>
|
<x-button.add :item="\App\Models\Asset::class" :tooltip="trans('general.new_asset')" :route="route('hardware.create', ['model_id' => $model->id])"/>
|
||||||
|
|||||||
@@ -303,6 +303,11 @@
|
|||||||
|
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@if ($snipeSettings->isQrEnabled())
|
||||||
|
<div class="col-md-12 text-center user-qr-img" style="padding-top: 15px;">
|
||||||
|
<img src="{{ route('qr_code/common', ['object_type' => 'users', 'id' => $user->id]) }}" class="img-thumbnail" style="height: 150px; width: 150px; margin-right: 10px;" alt="QR code for {{ $user->display_name }}">
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
</x-page-column>
|
</x-page-column>
|
||||||
<!-- end side stats well column-->
|
<!-- end side stats well column-->
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ use App\Http\Controllers\ManufacturersController;
|
|||||||
use App\Http\Controllers\ModalController;
|
use App\Http\Controllers\ModalController;
|
||||||
use App\Http\Controllers\NotesController;
|
use App\Http\Controllers\NotesController;
|
||||||
use App\Http\Controllers\ProfileController;
|
use App\Http\Controllers\ProfileController;
|
||||||
|
use App\Http\Controllers\QrCodeController;
|
||||||
use App\Http\Controllers\ReportsController;
|
use App\Http\Controllers\ReportsController;
|
||||||
use App\Http\Controllers\ReportTemplatesController;
|
use App\Http\Controllers\ReportTemplatesController;
|
||||||
use App\Http\Controllers\SettingsController;
|
use App\Http\Controllers\SettingsController;
|
||||||
@@ -697,6 +698,14 @@ Route::group(['middleware' => 'web'], function () {
|
|||||||
[LoginController::class, 'logout']
|
[LoginController::class, 'logout']
|
||||||
)->name('logout.post');
|
)->name('logout.post');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* QR Code routes
|
||||||
|
*/
|
||||||
|
Route::get('{object_type}/{id}/qr_code',
|
||||||
|
[QrCodeController::class, 'show']
|
||||||
|
)->name('qr_code/common')
|
||||||
|
->where(['object_type' => 'accessories|assets|hardware|licenses|locations|models|companies|components|consumables|users']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uploaded files API routes
|
* Uploaded files API routes
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -123,10 +123,6 @@ Route::group(
|
|||||||
return redirect()->route('hardware.show', $assetId);
|
return redirect()->route('hardware.show', $assetId);
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('{asset}/qr_code',
|
|
||||||
[AssetsController::class, 'getQrCode']
|
|
||||||
)->name('qr_code/hardware')->withTrashed();
|
|
||||||
|
|
||||||
Route::get('{asset}/barcode',
|
Route::get('{asset}/barcode',
|
||||||
[AssetsController::class, 'getBarCode']
|
[AssetsController::class, 'getBarCode']
|
||||||
)->name('barcode/hardware')->withTrashed();
|
)->name('barcode/hardware')->withTrashed();
|
||||||
|
|||||||
Reference in New Issue
Block a user