snipe-it/app/Http/Transformers/PredefinedKitsTransformer.php

94 lines
2.8 KiB
PHP
Raw Normal View History

2018-10-31 06:06:38 -07:00
<?php
2018-10-31 06:06:38 -07:00
namespace App\Http\Transformers;
use App\Helpers\Helper;
2018-10-31 06:06:38 -07:00
use App\Models\PredefinedKit;
use App\Models\SnipeModel;
use Illuminate\Support\Facades\Gate;
use Illuminate\Database\Eloquent\Collection;
2018-10-31 06:06:38 -07:00
2019-02-23 11:44:03 -08:00
/**
* transforms collection of models to array with simple typres
*
2019-02-23 11:44:03 -08:00
* @author [D. Minaev] [<dmitriy.minaev.v@gmail.com>]
* @return array
*/
2018-10-31 06:06:38 -07:00
class PredefinedKitsTransformer
{
public function transformPredefinedKits(Collection $kits, $total)
2018-10-31 06:06:38 -07:00
{
$array = [];
2018-10-31 06:06:38 -07:00
foreach ($kits as $kit) {
$array[] = self::transformPredefinedKit($kit);
}
2018-10-31 06:06:38 -07:00
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformPredefinedKit(PredefinedKit $kit)
2018-10-31 06:06:38 -07:00
{
$array = [
'id' => (int) $kit->id,
'name' => e($kit->name),
'created_by' => ($kit->adminuser) ? [
'id' => (int) $kit->adminuser->id,
'name'=> e($kit->adminuser->present()->fullName()),
] : null,
'created_at' => Helper::getFormattedDateObject($kit->created_at, 'datetime'),
'updated_at' => Helper::getFormattedDateObject($kit->updated_at, 'datetime'),
2018-10-31 06:06:38 -07:00
];
$permissions_array['available_actions'] = [
'update' => Gate::allows('update', PredefinedKit::class),
'delete' => Gate::allows('delete', PredefinedKit::class),
'checkout' => Gate::allows('checkout', PredefinedKit::class),
2018-10-31 06:06:38 -07:00
// 'clone' => Gate::allows('create', PredefinedKit::class),
// 'restore' => Gate::allows('create', PredefinedKit::class),
];
2018-11-13 09:33:32 -08:00
$array['user_can_checkout'] = true;
2018-10-31 06:06:38 -07:00
$array += $permissions_array;
2018-10-31 06:06:38 -07:00
return $array;
}
2019-02-23 11:44:03 -08:00
/**
* transform collection of any elemets attached to kit
2019-02-23 11:44:03 -08:00
* @return array
*/
public function transformElements(Collection $elements, $total)
{
$array = [];
2018-10-31 06:06:38 -07:00
foreach ($elements as $element) {
$array[] = self::transformElement($element);
}
2018-10-31 06:06:38 -07:00
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformElement(SnipeModel $element)
{
2018-10-31 06:06:38 -07:00
$array = [
'id' => (int) $element->id,
'pivot_id' => (int) $element->pivot->id,
'owner_id' => (int) $element->pivot->kit_id,
'quantity' => (int) $element->pivot->quantity,
'name' => e($element->name),
2018-10-31 06:06:38 -07:00
];
$permissions_array['available_actions'] = [
'update' => Gate::allows('update', PredefinedKit::class),
'delete' => Gate::allows('delete', PredefinedKit::class),
];
$array += $permissions_array;
2018-10-31 06:06:38 -07:00
return $array;
}
public function transformPredefinedKitsDatatable($kits)
{
2018-10-31 06:06:38 -07:00
return (new DatatablesTransformer)->transformDatatables($kits);
}
}