Ejemplo n.º 1
0
 /**
  * @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]);
 }