<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\ForumFeaturedTopic;
use Illuminate\Http\Request;

class FeaturedTopicsController extends Controller
{
    public function index()
    {
        $this->authorize('admin_featured_topics_list');

        $featuredTopics = ForumFeaturedTopic::orderBy('created_at', 'desc')
            ->with([
                'topic'
            ])
            ->paginate(10);

        $data = [
            'pageTitle' => trans('update.featured_topics'),
            'featuredTopics' => $featuredTopics
        ];

        return view('admin.forums.featured_topics.lists', $data);
    }

    public function create()
    {
        $this->authorize('admin_featured_topics_create');

        $data = [
            'pageTitle' => trans('update.new_featured_topic'),
        ];

        return view('admin.forums.featured_topics.create', $data);
    }

    public function store(Request $request)
    {
        $this->authorize('admin_featured_topics_create');

        $this->validate($request, [
            'topic_id' => 'required|exists:forum_topics,id',
            'icon' => 'required'
        ]);

        $data = $request->all();

        ForumFeaturedTopic::create([
            'topic_id' => $data['topic_id'],
            'icon' => $data['icon'],
            'created_at' => time()
        ]);

        return redirect('/admin/featured-topics');
    }

    public function edit($id)
    {
        $this->authorize('admin_featured_topics_edit');

        $feature = ForumFeaturedTopic::where('id', $id)
            ->with([
                'topic'
            ])
            ->first();

        if (!empty($feature)) {
            $data = [
                'pageTitle' => trans('update.edit_featured_topic'),
                'feature' => $feature
            ];

            return view('admin.forums.featured_topics.create', $data);
        }

        abort(404);
    }

    public function update(Request $request, $id)
    {
        $this->authorize('admin_featured_topics_edit');

        $this->validate($request, [
            'topic_id' => 'required|exists:forum_topics,id',
            'icon' => 'required'
        ]);

        $feature = ForumFeaturedTopic::findOrFail($id);

        $data = $request->all();

        $feature->update([
            'topic_id' => $data['topic_id'],
            'icon' => $data['icon'],
        ]);

        return redirect('/admin/featured-topics');
    }

    public function destroy($id)
    {
        $this->authorize('admin_featured_topics_delete');

        $feature = ForumFeaturedTopic::findOrFail($id);

        $feature->delete();

        return back();
    }
}
