View file ProForum/Files/application/app/Http/Controllers/Admin/PostController.php

File size: 2.85Kb
<?php

namespace App\Http\Controllers\Admin;

use App\Models\Post;
use App\Models\PostImage;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class PostController extends Controller
{

    public function pending()
    {
        $pageTitle = 'Pending Posts';
        $posts = $this->postData('text','pending');
        return view('admin.posts.list', compact('pageTitle', 'posts'));
    }


    public function active()
    {
        $pageTitle = 'Active Posts';
        $posts = $this->postData('text','active');
        return view('admin.posts.list', compact('pageTitle', 'posts'));
    }


    public function rejected()
    {
        $pageTitle = 'Rejected Posts';
        $posts = $this->postData('text','rejected');
        return view('admin.posts.list', compact('pageTitle', 'posts'));
    }
    public function deletePost($id)
    {
        $post = Post::find($id);
        $images = PostImage::wherePostId($post->id)->get();
        if($images){
            foreach($images as $image){
                fileManager()->removeFile(getFilePath('posts') . $image->path . $image->image);
            }
        }
        $post->images()->delete();
        $post->comments()->delete();
        $post->bookmarks()->delete();
        $post->delete();
        $notify[] = ['success', 'Post Deleted'];
        return redirect()->back()->withNotify($notify);
    }

    public function posts()
    {
        $pageTitle = 'All Posts';
        $emptyMessage = "No data found";
        $posts = $this->postData('text');
        return view('admin.posts.list', compact('pageTitle', 'posts', 'emptyMessage'));
    }

    public function job_post_list()
    {
        $pageTitle = 'All Job Posts';
        $emptyMessage = "No data found";
        $posts = $this->postData('job');
        return view('admin.posts.job_list', compact('pageTitle', 'posts', 'emptyMessage'));
    }

    protected function postData($type = null, $scope = null)
    {
        if ($scope) {
            $posts = Post::$scope();
        } else {
            $posts = Post::query();
        }

        //search
        $request = request();
        if ($request->search) {
            $search = $request->search;
            $posts  = $posts->where($type , 1)->where(function ($post) use ($search) {
                $post->where('title', 'like', "%$search%")
                    ->orWhere('content', 'like', "%$search%");
            });
        }
        
        return $posts->with('user','category','apply_job')->where($type,1)->orderBy('id', 'desc')->paginate(getPaginate());
    }

    public function details($id)
    {
        $general = gs();
        $post = Post::where('id', $id)->with(['user','category'])->firstOrFail();
        $latestPosts = Post::latest()->take(10)->get();
        $pageTitle = 'Post Details';
        return view('admin.posts.detail', compact('pageTitle', 'post','general','latestPosts'));
    }


}