add edit and delete object-type, group and fields. fix bugs

master
Andrey 2024-03-21 17:21:07 +03:00
parent 52ed94e452
commit b7d9719976
8 changed files with 119 additions and 17 deletions

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Api\Objects;
use App\Http\Controllers\Controller;
use App\Models\Objects\Field;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FieldsController extends Controller {
protected Field $model;
public function __construct(Field $model) {
$this->model = $model;
}
public function index(Request $request): JsonResponse {
return fractal()->respond();
}
public function show(Request $request, $id): JsonResponse {
return fractal()->respond();
}
public function store(Request $request): JsonResponse {
return fractal()->respond(201);
}
public function update(Request $request, $uuid): JsonResponse {
return fractal()->respond();
}
public function destroy(Request $request, $uuid): JsonResponse {
$model = $this->model->byUuid($uuid)->firstOrFail();
$model->delete();
return response()->json(null, 204);
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Api\Objects;
use App\Http\Controllers\Controller;
use App\Models\Objects\FieldsGroup;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class GroupsController extends Controller {
protected FieldsGroup $model;
public function __construct(FieldsGroup $model) {
$this->model = $model;
}
public function index(Request $request): JsonResponse {
return fractal()->respond();
}
public function show(Request $request, $id): JsonResponse {
return fractal()->respond();
}
public function store(Request $request): JsonResponse {
return fractal()->respond(201);
}
public function update(Request $request, $uuid): JsonResponse {
return fractal()->respond();
}
public function destroy(Request $request, $uuid): JsonResponse {
$model = $this->model->byUuid($uuid)->firstOrFail();
$model->delete();
return response()->json(null, 204);
}
}

View File

@ -25,7 +25,7 @@ class ObjectTypesController extends Controller {
}
public function show(Request $request, $id): JsonResponse {
$query = $this->model->byUuid($id);
$query = $this->model->byUuidOrName($id);
if ($request->get('with_trashed')) $query->withTrashed();
$model = $query->firstOrFail();
return fractal($model, new ObjectTypeTransformer($request->get('with_trashed', false)))->respond();

View File

@ -3,7 +3,6 @@
namespace App\Http\Controllers\Api\Objects;
use App\Http\Controllers\Controller;
use App\Models\Objects\Field;
use App\Models\Objects\NirObject;
use App\Models\Objects\ObjectType;
use App\Services\Filters\FiltersService;

View File

@ -3,14 +3,11 @@
namespace App\Services\Forms\Objects;
use App\Events\FeedbackSender;
use App\Models\Dictionaries\DictionaryItem;
use App\Models\Objects\Field;
use App\Models\Objects\FieldsGroup;
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
{
@ -53,7 +50,7 @@ class FieldForms extends FormsService
'name' => 'required',
'title' => 'Обязательное',
'type' => FieldType::BOOLEAN,
'value' => $model->reqired ?? false
'value' => $model->required ?? false
],
[
'name' => 'multiple',
@ -67,27 +64,32 @@ class FieldForms extends FormsService
'type' => FieldType::BOOLEAN,
'value' => $model->filterable ?? false
],
[
'name' => 'hidden',
'title' => 'Скрытое',
'type' => FieldType::BOOLEAN,
'value' => $model->hidden ?? false
],
[
'name' => 'params',
'title' => 'Параметры',
'type' => FieldType::STRING,
'value' => $model->hidden ?? null
'value' => $model->relared ?? 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;
$group = FieldsGroup::byUuid($data['group'])->first();
$model = Field::create($data);
$group->fields()->attach($model->id);
return fractal($model, new FieldTransformer())->respond();
}
public function update(string $id, array $data) {
$model = ObjectType::byUuid($id)->firstOrFail();
$model = Field::byUuid($id)->firstOrFail();
$model->update($data);
return fractal($model->fresh(), new ObjectTypeTransformer())->respond();
return fractal($model->fresh(), new FieldTransformer())->respond();
}
}

View File

@ -8,7 +8,6 @@ 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
{
@ -43,8 +42,8 @@ class FieldsGroupForms extends FormsService
}
public function update(string $id, array $data) {
$model = ObjectType::byUuid($id)->firstOrFail();
$model = FieldsGroup::byUuid($id)->firstOrFail();
$model->update($data);
return fractal($model->fresh(), new ObjectTypeTransformer())->respond();
return fractal($model->fresh(), new FieldsGroupTransformer())->respond();
}
}

View File

@ -17,7 +17,7 @@ class ObjectTypeTransformer extends TransformerAbstract {
];
protected array $availableIncludes = [
'groups', 'parent', 'children', 'objects'
'parent', 'children', 'groups', 'objects'
];
public function transform(ObjectType $model): array {

View File

@ -51,6 +51,22 @@ Route::group(['prefix' => 'object-types'], function() {
});
});
Route::group(['prefix' => 'group-fields'], function() {
Route::get('/', 'Api\Objects\GroupsController@index');
Route::get('/{id}', 'Api\Objects\GroupsController@show');
Route::group(['middleware' => ['auth:api']], function() {
Route::delete('/{id}', 'Api\Objects\GroupsController@destroy');
});
});
Route::group(['prefix' => 'fields'], function() {
Route::get('/', 'Api\Objects\FieldsController@index');
Route::get('/{id}', 'Api\Objects\FieldsController@show');
Route::group(['middleware' => ['auth:api']], function() {
Route::delete('/{id}', 'Api\Objects\FieldsController@destroy');
});
});
Route::group(['prefix' => 'objects'], function() {
Route::get('/', 'Api\Objects\ObjectsController@index');
Route::get('/{id}', 'Api\Objects\ObjectsController@show');