add object-type, group, and fields without group
parent
f09f04fd05
commit
52ed94e452
|
|
@ -19,13 +19,16 @@ class ObjectTypesController extends Controller {
|
|||
$parent = ($val = $request->get('parent')) ? $this->model->byUuidOrName($val)->first() : null;
|
||||
$query = $parent ? $parent->children() : $this->model->query()->where(['parent_id' => 0]);
|
||||
$query->orderBy('id');
|
||||
if ($request->get('with_trashed')) $this->model->query()->withTrashed();
|
||||
$paginator = $query->paginate(config('app.pagination_limit'));
|
||||
return fractal($paginator, new ObjectTypeTransformer())->respond();
|
||||
}
|
||||
|
||||
public function show($id): JsonResponse {
|
||||
$model = $this->model->byUuidOrName($id)->firstOrFail();
|
||||
return fractal($model, new ObjectTypeTransformer())->respond();
|
||||
public function show(Request $request, $id): JsonResponse {
|
||||
$query = $this->model->byUuid($id);
|
||||
if ($request->get('with_trashed')) $query->withTrashed();
|
||||
$model = $query->firstOrFail();
|
||||
return fractal($model, new ObjectTypeTransformer($request->get('with_trashed', false)))->respond();
|
||||
}
|
||||
|
||||
public function store(Request $request): JsonResponse {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@ use App\Services\Forms\Advisories\AdvisoryFormsServices;
|
|||
use App\Services\Forms\Applications\ApplicationFormsServices;
|
||||
use App\Services\Forms\Companies\CompanyFormsServices;
|
||||
use App\Services\Forms\Feedback\FeedbackFormsServices;
|
||||
use App\Services\Forms\Objects\FieldFormsServices;
|
||||
use App\Services\Forms\Objects\FieldsGroupFormsServices;
|
||||
use App\Services\Forms\Objects\ObjectTypeFormsServices;
|
||||
use App\Services\Forms\Pages\PageFormsServices;
|
||||
use App\Services\Forms\Publications\PublicationFormsServices;
|
||||
use App\Services\Forms\Registries\RegistryFormsServices;
|
||||
|
|
@ -23,7 +26,10 @@ class FormsService {
|
|||
FeedbackFormsServices::class,
|
||||
AdvisoryFormsServices::class,
|
||||
CompanyFormsServices::class,
|
||||
ApplicationFormsServices::class
|
||||
ApplicationFormsServices::class,
|
||||
ObjectTypeFormsServices::class,
|
||||
FieldsGroupFormsServices::class,
|
||||
FieldFormsServices::class
|
||||
];
|
||||
|
||||
public function __construct() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Objects;
|
||||
|
||||
use App\Events\FeedbackSender;
|
||||
use App\Models\Dictionaries\DictionaryItem;
|
||||
use App\Models\Objects\Field;
|
||||
use App\Models\Objects\FieldType;
|
||||
use App\Models\Objects\ObjectType;
|
||||
use App\Services\Forms\FormsService;
|
||||
use App\Transformers\Dictionaries\DictionaryItemTransformer;
|
||||
use App\Transformers\Objects\FieldTransformer;
|
||||
use App\Transformers\Objects\ObjectTypeTransformer;
|
||||
|
||||
class FieldForms extends FormsService
|
||||
{
|
||||
public array $formTitles = ['create' => 'Создание поля', 'update' => 'Редактирование поля'];
|
||||
|
||||
public function form(?string $id = null, array $data = []): array {
|
||||
$model = Field::byUuid($id)->first();
|
||||
$groups = [
|
||||
['name' => 'common', 'fields' => $this->commonGroupFields($model)]
|
||||
];
|
||||
return ['title' => $this->formTitle($model), 'data' => $groups];
|
||||
}
|
||||
|
||||
public function commonGroupFields(?Field $model): array {
|
||||
$fields = [
|
||||
[
|
||||
'name' => 'name',
|
||||
'title' => 'Наименование',
|
||||
'type' => FieldType::STRING,
|
||||
'required' => true,
|
||||
'value' => $model->name ?? null
|
||||
],
|
||||
[
|
||||
'name' => 'title',
|
||||
'title' => 'Заголовок',
|
||||
'type' => FieldType::STRING,
|
||||
'required' => true,
|
||||
'value' => $model->title ?? null
|
||||
],
|
||||
[
|
||||
'name' => 'type',
|
||||
'title' => 'Тип данных',
|
||||
'type' => FieldType::RELATION,
|
||||
'required' => true,
|
||||
'options' => $this->getRelationItems(FieldType::TITLES),
|
||||
'value' => $this->getRelationValue(FieldType::TITLES, $model->type ?? null)
|
||||
|
||||
],
|
||||
[
|
||||
'name' => 'required',
|
||||
'title' => 'Обязательное',
|
||||
'type' => FieldType::BOOLEAN,
|
||||
'value' => $model->reqired ?? false
|
||||
],
|
||||
[
|
||||
'name' => 'multiple',
|
||||
'title' => 'Множественое',
|
||||
'type' => FieldType::BOOLEAN,
|
||||
'value' => $model->multiple ?? false
|
||||
],
|
||||
[
|
||||
'name' => 'filterable',
|
||||
'title' => 'Фильтр',
|
||||
'type' => FieldType::BOOLEAN,
|
||||
'value' => $model->filterable ?? false
|
||||
],
|
||||
|
||||
[
|
||||
'name' => 'params',
|
||||
'title' => 'Параметры',
|
||||
'type' => FieldType::STRING,
|
||||
'value' => $model->hidden ?? null
|
||||
],
|
||||
];
|
||||
return ['data' => $fields];
|
||||
}
|
||||
|
||||
public function store(array $data) {
|
||||
$object_type = ObjectType::byUuid($data['object_type'] ?? null)->first();
|
||||
$data['object_type_id'] = $object_type->id ?? null;
|
||||
$model = Field::create($data);
|
||||
return fractal($model, new FieldTransformer())->respond();
|
||||
}
|
||||
|
||||
public function update(string $id, array $data) {
|
||||
$model = ObjectType::byUuid($id)->firstOrFail();
|
||||
$model->update($data);
|
||||
return fractal($model->fresh(), new ObjectTypeTransformer())->respond();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Objects;
|
||||
|
||||
class FieldFormsServices {
|
||||
public static array $services = [
|
||||
'field' => FieldForms::class
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Objects;
|
||||
|
||||
use App\Events\FeedbackSender;
|
||||
use App\Models\Objects\FieldsGroup;
|
||||
use App\Models\Objects\FieldType;
|
||||
use App\Models\Objects\ObjectType;
|
||||
use App\Services\Forms\FormsService;
|
||||
use App\Transformers\Objects\FieldsGroupTransformer;
|
||||
use App\Transformers\Objects\ObjectTypeTransformer;
|
||||
|
||||
class FieldsGroupForms extends FormsService
|
||||
{
|
||||
public array $formTitles = ['create' => 'Создание группы объекта', 'update' => 'Редактирование группы объекта'];
|
||||
|
||||
public function form(?string $id = null, array $data = []): array {
|
||||
$model = FieldsGroup::byUuid($id)->first();
|
||||
$groups = [
|
||||
['name' => 'common', 'fields' => $this->commonGroupFields($model)]
|
||||
];
|
||||
return ['title' => $this->formTitle($model), 'data' => $groups];
|
||||
}
|
||||
|
||||
public function commonGroupFields(?FieldsGroup $model): array {
|
||||
$fields = [
|
||||
[
|
||||
'name' => 'name',
|
||||
'title' => 'Наименование',
|
||||
'type' => FieldType::STRING,
|
||||
'required' => true,
|
||||
'value' => $model->name ?? null
|
||||
]
|
||||
];
|
||||
return ['data' => $fields];
|
||||
}
|
||||
|
||||
public function store(array $data) {
|
||||
$object_type = ObjectType::byUuid($data['object_type'] ?? null)->first();
|
||||
$data['object_type_id'] = $object_type->id ?? null;
|
||||
$model = FieldsGroup::create($data);
|
||||
return fractal($model, new FieldsGroupTransformer())->respond();
|
||||
}
|
||||
|
||||
public function update(string $id, array $data) {
|
||||
$model = ObjectType::byUuid($id)->firstOrFail();
|
||||
$model->update($data);
|
||||
return fractal($model->fresh(), new ObjectTypeTransformer())->respond();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Objects;
|
||||
|
||||
class FieldsGroupFormsServices {
|
||||
public static array $services = [
|
||||
'fieldsGroup' => FieldsGroupForms::class
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Objects;
|
||||
|
||||
use App\Events\FeedbackSender;
|
||||
use App\Models\Objects\FieldType;
|
||||
use App\Models\Objects\ObjectType;
|
||||
use App\Services\Forms\FormsService;
|
||||
use App\Transformers\Objects\ObjectTypeTransformer;
|
||||
|
||||
class ObjectTypeForms extends FormsService {
|
||||
public array $formTitles = ['create' => 'Создание типового объекта', 'update' => 'Редактирование типового объекта'];
|
||||
|
||||
public function form(?string $id = null, array $data = []): array {
|
||||
$model = ObjectType::byUuid($id)->first();
|
||||
$groups = [
|
||||
['name' => 'common', 'fields' => $this->commonGroupFields($model)]
|
||||
];
|
||||
return ['title' => $this->formTitle($model), 'data' => $groups];
|
||||
}
|
||||
|
||||
public function commonGroupFields(?ObjectType $model): array {
|
||||
$fields = [
|
||||
[
|
||||
'name' => 'name',
|
||||
'title' => 'Наименование',
|
||||
'type' => FieldType::STRING,
|
||||
'required' => true,
|
||||
'value' => $model->name ?? null
|
||||
],
|
||||
[
|
||||
'name' => 'title',
|
||||
'title' => 'Заголовок',
|
||||
'type' => FieldType::STRING,
|
||||
'required' => true,
|
||||
'value' => $model->title ?? null
|
||||
]
|
||||
];
|
||||
return ['data' => $fields];
|
||||
}
|
||||
|
||||
public function store(array $data) {
|
||||
$parent = ObjectType::byUuid($data['parent'] ?? null)->first();
|
||||
$data['parent_id'] = $parent->id ?? 0;
|
||||
$model = ObjectType::create($data);
|
||||
return fractal($model, new ObjectTypeTransformer())->respond();
|
||||
}
|
||||
|
||||
public function update(string $id, array $data) {
|
||||
$model = ObjectType::byUuid($id)->firstOrFail();
|
||||
$model->update($data);
|
||||
return fractal($model->fresh(), new ObjectTypeTransformer())->respond();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Forms\Objects;
|
||||
|
||||
class ObjectTypeFormsServices {
|
||||
public static array $services = [
|
||||
'objectType' => ObjectTypeForms::class
|
||||
];
|
||||
}
|
||||
|
|
@ -8,19 +8,24 @@ use League\Fractal\Resource\Item;
|
|||
use League\Fractal\TransformerAbstract;
|
||||
|
||||
class ObjectTypeTransformer extends TransformerAbstract {
|
||||
public function __construct(?bool $withTrashed = false) {
|
||||
$this->withTrashed = $withTrashed;
|
||||
}
|
||||
|
||||
protected array $defaultIncludes = [
|
||||
|
||||
];
|
||||
|
||||
protected array $availableIncludes = [
|
||||
'parent', 'children', 'groups', 'objects'
|
||||
'groups', 'parent', 'children', 'objects'
|
||||
];
|
||||
|
||||
public function transform(ObjectType $model): array {
|
||||
return [
|
||||
'id' => $model->uuid,
|
||||
'name' => $model->name,
|
||||
'title' => $model->title
|
||||
'title' => $model->title,
|
||||
'deleted_at' => $model->deleted_at
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,9 @@ Route::group(['prefix' => 'publications'], function() {
|
|||
Route::group(['prefix' => 'object-types'], function() {
|
||||
Route::get('/', 'Api\Objects\ObjectTypesController@index');
|
||||
Route::get('/{id}', 'Api\Objects\ObjectTypesController@show');
|
||||
Route::group(['middleware' => ['auth:api']], function() {
|
||||
Route::delete('/{id}', 'Api\Objects\ObjectTypesController@destroy');
|
||||
});
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'objects'], function() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue