/home2/mshostin/carnival.ms-hostingladz.com/app/Http/Controllers/Vendor/BlogController.php
<?php
namespace App\Http\Controllers\Vendor;
use App\Http\Controllers\Controller;
use App\Models\Blogs;
use App\Models\Category;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use App\Models\Region;
class BlogController extends Controller
{
public function index(Request $request)
{
$blogs = Blogs::with("category", "user","regions")->where('user_id', Auth::id());
if ($request->has('search') && $request->search != null && $request->search != '') {
$blogs = $blogs->where('title', 'LIKE', '%' . $request->search . '%');
}
$blogs = $blogs->paginate(10);
if ($request->has("type")) {
return $blogs;
}
$layout = match (Auth::user()->role->name) {
'Admin' => 'dashboard.admin.layouts.app',
'Vendor' => 'dashboard.vendor.layouts.app',
'SubVendor' => 'dashboard.subvendor.layouts.app',
};
return view('dashboard.vendor.blogs.index', compact('blogs', 'layout'));
}
public function create()
{
$user = User::where('role_id', '!=', 1)->get();
$categories = Category::where('type', 'blogging')->get();
$regions = Region::all();
$layout = match (Auth::user()->role->name) {
'Admin' => 'dashboard.admin.layouts.app',
'Vendor' => 'dashboard.vendor.layouts.app',
'SubVendor' => 'dashboard.subvendor.layouts.app',
};
return view('dashboard.vendor.blogs.create', compact('categories', 'user', 'layout', 'regions'));
}
public function store(Request $request)
{
try {
$request->validate([
'title' => 'required|unique:blogs',
'image' => 'required|image|max:2048',
'description' => 'required',
'status' => 'required|in:0,1',
'category_id' => [
'required',
'exists:categories,id'
],
'region_id' => [
'required',
'exists:regions,id'
],
]);
if (auth()->user()->role_id == 1) {
$request->validate([
'user_id' => [
'required',
'exists:users,id'
]
]);
}
$blogs = new Blogs();
$blogs->user_id = $request->user_id;
$blogs->category_id = $request->category_id;
$blogs->title = $request->title;
$blogs->slug = Str::slug($request->title, '-');
if ($request->hasFile('image')) {
$blogs->image = $request->file('image')->store('images/blogs');
}
$blogs->description = $request->description;
$blogs->status = $request->status;
$blogs->save();
return redirect()->route('vendor.blogs.index')->with('success', 'Blog created successfully...');
} catch (\Exception $e) {
return back()->withErrors(['error' => $e->getMessage()])->withInput();
}
}
public function edit(Blogs $blog)
{
$user = User::where('role_id', '!=', 1)->get();
$categories = Category::where('type', 'blogging')->get();
$regions = Region::all();
$layout = match (Auth::user()->role->name) {
'Admin' => 'dashboard.admin.layouts.app',
'Vendor' => 'dashboard.vendor.layouts.app',
'SubVendor' => 'dashboard.subvendor.layouts.app',
};
return view('dashboard.vendor.blogs.edit', compact('blog', 'categories', 'user', 'layout', 'regions'));
}
public function update(Request $request, Blogs $blog)
{
try {
$request->validate([
'title' => 'required',
// 'image' => 'image|max:2048',
'description' => 'required',
'status' => 'required|in:0,1',
'category_id' => [
'required',
'exists:categories,id'
],
'region_id' => [
'required',
'exists:regions,id'
],
]);
if (auth()->user()->role_id == 1) {
$request->validate([
'user_id' => [
'required',
'exists:users,id'
]
]);
}
$blog->title = $request->title;
$blog->slug = Str::slug($request->title, '-');
$blog->user_id = $request->user_id;
$blog->category_id = $request->category_id;
if ($request->hasFile('image')) {
$blog->image = $request->file('image')->store('images/blogs');
}
$blog->description = $request->description;
$blog->status = $request->status;
$blog->save();
return redirect()->route('vendor.blogs.index')->with('success', 'Blog updated successfully.');
} catch (\Exception $e) {
return back()->withErrors(['error' => $e->getMessage()])->withInput();
}
}
public function destroy(Blogs $blog)
{
$blog->delete();
return redirect()->route('vendor.blogs.index')->with('success', 'Blog deleted successfully.');
}
}