academy/app/Http/Controllers/adminmycoursesController.php

124 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class adminmycoursesController extends Controller
{
// 1. Courses ලැයිස්තුව පෙන්වීම (Read)
public function index()
{
if (!session()->has('admin_id')) {
return redirect('/adminlogin')->with('error', 'Please login first!');
}
$courses = DB::table('courses')->orderBy('id', 'desc')->get();
return view('admin.adminmycourses', compact('courses'));
}
// 2. අලුත් Course එකක් එකතු කිරීම (Create)
public function store(Request $request)
{
$request->validate([
'title' => 'required|string|max:255',
'course_code' => 'required|string|max:50',
'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp|max:2048',
'duration' => 'required|string',
'level' => 'required|string',
'author' => 'nullable|string',
'desc' => 'nullable|string',
'status' => 'required|string',
]);
$imagePath = null;
if ($request->hasFile('image')) {
$imagePath = $request->file('image')->store('courses', 'public');
}
DB::table('courses')->insert([
'title' => $request->title,
'course_code' => $request->course_code,
'image' => $imagePath,
'duration' => $request->duration,
'level' => $request->level,
'author' => $request->author ?? 'Admin',
'desc' => $request->desc,
'student' => $request->student ?? 0,
'rating' => $request->rating ?? 0.0,
'badge' => $request->badge,
'trending' => $request->has('trending') ? 1 : 0,
'status' => $request->status,
'created_at' => now(),
'updated_at' => now(),
]);
return redirect()->back()->with('success', 'Course added successfully!');
}
// 3. Course එක Update කිරීම (Update)
public function update(Request $request, $id)
{
$request->validate([
'title' => 'required|string|max:255',
'course_code' => 'required|string|max:50',
'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp|max:2048',
'duration' => 'required|string',
'level' => 'required|string',
'status' => 'required|string',
]);
$course = DB::table('courses')->where('id', $id)->first();
if (!$course) {
return redirect()->back()->with('error', 'Course not found!');
}
$imagePath = $course->image;
if ($request->hasFile('image')) {
if ($course->image && Storage::disk('public')->exists($course->image)) {
Storage::disk('public')->delete($course->image);
}
$imagePath = $request->file('image')->store('courses', 'public');
}
DB::table('courses')->where('id', $id)->update([
'title' => $request->title,
'course_code' => $request->course_code,
'image' => $imagePath,
'duration' => $request->duration,
'level' => $request->level,
'author' => $request->author,
'desc' => $request->desc,
'badge' => $request->badge,
'trending' => $request->has('trending') ? 1 : 0,
'status' => $request->status,
'updated_at' => now(),
]);
return redirect()->back()->with('success', 'Course updated successfully!');
}
// 4. Course එක Delete කිරීම (Delete)
// Course එක Delete කිරීම (Delete)
public function destroy($id)
{
$course = DB::table('courses')->where('id', $id)->first();
if ($course) {
// Image එක Storage එකෙන් Delete කිරීම
if ($course->image && Storage::disk('public')->exists($course->image)) {
Storage::disk('public')->delete($course->image);
}
// Database record එක Delete කිරීම
DB::table('courses')->where('id', $id)->delete();
return redirect()->back()->with('success', 'Course deleted successfully!');
}
return redirect()->back()->with('error', 'Course not found!');
}
}