Beispiel #1
0
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index(Request $request)
 {
     $search = $request->input('search');
     $categories = $request->input('categories');
     $status = $request->input('status');
     $sort = $request->input('sort');
     if (!in_array($sort, ['nme', 'rnk', 'rnk_wek', 'dte_upd'])) {
         $sort = 'rnk';
     }
     $order = $request->input('order');
     if (!in_array($order, ['asc', 'desc'])) {
         $order = 'asc';
     }
     $offset = $request->input('offset', 0);
     $limit = min($request->input('limit', static::MAX_COUNT_PER_REQUEST), static::MAX_COUNT_PER_REQUEST);
     $mangaIds = [];
     if (!is_null($categories)) {
         if (!is_array($categories)) {
             $categories = [$categories];
         }
         $results = MangaCategory::select('mng_id')->whereIn('cat_id', $categories)->distinct()->get();
         foreach ($results as $result) {
             $mangaIds[] = $result->mng_id;
         }
     }
     $query = $this->makeMangaIndexQuery($mangaIds, $status, $search);
     $mangaTotalCount = $query->count();
     $mangas = $this->makeMangaIndexQuery($mangaIds, $status, $search)->select(Manga::$briefAttrToSelect)->orderBy($sort, $order)->skip($offset)->take($limit)->get();
     return response()->json($mangas->map(function ($manga) {
         return $manga->toArray(Manga::$briefAttrToOutput);
     }))->header('X-Total-Count', $mangaTotalCount);
 }