/** * @return mixed */ protected function sortorderChange() { if (!($model = $this->request->get('model'))) { return new JsonResponse(['You have to specify an model']); } /** @var Model $model */ $model = ucfirst($model); $model = new $model(); $orderByColumn = isset($model->orderby[0]) ? $model->orderby[0] : 'sortorder'; $orderByMode = isset($model->orderby[1]) ? $model->orderby[1] : 'ASC'; $segments = array_reverse(explode('/', $this->request->get('url'))); $numeric = null; foreach ($segments as $segment) { if (is_numeric($segment)) { $numeric = $segment; break; } } if (null !== $numeric && $this->request->has('relation')) { $model = $model->findOrNew($numeric); $records = $model->{$this->request->get('relation')}(function ($q) use($orderByColumn, $orderByMode) { $q->orderBy($orderByColumn, $orderByMode); })->get(); } else { $records = $model::orderBy($orderByColumn, $orderByMode); foreach ($this->request->get('filter', []) as $q) { $records->whereRaw($q); } $records = $records->get(); } $newOrder = 1; foreach ($this->request->get('order') as $new) { $new = (int) $new; foreach ($records as $rec) { if ($new === $rec->id) { $rec->sortorder = $newOrder; $rec->save(); $newOrder++; break; } } } return new JsonResponse(['message' => (string) Notification::successInstant('De volgorde is opgeslagen.'), 'status' => 200]); }