diff --git a/app/Http/Controllers/AdminAuthController.php b/app/Http/Controllers/AdminAuthController.php
new file mode 100644
index 0000000..8461cf2
--- /dev/null
+++ b/app/Http/Controllers/AdminAuthController.php
@@ -0,0 +1,65 @@
+validate([
+ 'username' => 'required',
+ 'password' => 'required',
+ ]);
+
+ $admin = DB::table('adminlogins')->where('username', $request->username)->first();
+
+ if ($admin && Hash::check($request->password, $admin->password)) {
+
+ session([
+ 'admin_id' => $admin->id,
+ 'admin_username' => $admin->username
+ ]);
+
+ return response()->json([
+ 'success' => true,
+ 'message' => 'Login Successful!',
+ 'redirect_url' => url('admin/adminmycourese')
+ ]);
+ }
+
+ return response()->json([
+ 'success' => false,
+ 'message' => 'Wrong Username or Password!'
+ ], 401);
+}
+
+public function logout(Request $request)
+{
+ // 1. Session එකෙන් Admin දත්ත ඉවත් කර Session එක Invalidate කිරීම
+ $request->session()->forget(['admin_id', 'admin_username']);
+ $request->session()->invalidate();
+ $request->session()->regenerateToken();
+
+ // 2. Request එක AJAX / JSON එකක් නම් JSON Response එකක් යැවීම
+ if ($request->ajax() || $request->wantsJson()) {
+ return response()->json([
+ 'success' => true,
+ 'redirect_url' => route('admin.login')
+ ]);
+ }
+
+ // 3. Normal Form submit එකක් නම් කෙලින්ම Login page එකට Redirect කිරීම
+ return redirect()->route('admin.login')->with('success', 'Logged out successfully!');
+}
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/AdminDashboardController.php b/app/Http/Controllers/AdminDashboardController.php
new file mode 100644
index 0000000..961c557
--- /dev/null
+++ b/app/Http/Controllers/AdminDashboardController.php
@@ -0,0 +1,43 @@
+has('admin_id')) {
+ return redirect()->route('admin.login')->with('error', 'Please login first.');
+ }
+
+
+ $totalTimetableSlots = Timetable::count();
+
+ $unreadNotifications = Notification::where('target_role', 'admin')
+ ->where('is_read', false)
+ ->count();
+
+ $notifications = Notification::where('target_role', 'admin')
+ ->orderBy('created_at', 'desc')
+ ->take(5)
+ ->get();
+
+ return view('admin.admindashboard', compact(
+ 'totalTimetableSlots',
+ 'unreadNotifications',
+ 'notifications'
+ ));
+ }
+
+ public function markAsRead($id)
+ {
+ $notification = Notification::findOrFail($id);
+ $notification->update(['is_read' => true]);
+
+ return redirect()->back()->with('success', 'Notification marked as read!');
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/AdminProfileController.php b/app/Http/Controllers/AdminProfileController.php
new file mode 100644
index 0000000..070be99
--- /dev/null
+++ b/app/Http/Controllers/AdminProfileController.php
@@ -0,0 +1,60 @@
+validate([
+ 'username' => 'required|string|max:255|unique:adminlogins,username,' . $admin->id,
+ ]);
+
+ $admin->update([
+ 'username' => $request->username,
+ ]);
+
+ return redirect()->back()->with('success', 'Username updated successfully!');
+ }
+
+ // Change Password
+ public function updatePassword(Request $request)
+ {
+ $request->validate([
+ 'current_password' => 'required',
+ 'new_password' => 'required|min:6|confirmed',
+ ]);
+
+ $adminId = session('admin_id');
+ $admin = AdminLogin::findOrFail($adminId);
+
+ // Verify current password
+ if (!Hash::check($request->current_password, $admin->password)) {
+ return redirect()->back()->withErrors(['current_password' => 'Current password does not match our records.']);
+ }
+
+ // Update to new password
+ $admin->update([
+ 'password' => Hash::make($request->new_password)
+ ]);
+
+ return redirect()->back()->with('success', 'Password updated successfully!');
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/AdminResultsController.php b/app/Http/Controllers/AdminResultsController.php
new file mode 100644
index 0000000..e1d4357
--- /dev/null
+++ b/app/Http/Controllers/AdminResultsController.php
@@ -0,0 +1,60 @@
+get();
+ return view('admin.adminresults', compact('results'));
+ }
+
+ public function store(Request $request)
+ {
+ $validated = $request->validate([
+ 'student_log_id' => 'required|string|max:255',
+ 'module_code' => 'required|string|max:255',
+ 'module_name' => 'required|string|max:255',
+ 'academic_year' => 'required|string|max:255',
+ 'semester' => 'required|string|max:255',
+ 'marks' => 'required|numeric|min:0|max:100',
+ 'grade' => 'required|string|max:10',
+ 'status' => 'required|in:Pass,Fail',
+ ]);
+
+ Result::create($validated);
+
+ return redirect()->route('admin.results')->with('success', 'Exam result added successfully.');
+ }
+
+ public function update(Request $request, $id)
+ {
+ $validated = $request->validate([
+ 'student_log_id' => 'required|string|max:255',
+ 'module_code' => 'required|string|max:255',
+ 'module_name' => 'required|string|max:255',
+ 'academic_year' => 'required|string|max:255',
+ 'semester' => 'required|string|max:255',
+ 'marks' => 'required|numeric|min:0|max:100',
+ 'grade' => 'required|string|max:10',
+ 'status' => 'required|in:Pass,Fail',
+ ]);
+
+ $result = Result::findOrFail($id);
+ $result->update($validated);
+
+ return redirect()->route('admin.results')->with('success', 'Exam result updated successfully.');
+ }
+
+ public function destroy($id)
+ {
+ $result = Result::findOrFail($id);
+ $result->delete();
+
+ return redirect()->route('admin.results')->with('success', 'Exam result deleted successfully.');
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/AdminTimetableController.php b/app/Http/Controllers/AdminTimetableController.php
new file mode 100644
index 0000000..3a687e4
--- /dev/null
+++ b/app/Http/Controllers/AdminTimetableController.php
@@ -0,0 +1,76 @@
+has('admin_id')) {
+ return redirect()->route('admin.login')->with('error', 'Please login first.');
+ }
+
+ // DB එකේ තියෙන ඔක්කොම Timetable entries ගන්නවා
+ $allTimetables = Timetable::all();
+
+ // ඊට පස්සේ Time Slot එකයි Day එකයි අනුව Map කරගන්නවා
+ $grid = [];
+ foreach ($allTimetables as $item) {
+ $grid[$item->time_slot][$item->day] = $item;
+ }
+
+ $days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
+
+ $timeSlots = [
+ '08:30 - 10:00',
+ '10:45 - 12:15',
+ '12:15 - 01:00', // Lunch / Interval
+ '01:00 - 03:00'
+ ];
+
+ // Today's Day Name
+ $today = Carbon::now()->format('l');
+ $todaySchedule = Timetable::where('day', $today)->get();
+
+ return view('admin.admintimetable', compact('allTimetables', 'days', 'timeSlots', 'grid', 'todaySchedule', 'today'));
+ }
+
+ // Save or Update Entry
+ public function store(Request $request)
+ {
+ $request->validate([
+ 'time_slot' => 'required|string',
+ 'day' => 'required|string',
+ 'subject_name' => 'required|string|max:255',
+ 'type' => 'required|string',
+ ]);
+
+ // අදාළ Day එකටයි Time Slot එකටයි කලින් Data තිබුණොත් Update කරනවා, නැත්නම් අලුතෙන් Add කරනවා
+ Timetable::updateOrCreate(
+ [
+ 'day' => $request->day,
+ 'time_slot' => $request->time_slot,
+ ],
+ [
+ 'subject_name' => $request->subject_name,
+ 'type' => $request->type,
+ 'student_log_id' => $request->student_log_id,
+ ]
+ );
+
+ return redirect()->back()->with('success', 'Timetable updated successfully!');
+ }
+
+ // Delete Single Slot
+ public function destroy($id)
+ {
+ $timetable = Timetable::findOrFail($id);
+ $timetable->delete();
+
+ return redirect()->back()->with('success', 'Timetable slot cleared successfully!');
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/adminmycoursesController.php b/app/Http/Controllers/adminmycoursesController.php
new file mode 100644
index 0000000..b5d2c0a
--- /dev/null
+++ b/app/Http/Controllers/adminmycoursesController.php
@@ -0,0 +1,119 @@
+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)
+ public function destroy($id)
+ {
+ $course = DB::table('courses')->where('id', $id)->first();
+
+ if ($course) {
+ if ($course->image && Storage::disk('public')->exists($course->image)) {
+ Storage::disk('public')->delete($course->image);
+ }
+ DB::table('courses')->where('id', $id)->delete();
+ return redirect()->back()->with('success', 'Course deleted successfully!');
+ }
+
+ return redirect()->back()->with('error', 'Course not found!');
+ }
+}
\ No newline at end of file
diff --git a/app/Models/Notification.php b/app/Models/Notification.php
new file mode 100644
index 0000000..213b241
--- /dev/null
+++ b/app/Models/Notification.php
@@ -0,0 +1,20 @@
+id();
+ $table->string('username')->unique();
+ $table->string('password');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('adminlogins');
+ }
+};
diff --git a/database/migrations/2026_08_06_102854_create_notifications_table.php b/database/migrations/2026_08_06_102854_create_notifications_table.php
new file mode 100644
index 0000000..a1ac8a1
--- /dev/null
+++ b/database/migrations/2026_08_06_102854_create_notifications_table.php
@@ -0,0 +1,33 @@
+id();
+ $table->string('title');
+ $table->text('message');
+ $table->string('type')->default('info');
+ $table->string('link')->nullable();
+ $table->boolean('is_read')->default(false);
+ $table->string('target_role')->default('admin');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('notifications');
+ }
+};
diff --git a/resources/views/admin/admindashboard.blade.php b/resources/views/admin/admindashboard.blade.php
new file mode 100644
index 0000000..40aa857
--- /dev/null
+++ b/resources/views/admin/admindashboard.blade.php
@@ -0,0 +1,233 @@
+@extends('layouts.adminnav')
+
+@section('title', 'Admin Dashboard')
+
+@section('content')
+
+
+
+
+
+
+
+
Welcome to Admin Dashboard
+
Automobile Engineering Academy System Overview
+
+
+ System Active
+
+
+
+
+ @if(session('success'))
+
+ {{ session('success') }}
+
+
+ @endif
+
+
+
+
+
+
+
+
+ My Courses
+
Manage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Active Slots
+
{{ $totalTimetableSlots ?? 0 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Results
+
Publish
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Notifications
+
{{ $unreadNotifications ?? 0 }} New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @forelse($notifications ?? [] as $notification)
+ -
+
+
+
{{ $notification->title }}
+
{{ $notification->message }}
+
+ {{ $notification->created_at->diffForHumans() }}
+
+
+ @if(!$notification->is_read)
+
+ @endif
+
+
+ @empty
+ -
+
+ No notifications found.
+
+ @endforelse
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/adminmycourses.blade.php b/resources/views/admin/adminmycourses.blade.php
new file mode 100644
index 0000000..716ac78
--- /dev/null
+++ b/resources/views/admin/adminmycourses.blade.php
@@ -0,0 +1,517 @@
+
+
+
+
+
+
+ Course Management - Admin Portal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Course Management
+
+
+
+
+ @if(session('success'))
+
+ {{ session('success') }}
+
+
+ @endif
+
+ @if(session('error'))
+
+ {{ session('error') }}
+
+
+ @endif
+
+
+
+
+
+
+
+
+ | # |
+ Image |
+ Code |
+ Title |
+ Duration |
+ Level |
+ Status |
+ Actions |
+
+
+
+ @forelse($courses as $course)
+
+ | {{ $loop->iteration }} |
+
+ @if($course->image)
+
+ @else
+ No Image
+ @endif
+ |
+ {{ $course->course_code }} |
+ {{ $course->title }} |
+ {{ $course->duration }} |
+ {{ $course->level }} |
+
+ @if($course->status == 'Active')
+ Active
+ @else
+ Inactive
+ @endif
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ @empty
+
+ | No courses found. Click "Add New Course" to create one. |
+
+ @endforelse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/admin/adminprofile.blade.php b/resources/views/admin/adminprofile.blade.php
new file mode 100644
index 0000000..b4e1dda
--- /dev/null
+++ b/resources/views/admin/adminprofile.blade.php
@@ -0,0 +1,126 @@
+@extends('layouts.adminnav')
+
+@section('title', 'Admin Profile - Admin Panel')
+
+@section('content')
+
+
+
+
+ Admin Profile Management
+
+
+
+
+
+ @if(session('success'))
+
+ {{ session('success') }}
+
+
+ @endif
+
+ @if($errors->any())
+
+
+
Please check the form for errors:
+
+ @foreach($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+
+ @endif
+
+
+
+
+
+
+
+
{{ $admin->username ?? 'Administrator' }}
+
System Administrator
+
+
+
+
+
Admin ID: {{ $admin->id ?? session('admin_id') }}
+
Username: {{ $admin->username ?? 'N/A' }}
+
Created At: {{ isset($admin->created_at) ? $admin->created_at->format('Y-m-d') : 'N/A' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/adminresults.blade.php b/resources/views/admin/adminresults.blade.php
new file mode 100644
index 0000000..a17ba7a
--- /dev/null
+++ b/resources/views/admin/adminresults.blade.php
@@ -0,0 +1,221 @@
+@extends('layouts.adminnav')
+
+@section('title', 'Exam Results Management - Admin Panel')
+
+@section('content')
+
+
+
+ Exam Results Management
+
+
+
+
+ @if(session('success'))
+
+ {{ session('success') }}
+
+
+ @endif
+
+ @if($errors->any())
+
+
+
Please fix the following errors:
+
+ @foreach($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+
+ @endif
+
+
+
+
+
+
+
+
+ | ID |
+ Student Log ID |
+ Module Code |
+ Module Name |
+ Academic Year |
+ Semester |
+ Marks |
+ Grade |
+ Status |
+ Actions |
+
+
+
+ @forelse($results as $result)
+
+ | {{ $result->id }} |
+ {{ $result->student_log_id }} |
+ {{ $result->module_code }} |
+ {{ $result->module_name }} |
+ {{ $result->academic_year }} |
+ {{ $result->semester }} |
+ {{ $result->marks }} |
+
+ {{ $result->grade }}
+ |
+
+ @if(strtolower($result->status) == 'pass')
+ Pass
+ @else
+ Fail
+ @endif
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ @empty
+
+ | No examination results found. |
+
+ @endforelse
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/admintimetable.blade.php b/resources/views/admin/admintimetable.blade.php
new file mode 100644
index 0000000..9801dbf
--- /dev/null
+++ b/resources/views/admin/admintimetable.blade.php
@@ -0,0 +1,260 @@
+@extends('layouts.adminnav')
+
+@section('title', 'Admin Timetable Management')
+
+@section('content')
+
+
+
+
+
+
+
+
My Class Timetable
+
Automobile Engineering Academy Timetable Management
+
+
+
+
+ @if(session('success'))
+
+ {{ session('success') }}
+
+
+ @endif
+
+
+
+
+
+
+
+ @forelse($todaySchedule as $item)
+
+
+ {{ $item->type }}
+
{{ $item->subject_name }}
+
+
{{ $item->time_slot }}
+
+ @empty
+
No classes scheduled for today.
+ @endforelse
+
+
+
+
+
+
+
+
+
+
+ Theory
+ Practical
+ Workshop
+ Exam
+
+
+
+ How to Edit: Click on any timetable slot in the table below to edit or add subject details.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/adminlogin.blade.php b/resources/views/adminlogin.blade.php
new file mode 100644
index 0000000..1892927
--- /dev/null
+++ b/resources/views/adminlogin.blade.php
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+ Admin Login - AutoEdu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/layouts/adminnav.blade.php b/resources/views/layouts/adminnav.blade.php
new file mode 100644
index 0000000..1ae0fd8
--- /dev/null
+++ b/resources/views/layouts/adminnav.blade.php
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+ @yield('title', 'Admin Portal - Automobile Academic')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @yield('content')
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 4ea67fe..d860f92 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -12,8 +12,12 @@ use App\Http\Controllers\ApplyController;
use App\Http\Controllers\ResultsController;
use App\Http\Controllers\TimetableController;
use App\Http\Controllers\CoureseAssignController;
-
-
+use App\Http\Controllers\AdminAuthController;
+use App\Http\Controllers\adminmycoursesController;
+use App\Http\Controllers\AdminResultsController;
+use App\Http\Controllers\AdminProfileController;
+use App\Http\Controllers\AdminTimetableController;
+use App\Http\Controllers\AdminDashboardController;
/*
|--------------------------------------------------------------------------
@@ -21,7 +25,6 @@ use App\Http\Controllers\CoureseAssignController;
|--------------------------------------------------------------------------
*/
-// Home Page
Route::get('/', function () {
return view('welcome');
});
@@ -31,7 +34,6 @@ Route::view('/students', 'students')->name('students');
Route::view('/abouts', 'abouts')->name('abouts');
Route::view('/contact', 'contacts')->name('contact');
-// Guest Authentication View Routes
Route::view('/signin', 'signin')->name('signin');
Route::view('/signup', 'signup')->name('signup');
@@ -43,12 +45,11 @@ Route::view('/signup', 'signup')->name('signup');
Route::post('/signuppage', [AuthController::class, 'register']);
Route::post('/signin', [AuthController::class, 'login']);
Route::post('/custom-logout', [AuthController::class, 'logout']);
-
Route::post('/contact-submit', [ContactMsgController::class, 'store'])->name('contact.store');
/*
|--------------------------------------------------------------------------
-| Password Reset Routes (For Guest Users)
+| Password Reset Routes
|--------------------------------------------------------------------------
*/
Route::middleware('guest')->group(function () {
@@ -60,7 +61,7 @@ Route::middleware('guest')->group(function () {
/*
|--------------------------------------------------------------------------
-| Regular Auth Protected Routes (Laravel Default Auth)
+| Regular Auth Protected Routes
|--------------------------------------------------------------------------
*/
Route::middleware(['auth'])->group(function () {
@@ -72,18 +73,13 @@ Route::middleware(['auth'])->group(function () {
/*
|--------------------------------------------------------------------------
-| STUDENT PORTAL ROUTES (Session-Based Auth)
+| STUDENT PORTAL ROUTES
|--------------------------------------------------------------------------
*/
-
-// Student Login & Logout Action Routes
Route::post('/student-login', [StudentPortalController::class, 'studentlogin'])->name('student.login.submit');
Route::post('/studentlogout', [StudentPortalController::class, 'studentlogout'])->name('student.logout');
-// Student Portal Section (Protected by Student Session Check)
Route::middleware(['web'])->group(function () {
-
-
Route::get('/student-portal', function () {
if (!session()->has('student_id') && !session()->has('student_log_id')) {
return redirect('/signin')->with('error', 'Please login first!');
@@ -91,41 +87,76 @@ Route::middleware(['web'])->group(function () {
return view('StudentPortal');
})->name('student.portal');
-
Route::get('/StudentProfile', [StudentPortalController::class, 'showProfile'])->name('StudentProfile');
-
-
Route::get('/results', [ResultsController::class, 'index'])->name('results');
-
Route::get('/Dashboard', function () {
- if (!session()->has('student_id') && !session()->has('student_log_id')) { return redirect('/signin')->with('error', 'Please login first!'); }
+ if (!session()->has('student_id') && !session()->has('student_log_id')) {
+ return redirect('/signin')->with('error', 'Please login first!');
+ }
return view('StudentPortal');
})->name('Dashboard');
- Route::get('/mycourse', function () {
- if (!session()->has('student_id') && !session()->has('student_log_id')) { return redirect('/signin')->with('error', 'Please login first!'); }
- return view('mycourse');
- })->name('mycourse');
-
- // 2. Dynamic Timetable Controller Route එක මෙතැනට යෙදුවා
Route::get('/timetable', [TimetableController::class, 'index'])->name('timetable');
Route::get('/Assignments', function () {
- if (!session()->has('student_id') && !session()->has('student_log_id')) { return redirect('/signin')->with('error', 'Please login first!'); }
+ if (!session()->has('student_id') && !session()->has('student_log_id')) {
+ return redirect('/signin')->with('error', 'Please login first!');
+ }
return view('Assignments');
})->name('Assignments');
Route::get('/Studentguidelines', function () {
- if (!session()->has('student_id') && !session()->has('student_log_id')) { return redirect('/signin')->with('error', 'Please login first!'); }
+ if (!session()->has('student_id') && !session()->has('student_log_id')) {
+ return redirect('/signin')->with('error', 'Please login first!');
+ }
return view('Studentguidelines');
})->name('Studentguidelines');
Route::get('/Feedback&Complain', [FeedbackController::class, 'index'])->name('feedback.index');
Route::post('/Feedback&Complain/store', [FeedbackController::class, 'store'])->name('feedback.store');
-
Route::get('/mycourse', [CoureseAssignController::class, 'showMyCourse'])->name('mycourse');
+ Route::get('/module/{id}', [CoureseAssignController::class, 'showModule'])->name('module.show');
+});
+
+/*
+|--------------------------------------------------------------------------
+| ADMIN PORTAL ROUTES
+|--------------------------------------------------------------------------
+*/
+
+Route::get('/admin/login', [AdminAuthController::class, 'showLoginForm'])->name('admin.login');
+Route::post('/admin/login', [AdminAuthController::class, 'login']);
+Route::post('/admin/logout', [AdminAuthController::class, 'logout'])->name('admin.logout');
+
+Route::middleware(['web'])->prefix('admin')->group(function () {
+
+ // Admin Dashboard Routes
+ Route::get('/dashboard', [AdminDashboardController::class, 'index'])->name('admin.admindashboard');
+ Route::post('/notifications/read/{id}', [AdminDashboardController::class, 'markAsRead'])->name('admin.notifications.read');
+
+ // Admin Courses
+ Route::get('/adminmycourses', [adminmycoursesController::class, 'index'])->name('admin.mycourses');
+ Route::post('/adminmycourses/store', [adminmycoursesController::class, 'store'])->name('admin.courses.store');
+ Route::post('/adminmycourses/update/{id}', [adminmycoursesController::class, 'update'])->name('admin.courses.update');
+ Route::delete('/adminmycourses/delete/{id}', [adminmycoursesController::class, 'destroy'])->name('admin.courses.delete');
+
+ // Admin Timetable Routes
+ Route::get('/timetable', [AdminTimetableController::class, 'index'])->name('admin.timetable');
+ Route::post('/timetable/store', [AdminTimetableController::class, 'store'])->name('admin.timetable.store');
+ Route::put('/timetable/update/{id}', [AdminTimetableController::class, 'update'])->name('admin.timetable.update');
+ Route::delete('/timetable/delete/{id}', [AdminTimetableController::class, 'destroy'])->name('admin.timetable.delete');
+
+ // Admin Results
+ Route::get('/results', [AdminResultsController::class, 'index'])->name('admin.results');
+ Route::post('/results/store', [AdminResultsController::class, 'store'])->name('admin.results.store');
+ Route::put('/results/update/{id}', [AdminResultsController::class, 'update'])->name('admin.results.update');
+ Route::delete('/results/delete/{id}', [AdminResultsController::class, 'destroy'])->name('admin.results.delete');
+
+ // Admin Profile
+ Route::get('/profile', [AdminProfileController::class, 'index'])->name('admin.profile');
+ Route::put('/profile/update', [AdminProfileController::class, 'update'])->name('admin.profile.update');
+ Route::put('/profile/password', [AdminProfileController::class, 'updatePassword'])->name('admin.profile.password');
- Route::get('/module/{id}', [CoureseAssignController::class, 'showModule'])->name('module.show');
});
\ No newline at end of file