namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\News; use Illuminate\Support\Str; class NewsController extends Controller { /** * Display a listing of the news. */ public function index() { $newsList = News::all(); return view('admin.news.index', compact('newsList')); } /** * Show the form for creating a new news item. */ public function create() { return view('admin.news.create'); } /** * Store a newly created news item. */ public function store(Request $request) { $request->validate([ 'title' => 'required|max:255', 'slug' => 'nullable|max:255|unique:news,slug', 'document' => 'nullable|file|mimes:pdf,doc,docx', ]); $news = new News(); $news->title = $request->title; $news->slug = $request->slug ?: Str::slug($request->title); $news->status = $request->status ? 1 : 0; // Handle file upload if ($request->hasFile('document')) { $file = $request->file('document'); $filename = time() . '-' . $file->getClientOriginalName(); $file->move(public_path('uploads/news'), $filename); $news->document = $filename; } $news->save(); return redirect()->route('admin.news.index')->with('success', 'News added successfully.'); } /** * Show the form for editing the specified news item. */ public function edit($id) { $news = News::findOrFail($id); return view('admin.news.edit', compact('news')); } /** * Update the specified news item. */ public function update(Request $request, $id) { $news = News::findOrFail($id); $request->validate([ 'title' => 'required|max:255', 'slug' => 'nullable|max:255|unique:news,slug,' . $news->id, 'document' => 'nullable|file|mimes:pdf,doc,docx', ]); $news->title = $request->title; $news->slug = $request->slug ?: Str::slug($request->title); $news->status = $request->status ? 1 : 0; // Handle file upload if ($request->hasFile('document')) { // Delete the old file if exists if ($news->document && file_exists(public_path('uploads/news/' . $news->document))) { unlink(public_path('uploads/news/' . $news->document)); } $file = $request->file('document'); $filename = time() . '-' . $file->getClientOriginalName(); $file->move(public_path('uploads/news'), $filename); $news->document = $filename; } $news->save(); return redirect()->route('admin.news.index')->with('success', 'News updated successfully.'); } /** * Remove the specified news item. */ public function destroy($id) { $news = News::findOrFail($id); // Delete the associated document if exists if ($news->document && file_exists(public_path('uploads/news/' . $news->document))) { unlink(public_path('uploads/news/' . $news->document)); } $news->delete(); return redirect()->route('admin.news.index')->with('success', 'News deleted successfully.'); } }