D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
re-viewers.com
/
app
/
Http
/
Controllers
/
Admin
/
Filename :
ReviewController.php
back
Copy
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Brand; use App\Models\Category; use App\Models\Review; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; use Spatie\Image\Enums\Fit; use Spatie\Image\Image; use Throwable; class ReviewController extends Controller { public function index(Request $request) { try { // Your controller logic is fine here, assuming the model changes above $categories = Category::orderBy('category_name')->get(); $reviews = Review::with('category'); if ($request->filled('filter')) { $status = ($request->input('filter') === 'enable') ? 1 : 0; $reviews->where('status', $status); } // Corrected filter to use 'category_id' if ($request->filled('category_id')) { $reviews->where('category_id', $request->input('category_id')); } if ($request->filled('search_value')) { $keyword = $request->input('search_value'); $reviews->where('product_title', 'LIKE', "%{$keyword}%"); } $reviews = $reviews->orderBy('id', 'DESC')->paginate(12)->withQueryString(); return view('pages.reviews.index', compact('reviews', 'categories')); } catch (Throwable $e) { Log::info($e->getMessage()); return redirect()->route('admin.dashboard')->with('error', 'An unexpected error occurred while loading reviews.'); } } public function store(Request $request) { try { $request->validate([ // Corrected validation to use the right table name and column 'category_id' => 'required|exists:categories,id', 'product_title' => 'required|string|max:150', 'product_desc' => 'required|string', 'product_image' => 'nullable|image|mimes:jpeg,jpg,png|max:2048', 'product_date' => 'nullable|date', 'subcategory_id' => 'nullable|exists:categories,id', 'subsubcategory_id' => 'nullable|exists:categories,id', ]); $data = $request->except(['_token', 'submit']); $data['product_date'] = $request->filled('product_date') ? date('Y-m-d', strtotime($request->input('product_date'))) : now()->toDateString(); // ✅ يخزن بصيغة تاريخ if ($request->hasFile('product_image')) { $image = $request->file('product_image'); $imageName = Str::random(10) . '_' . time() . '.' . $image->getClientOriginalExtension(); $image->move(public_path('images'), $imageName); if (!file_exists(public_path('images/thumbs'))) { mkdir(public_path('images/thumbs'), 0775, true); } Image::load(public_path('images/' . $imageName)) ->fit(Fit::Crop, 200, 200) ->save(public_path('images/thumbs/' . $imageName)); $data['product_image'] = $imageName; } Review::create($data); // This should work now as the 'category_id' field is in $data return redirect()->route('reviews.index')->with('success', 'Review added successfully! ✅'); } catch (Throwable $e) { Log::info($e->getMessage()); return redirect()->back()->withInput()->with('error', 'An unexpected error occurred. Please try again.'); } } public function create() { try { $categories = Category::query()->whereNull('parent_id')->orderBy('category_name')->get(); $brands = Brand::orderBy('brand_name')->get(); return view('pages.reviews.create', compact('categories', 'brands'))->with('page_title', 'Add Reviews'); } catch (Throwable $e) { report($e); return redirect()->route('admin.dashboard')->with('error', 'An unexpected error occurred.'); } } // New edit and update methods public function edit(Review $review) { try { $categories = Category::whereNull('parent_id')->orderBy('category_name')->get(); // ✅ هات الساب كاتيجوريز لو فيه كاتيجوري متسجل $subcategories = $review->category_id ? Category::where('parent_id', $review->category_id)->get() : collect(); // ✅ هات الساب-ساب كاتيجوريز لو فيه ساب كاتيجوري متسجل $subsubcategories = $review->subcategory_id ? Category::where('parent_id', $review->subcategory_id)->get() : collect(); $brands = Brand::orderBy('brand_name')->get(); return view('pages.reviews.edit', compact('review', 'categories', 'subcategories', 'subsubcategories', 'brands')) ->with('page_title', 'Edit Reviews'); } catch (Throwable $e) { Log::info($e->getMessage()); return redirect()->route('reviews.index')->with('error', 'Review not found.'); } } public function update(Request $request, Review $review) { try { $request->validate([ 'category_id' => 'required|exists:categories,id', 'product_title' => 'required|string|max:150', 'product_desc' => 'required|string', 'product_image' => 'nullable|image|mimes:jpeg,jpg,png|max:2048', 'product_date' => 'nullable|date', 'subcategory_id' => 'nullable|exists:categories,id', 'subsubcategory_id' => 'nullable|exists:categories,id', ]); $data = $request->except(['_token', '_method', 'submit', 'product_image']); $data['product_date'] = $request->filled('product_date') ? date('Y-m-d', strtotime($request->input('product_date'))) : now()->toDateString(); if ($request->hasFile('product_image')) { File::delete(public_path('images/' . $review->product_image)); File::delete(public_path('images/thumbs/' . $review->product_image)); $image = $request->file('product_image'); $imageName = Str::random(10) . '_' . time() . '.' . $image->getClientOriginalExtension(); $image->move(public_path('images'), $imageName); if (!file_exists(public_path('images/thumbs'))) { mkdir(public_path('images/thumbs'), 0775, true); } Image::load(public_path('images/' . $imageName)) ->fit(Fit::Crop, 200, 200) ->save(public_path('images/thumbs/' . $imageName)); $data['product_image'] = $imageName; } $review->update($data); return redirect()->route('reviews.index')->with('success', 'Review updated successfully! ✅'); } catch (Throwable $e) { Log::info($e->getMessage()); return redirect()->back()->withInput()->with('error', 'An unexpected error occurred. Please try again.'); } } public function destroy(Review $review) { try { // حذف الصور لو موجودة if ($review->product_image) { File::delete(public_path('images/' . $review->product_image)); File::delete(public_path('images/thumbs/' . $review->product_image)); } // حذف الريفيو من الداتابيز $review->delete(); // رجوع برسالة نجاح return redirect()->route('reviews.index')->with('success', '✅ Review deleted successfully!'); } catch (Exception $e) { Log::error('Error deleting review: ' . $e->getMessage()); return redirect()->route('reviews.index')->with('error', '⚠️ Failed to delete the review. Please try again.'); } } }