<?php

namespace App\Http\Controllers\Admin;

use DB, Cache;
use App\{
	Media,
	MediaBlocklist,
	Profile,
	Status
};
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;

trait AdminMediaController
{
	public function media(Request $request)
	{
		$this->validate($request, [
			'layout' => [
				'nullable',
				'string',
				'min:1',
				'max:13',
				Rule::in(['grid','list', 'banned', 'addbanned'])
			],
			'search' => 'nullable|string|min:1|max:20'
		]);

		if($request->filled('search')) {
			$profiles = Profile::where('username', 'like', '%'.$request->input('search').'%')->pluck('id')->toArray();
			$media = Media::whereHas('status')
				->with('status')
				->orderby('id', 'desc')
				->whereIn('profile_id', $profiles)
				->orWhere('mime', $request->input('search'))
				->paginate(12);
			return view('admin.media.home', compact('media'));
		}

		if($request->input('layout') == 'banned') {
			$media = MediaBlocklist::latest()->paginate(12);
			return view('admin.media.home', compact('media'));
		}

		$media = Media::whereNull('remote_url')->orderby('id', 'desc')->simplePaginate(12);
		return view('admin.media.home', compact('media'));
	}

	public function mediaShow(Request $request, $id)
	{
		$media = Media::findOrFail($id);
		return view('admin.media.show', compact('media'));
	}
}