Renamed blade
This commit is contained in:
@@ -1218,7 +1218,7 @@ class ReportsController extends Controller
|
||||
->filter(fn ($unaccepted) => $unaccepted->checkoutable)
|
||||
->map(fn ($unaccepted) => Checkoutable::fromAcceptance($unaccepted));
|
||||
|
||||
return view('reports/unaccepted_assets', compact('itemsForReport', 'showDeleted'));
|
||||
return view('reports/unaccepted_items', compact('itemsForReport', 'showDeleted'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1251,7 +1251,7 @@ class ReportsController extends Controller
|
||||
Log::debug('No pending acceptances');
|
||||
|
||||
// Redirect to the unaccepted items report page with error
|
||||
return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.bad_data'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('error', trans('general.bad_data_or_already_accepted'));
|
||||
}
|
||||
$item = $acceptance->checkoutable;
|
||||
$assignee = $acceptance->assignedTo ?? $item->assignedTo ?? null;
|
||||
@@ -1263,7 +1263,7 @@ class ReportsController extends Controller
|
||||
if (is_null($acceptance->created_at)) {
|
||||
Log::debug('No acceptance created_at');
|
||||
|
||||
return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.bad_data'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('error', trans('general.bad_data_or_already_accepted'));
|
||||
} else {
|
||||
if ($item instanceof LicenseSeat) {
|
||||
$logItem_res = $item->license->checkouts()->with('adminuser')->where('created_at', '=', $acceptance->created_at)->get();
|
||||
@@ -1273,18 +1273,18 @@ class ReportsController extends Controller
|
||||
if ($logItem_res->isEmpty()) {
|
||||
Log::debug('Acceptance date mismatch');
|
||||
|
||||
return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.bad_data'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('error', trans('general.bad_data_or_already_accepted'));
|
||||
}
|
||||
$logItem = $logItem_res[0];
|
||||
}
|
||||
|
||||
if (is_null($email) || $email === '') {
|
||||
return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.no_email'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('error', trans('general.no_email'));
|
||||
}
|
||||
$mailable = $this->getCheckoutMailType($acceptance, $logItem);
|
||||
Mail::to($email)->send($mailable->locale($locale));
|
||||
|
||||
return redirect()->route('reports/unaccepted_assets')->with('success', trans('admin/reports/general.reminder_sent'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('success', trans('admin/reports/general.reminder_sent'));
|
||||
}
|
||||
|
||||
private function getCheckoutMailType(CheckoutAcceptance $acceptance, $logItem): Mailable
|
||||
@@ -1321,13 +1321,13 @@ class ReportsController extends Controller
|
||||
|
||||
if (! $acceptance = CheckoutAcceptance::pending()->find($acceptanceId)) {
|
||||
// Redirect to the unaccepted assets report page with error
|
||||
return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.bad_data'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('error', trans('general.bad_data_or_already_accepted'));
|
||||
}
|
||||
|
||||
if ($acceptance->delete()) {
|
||||
return redirect()->route('reports/unaccepted_assets')->with('success', trans('admin/reports/general.acceptance_deleted'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('success', trans('admin/reports/general.acceptance_deleted'));
|
||||
} else {
|
||||
return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.deletion_failed'));
|
||||
return redirect()->route('reports/unaccepted_items')->with('error', trans('general.deletion_failed'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Models\CheckoutAcceptance;
|
||||
use App\Models\User;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
@@ -15,24 +17,25 @@ class AcceptSignatureRequest extends FormRequest
|
||||
$acceptance = $this->route('acceptance');
|
||||
$user = Auth::user();
|
||||
|
||||
if (!$acceptance || !$user) {
|
||||
if (! $acceptance || ! $user) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_string($acceptance)) {
|
||||
$acceptance = \App\Models\CheckoutAcceptance::find($acceptance);
|
||||
if (!$acceptance) {
|
||||
$acceptance = CheckoutAcceptance::find($acceptance);
|
||||
if (! $acceptance) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$user instanceof \App\Models\User) {
|
||||
if (! $user instanceof User) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only allow if the user is the assigned user or sign-in-place admin
|
||||
$assignedToId = $acceptance->assigned_to_id ?? null;
|
||||
$isSignInPlaceAdmin = session('sign_in_place_acceptance_id') === $acceptance->id && $user->can('checkout', $acceptance->checkoutable);
|
||||
|
||||
return $user->id === $assignedToId || $isSignInPlaceAdmin;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ return [
|
||||
'avatar_upload' => 'Upload Avatar',
|
||||
'back' => 'Back',
|
||||
'bad_data' => 'Nothing found. Maybe bad data?',
|
||||
'bad_data_or_already_accepted' => 'No corresponding acceptance was found. You might not have permission to perform this action, or it may have already been accepted',
|
||||
'bulkaudit' => 'Scanner Bulk Audit',
|
||||
'bulkaudit_status' => 'Audit Status',
|
||||
'bulk_checkout' => 'Bulk Checkout',
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
?>
|
||||
@extends('layouts/default')
|
||||
|
||||
{{-- Page title --}}
|
||||
@section('title')
|
||||
{{ trans('general.unaccepted_asset_report') }}
|
||||
@parent
|
||||
@stop
|
||||
|
||||
@section('header_right')
|
||||
|
||||
<div class="btn-toolbar" role="toolbar">
|
||||
<div class="btn-group mr-2" role="group">
|
||||
@if($showDeleted)
|
||||
<a href="{{ route('reports/unaccepted_items') }}" class="btn btn-default"><i class="fa fa-trash icon-white" aria-hidden="true"></i> {{ trans('general.hide_deleted') }}
|
||||
</a>
|
||||
@else
|
||||
<a href="{{ route('reports/unaccepted_items', ['deleted' => 'deleted']) }}" class="btn btn-default"><i class="fa fa-trash icon-white" aria-hidden="true"></i> {{ trans('general.show_deleted') }}
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="btn-group mr-2" role="group">
|
||||
<form method="POST" action="{{ route('reports/export/unaccepted_items') }}" accept-charset="UTF-8" class="form-horizontal">
|
||||
{{csrf_field()}}
|
||||
<button type="submit" class="btn btn-default">
|
||||
<i class="fa fa-download icon-white" aria-hidden="true"></i> {{ trans('general.download_all') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
|
||||
{{-- Page content --}}
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="box box-default">
|
||||
<div class="box-body">
|
||||
<table
|
||||
data-cookie-id-table="unacceptedItemsReport"
|
||||
data-id-table="unacceptedItemsReport"
|
||||
data-side-pagination="client"
|
||||
data-sort-order="asc"
|
||||
data-sort-name="created_at"
|
||||
data-advanced-search="false"
|
||||
id="unacceptedItemsReport"
|
||||
data-fixed-number="false"
|
||||
data-fixed-right-number="false"
|
||||
class="table table-striped snipe-table"
|
||||
data-export-options='{
|
||||
"fileName": "unaccepted-items-report-{{ date('Y-m-d') }}",
|
||||
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","icon"]
|
||||
}'>
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th class="col-sm-1" data-field="created_at" data-searchable="false" data-sortable="true">{{ trans('general.date') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('general.type') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('admin/companies/table.title') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('general.category') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('admin/hardware/form.model') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('general.name') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('admin/hardware/table.asset_tag') }}</th>
|
||||
<th class="col-sm-1" data-sortable="true">{{ trans('admin/hardware/table.checkoutto') }}</th>
|
||||
@if(auth()->user()?->isAdmin() || auth()->user()?->isSuperUser())
|
||||
<th class="col-md-1"><span class="line"></span>{{ trans('table.actions') }}</th>
|
||||
@endif
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($itemsForReport)
|
||||
@foreach ($itemsForReport as $item)
|
||||
<tr @if($item->acceptance->trashed()) style="text-decoration: line-through" @endif>
|
||||
{{-- Created date --}}
|
||||
<td>
|
||||
{{ Helper::getFormattedDateObject($item->acceptance->created_at, 'datetime', false) }}
|
||||
</td>
|
||||
{{-- Item Type --}}
|
||||
<td>{{ $item->type }}</td>
|
||||
{{-- Company name --}}
|
||||
<td>{{ $item->plain_text_company }}</td>
|
||||
|
||||
{{-- Category --}}
|
||||
<td>{{ $item->plain_text_category }}</td>
|
||||
|
||||
{{-- Model --}}
|
||||
<td>{{ $item->plain_text_model }}</td>
|
||||
|
||||
{{-- Name --}}
|
||||
<td>{{ $item->plain_text_name }}</td>
|
||||
|
||||
{{-- Asset tag or blank --}}
|
||||
<td>{{ $item->asset_tag }}</td>
|
||||
|
||||
{{-- Assigned To (with soft-delete strike if needed) --}}
|
||||
<td @if(!$item->assignee || (method_exists($item->assignee, 'trashed') && $item->assignee->trashed())) style="text-decoration: line-through" @endif>
|
||||
{!! $item->assignee
|
||||
? optional($item->assignee->present())->nameUrl() ?? e($item->assignee->name)
|
||||
: trans('admin/reports/general.deleted_user') !!}
|
||||
</td>
|
||||
|
||||
{{-- Actions: send reminder / delete --}}
|
||||
@if(auth()->user()?->isAdmin() || auth()->user()?->isSuperUser())
|
||||
<td class="text-nowrap">
|
||||
@unless($item->acceptance->trashed())
|
||||
<form method="post" class="white-space: nowrap;" action="{{ route('reports/unaccepted_items_sent_reminder') }}">
|
||||
@csrf
|
||||
<input type="hidden" name="acceptance_id" value="{{ $item->acceptance_id }}">
|
||||
@if ($item->assignee && $item->assignee->email)
|
||||
<button class="btn btn-sm btn-warning" data-tooltip="true" data-title="{{ trans('admin/reports/general.send_reminder') }}">
|
||||
<i class="fa fa-repeat" aria-hidden="true"></i>
|
||||
</button>
|
||||
@else
|
||||
<span data-tooltip="true" data-title="{{ trans('admin/reports/general.cannot_send_reminder') }}">
|
||||
<a class="btn btn-sm btn-warning disabled" href="#">
|
||||
<i class="fa fa-repeat" aria-hidden="true"></i>
|
||||
</a>
|
||||
</span>
|
||||
@endif
|
||||
<a href="{{ route('reports/unaccepted_items_delete', ['acceptanceId' => $item->acceptance_id]) }}"
|
||||
class="btn btn-sm btn-danger delete-asset"
|
||||
data-tooltip="true"
|
||||
data-toggle="modal"
|
||||
data-content="{{ trans('general.delete_confirm', ['item' => trans('admin/reports/general.acceptance_request')]) }}"
|
||||
data-title="{{ trans('general.delete') }}"
|
||||
onClick="return false;">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</form>
|
||||
@endunless
|
||||
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stop
|
||||
|
||||
@section('moar_scripts')
|
||||
@include ('partials.bootstrap-table')
|
||||
@stop
|
||||
|
||||
+5
-5
@@ -545,19 +545,19 @@ Route::group(['prefix' => 'reports', 'middleware' => ['auth']], function () {
|
||||
->name('reports.activity.post');
|
||||
|
||||
Route::get('unaccepted_assets/{deleted?}', [ReportsController::class, 'getAssetAcceptanceReport'])
|
||||
->name('reports/unaccepted_assets')
|
||||
->name('reports/unaccepted_items')
|
||||
->breadcrumbs(fn (Trail $trail) => $trail->parent('home')
|
||||
->push(trans('general.unaccepted_asset_report'), route('reports/unaccepted_assets')));
|
||||
->push(trans('general.unaccepted_asset_report'), route('reports/unaccepted_items')));
|
||||
|
||||
Route::post('unaccepted_assets/sent_reminder', [ReportsController::class, 'sentAssetAcceptanceReminder'])
|
||||
->name('reports/unaccepted_assets_sent_reminder');
|
||||
->name('reports/unaccepted_items_sent_reminder');
|
||||
|
||||
Route::delete('unaccepted_assets/{acceptanceId}/delete', [ReportsController::class, 'deleteAssetAcceptance'])
|
||||
->name('reports/unaccepted_assets_delete');
|
||||
->name('reports/unaccepted_items_delete');
|
||||
|
||||
Route::post(
|
||||
'unaccepted_assets/{deleted?}', [ReportsController::class, 'postAssetAcceptanceReport'])
|
||||
->name('reports/export/unaccepted_assets');
|
||||
->name('reports/export/unaccepted_items');
|
||||
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user