use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\PostsRequest;
use App\Models\MediaLibrary;
use App\Models\Post;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class PostController extends Controller
{
public function index(): View
{
return view('admin.posts.index', [
'posts' => Post::withCount('comments', 'likes')->with('author')->latest()->paginate(50)
]);
}
public function edit(Post $post): View
{
return view('admin.posts.edit', [
'post' => $post,
'users' => User::authors()->pluck('name', 'id'),
'media' => MediaLibrary::first()->media()->get()->pluck('name', 'id')
]);
}
public function create(Request $request): View
{
return view('admin.posts.create', [
'users' => User::authors()->pluck('name', 'id'),
'media' => MediaLibrary::first()->media()->get()->pluck('name', 'id')
]);
}
public function store(PostsRequest $request): RedirectResponse
{
$post = Post::create($request->only(['title', 'content', 'posted_at', 'author_id', 'thumbnail_id']));
return redirect()->route('admin.posts.edit', $post)->withSuccess(__('posts.created'));
}
public function update(PostsRequest $request, Post $post): RedirectResponse
{
$post->update($request->only(['title', 'content', 'posted_at', 'author_id', 'thumbnail_id']));
return redirect()->route('admin.posts.edit', $post)->withSuccess(__('posts.updated'));
}
public function destroy(Post $post)
{
$post->delete();
return redirect()->route('admin.posts.index')->withSuccess(__('posts.deleted'));
}
}