diff --git a/app/Http/Controllers/Api/Objects/ObjectsController.php b/app/Http/Controllers/Api/Objects/ObjectsController.php index 255e126..e691b39 100644 --- a/app/Http/Controllers/Api/Objects/ObjectsController.php +++ b/app/Http/Controllers/Api/Objects/ObjectsController.php @@ -24,24 +24,6 @@ class ObjectsController extends Controller { $query = $this->model->query(); $service = FiltersService::getService('objects'); $service->applyFilters($query, $filters); - /* - if (($val = $request->get('type')) && ($type = ObjectType::query()->where(['name' => $val])->first())) { - $query->whereHas('type', function ($query) use ($val) { - $query->where('name', $val)->orWhereHas('parent', function ($query) use ($val) { - $query->where('name', $val); - }); - }); - if (in_array('product', [$type->name, $type->parent->name ?? null]) && ($field = Field::byUuidOrName('specification-holder')->first())) { - $field->applyFilter($query, $request->user()->companies->pluck('uuid')->all()); - } - } - $filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : []); - $filters->each(function($value, $prop) use($query) { - if ($prop === 'search') $this->model->applySearchFilter($query, $value); - elseif ($field = Field::byUuidOrName($prop)->first()) $field->applyFilter($query, $value); - }); - $query->orderBy('created_at', 'desc'); - */ $paginator = $query->paginate(config('app.pagination_limit')); return fractal($paginator, new ObjectTransformer())->respond(); } diff --git a/app/Models/Objects/NirObject.php b/app/Models/Objects/NirObject.php index c8c9ad5..354a9f7 100644 --- a/app/Models/Objects/NirObject.php +++ b/app/Models/Objects/NirObject.php @@ -54,7 +54,7 @@ class NirObject extends Model { } public function objects(): MorphToMany { - return $this->morphToMany(NirObject::class, 'objectable'); + return $this->morphToMany(NirObject::class, 'objectable')->withPivot(['ord', 'group']); } public function objectables($related): MorphToMany { diff --git a/app/Support/HasObjectsTrait.php b/app/Support/HasObjectsTrait.php index 16d3a2b..48b97b2 100644 --- a/app/Support/HasObjectsTrait.php +++ b/app/Support/HasObjectsTrait.php @@ -38,9 +38,10 @@ trait HasObjectsTrait { } public function attachObject(NirObject $object, $ord = null, $group = null) { + $group = $group ?? 'default'; $ord = ($ord === null) ? $this->getMaxObjectOrd($group) : $ord; $this->moveObjectsSet('forward', $ord, null, $group); - $this->objects()->attach($object->id, ['ord' => $ord ?? 0, 'group' => $group ?? 'default']); + $this->objects()->attach($object->id, ['ord' => $ord ?? 0, 'group' => $group]); } public function getMaxObjectOrd($group = null): int { @@ -71,7 +72,7 @@ trait HasObjectsTrait { public function trimIndexes($groups) { collect(is_array($groups) ? $groups : [$groups])->unique()->each(function($group) { - $this->objectsByGroup($group)->each(function($object, $index) { + $this->objectsByGroup($group)->orderByPivot('ord')->each(function($object, $index) { if ($object->pivot->ord !== $index) $this->objects()->updateExistingPivot($object, ['ord' => $index]); }); }); diff --git a/app/Transformers/Objects/ObjectTransformer.php b/app/Transformers/Objects/ObjectTransformer.php index e7f9387..fd26a01 100644 --- a/app/Transformers/Objects/ObjectTransformer.php +++ b/app/Transformers/Objects/ObjectTransformer.php @@ -48,7 +48,7 @@ class ObjectTransformer extends TransformerAbstract { } public function includeObjects(NirObject $model): Collection { - return $this->collection($model->objects, new ObjectTransformer()); + return $this->collection($model->objects()->orderByPivot('ord')->get(), new ObjectTransformer()); } public function includePermissions(NirObject $model): Primitive {