diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index b51f858e41baa391feaa39a263ad252b6ee52d17..ceeea44c4f7508b96b14f5d76cf3d407125c4c37 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -8,6 +8,7 @@ use App\Helpers\Helper; use App\Models\Statuslabel; use App\Models\Asset; use App\Http\Transformers\DatatablesTransformer; +use App\Http\Transformers\AssetsTransformer; class StatuslabelsController extends Controller { @@ -161,4 +162,36 @@ class StatuslabelsController extends Controller return $result; } + /** + * Display the specified resource. + * + * @author [A. Gianotto] [<snipe@snipe.net>] + * @since [v4.0] + * @param int $id + * @return \Illuminate\Http\Response + */ + public function assets(Request $request, $id) + { + $this->authorize('view', Statuslabel::class); + $this->authorize('index', Asset::class); + $assets = Asset::where('status_id','=',$id); + + $allowed_columns = [ + 'id', + 'name' + ]; + + $offset = request('offset', 0); + $limit = $request->input('limit', 50); + $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; + $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; + $assets->orderBy($sort, $order); + + $total = $assets->count(); + $assets = $assets->skip($offset)->take($limit)->get(); + + + return (new AssetsTransformer)->transformAssets($assets, $total); + } + } diff --git a/app/Http/Controllers/StatuslabelsController.php b/app/Http/Controllers/StatuslabelsController.php index 951bf99636bf16e1fcee7e2ba81fec2afa05310d..8989a38196b400019d8f22fbcec80c3dc683c5c6 100755 --- a/app/Http/Controllers/StatuslabelsController.php +++ b/app/Http/Controllers/StatuslabelsController.php @@ -32,10 +32,19 @@ class StatuslabelsController extends Controller public function index() { - // Show the page return View::make('statuslabels/index', compact('statuslabels')); } + public function show($id) + { + $statuslabel = Statuslabel::find($id); + + if (isset($statuslabel->id)) { + return View::make('statuslabels/view', compact('statuslabel')); + } + + return redirect()->route('statuslabels.index')->with('error', trans('admin/locations/message.does_not_exist', compact('id'))); + } diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index 97f4225226373576b696f51d66096a47cbfd1849..68c4a908bc66b6dafc36445642bbc7fb94e42614 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -25,7 +25,7 @@ class AssetsTransformer 'serial' => $asset->serial, 'model' => ($asset->model) ? $asset->model->name : '', 'model_number' => $asset->model_number, - 'status_label' => ($asset->assetstatus) ? $asset->assetstatus->name : '', + 'status_label' => ($asset->assetstatus) ? $asset->assetstatus : '', 'last_checkout' => $asset->last_checkout, 'category' => ($asset->model->category) ? $asset->model->category->name : '', 'manufacturer' => $asset->manufacturer, diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index ca941230cf94fe39b707d3d776c4c2845571b37b..439935d8729f9334f3313e94a3fc9c6b0f223b2a 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -26,7 +26,8 @@ class UsersTransformer 'lastname' => e($user->last_name), 'username' => e($user->username), 'employee_num' => e($user->employee_num), - 'manager' => ($user->manager) ? $user->manager->name : false, + 'manager' => ($user->manager) ? (new UsersTransformer)->transformUser($user->manager) : '', + 'groups' => $user->groups, 'jobtitle' => e($user->jobtitle), 'email' => e($user->email), 'location' => (new LocationsTransformer)->transformLocation($user->userloc), @@ -46,4 +47,6 @@ class UsersTransformer + + } diff --git a/resources/views/statuslabels/view.blade.php b/resources/views/statuslabels/view.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..a81fcc1a0f4cebd2580aeabf51ab004b9c51fbe6 --- /dev/null +++ b/resources/views/statuslabels/view.blade.php @@ -0,0 +1,102 @@ +@extends('layouts/default') + +{{-- Page title --}} +@section('title') + {{ $statuslabel->name }} Assets ({{ $statuslabel->getStatuslabelType() }}) + @parent +@stop + +@section('header_right') + <a href="{{ route('statuslabels.create') }}" class="btn btn-primary pull-right"> + {{ trans('general.create') }}</a> +@stop +{{-- Page content --}} +@section('content') + <div class="row"> + <div class="col-md-12"> + <div class="box"> + <div class="box-body"> + {{ Form::open([ + 'method' => 'POST', + 'route' => ['hardware/bulkedit'], + 'class' => 'form-inline', + 'id' => 'bulkForm']) }} + <div class="row"> + <div class="col-md-12"> + @if (Input::get('status')!='Deleted') + <div id="toolbar"> + <select name="bulk_actions" class="form-control select2"> + <option value="edit">Edit</option> + <option value="delete">Delete</option> + <option value="labels">Generate Labels</option> + </select> + <button class="btn btn-default" id="bulkEdit" disabled>Go</button> + </div> + @endif + + <table + name="assets" + {{-- data-row-style="rowStyle" --}} + data-toolbar="#toolbar" + class="table table-striped snipe-table" + id="table" + data-url="{{route('api.assets.index', array(''=>e(Input::get('status')),'order_number'=>e(Input::get('order_number')), 'status_id'=>e(Input::get('status_id'))))}}" + data-cookie="true" + data-click-to-select="true" + data-cookie-id-table="{{ e(Input::get('status')) }}assetTable-{{ config('version.hash_version') }}"> + <thead> + <tr> + @if (Input::get('status')!='Deleted') + <th data-checkbox="true" data-field="checkbox"></th> + @endif + <th data-sortable="true" data-field="id" data-visible="false">{{ trans('general.id') }}</th> + <th data-field="companyName" data-searchable="true" data-sortable="true" data-switchable="true" data-visible="false">{{ trans('general.company') }}</th> + <th data-sortable="true" data-field="image" data-visible="false">{{ trans('admin/hardware/table.image') }}</th> + <th data-sortable="true" data-field="name" data-visible="false">{{ trans('admin/hardware/form.name') }}</th> + <th data-sortable="true" data-field="asset_tag" data-formatter="assetFormatter">{{ trans('admin/hardware/table.asset_tag') }}</th> + <th data-sortable="true" data-field="serial" data-formatter="assetFormatter">{{ trans('admin/hardware/table.serial') }}</th> + <th data-sortable="true" data-field="model">{{ trans('admin/hardware/form.model') }}</th> + <th data-sortable="true" data-field="model_number" data-visible="false">{{ trans('admin/models/table.modelnumber') }}</th> + + <th data-sortable="true" data-field="assigned_to">{{ trans('admin/hardware/form.checkedout_to') }}</th> + <th data-sortable="true" data-formatter="locationFormatter" data-field="location" data-searchable="true">{{ trans('admin/hardware/table.location') }}</th> + <th data-sortable="true" data-field="category" data-searchable="true">{{ trans('general.category') }}</th> + <th data-sortable="true" data-field="manufacturer" data-searchable="true" data-visible="false">{{ trans('general.manufacturer') }}</th> + <th data-sortable="true" data-field="purchase_cost" data-searchable="true" data-visible="false">{{ trans('admin/hardware/form.cost') }}</th> + <th data-sortable="true" data-field="purchase_date" data-searchable="true" data-visible="false">{{ trans('admin/hardware/form.date') }}</th> + <th data-sortable="false" data-field="eol" data-searchable="true">{{ trans('general.eol') }}</th> + <th data-sortable="true" data-searchable="true" data-field="notes">{{ trans('general.notes') }}</th> + <th data-sortable="true" data-searchable="true" data-field="order_number">{{ trans('admin/hardware/form.order') }}</th> + <th data-sortable="true" data-searchable="true" data-field="last_checkout">{{ trans('admin/hardware/table.checkout_date') }}</th> + <th data-sortable="true" data-field="expected_checkin" data-searchable="true">{{ trans('admin/hardware/form.expected_checkin') }}</th> + @foreach(\App\Models\CustomField::all() AS $field) + + + <th data-sortable="{{ ($field->field_encrypted=='1' ? 'false' : 'true') }}" data-visible="false" data-field="{{$field->db_column_name()}}"> + @if ($field->field_encrypted=='1') + <i class="fa fa-lock"></i> + @endif + + {{$field->name}} + </th> + + @endforeach + <th data-sortable="true" data-field="created_at" data-formatter="createdAtFormatter" data-searchable="true" data-visible="false">{{ trans('general.created_at') }}</th> + <th data-switchable="false" data-searchable="false" data-sortable="false" data-field="change">{{ trans('admin/hardware/table.change') }}</th> + + <th data-switchable="false" data-searchable="false" data-formatter="actionsFormatter" data-sortable="false" data-field="actions" >{{ trans('table.actions') }}</th> + </tr> + </thead> + </table> + </div><!-- /.col --> + </div><!-- /.row --> + {{ Form::close() }} + </div><!-- ./box-body --> + </div><!-- /.box --> + </div> + </div> +@stop + +@section('moar_scripts') + @include ('partials.bootstrap-table', ['exportFile' => 'statuslabels-export', 'search' => true]) +@stop diff --git a/routes/api.php b/routes/api.php index 97eccd4445bb7e7959687395c1c5bbdcccb3af9c..5dd3e07a5ef0401241f3026d981dbcc158c459f4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -147,6 +147,9 @@ Route::group(['prefix' => 'v1','namespace' => 'Api'], function () { Route::group([ 'prefix' => 'statuslabels'], function () { + Route::get('{id}/assetlist', + [ 'as' => 'api.statuslabels.assets', 'uses' => 'StatuslabelsController@assets' ]); + Route::get('{id}/deployable', function ($statuslabelId) { $statuslabel = Statuslabel::find($statuslabelId);