diff --git a/app/Http/Controllers/AdminDashboardController.php b/app/Http/Controllers/AdminDashboardController.php index 716af41..b2c3c10 100644 --- a/app/Http/Controllers/AdminDashboardController.php +++ b/app/Http/Controllers/AdminDashboardController.php @@ -100,32 +100,87 @@ class AdminDashboardController extends Controller return redirect()->back()->with('success', 'Notification deleted successfully!'); } + // Store Student Portal Log + public function storePortalLog(Request $request) + { + $request->validate([ + 'user_id' => 'required|exists:users,id', + ]); + + return $this->sendToPortalLog($request->user_id); + } + // Send User to Portal Log public function sendToPortalLog($userId) { try { $user = User::findOrFail($userId); - // Check if user is already logged + // User දැනටමත් Portal Log එකේ සිටීදැයි පරීක්ෂා කිරීම $exists = StudentPortalLog::where('user_id', $user->id)->exists(); if ($exists) { return redirect()->back()->with('error', 'This user is already in Portal Logs!'); } - // Create new portal log + // Student Portal Log එකට පමණක් Data Insert කිරීම StudentPortalLog::create([ 'user_id' => $user->id, 'first_name' => $user->first_name ?? '', 'last_name' => $user->last_name ?? '', 'email' => $user->email, 'phone' => $user->phone ?? null, + 'pin' => null, ]); return redirect()->back()->with('success', 'User successfully added to Portal Logs!'); + } catch (Exception $e) { \Log::error('Send to Portal Log Error: ' . $e->getMessage()); - return redirect()->back()->with('error', 'Failed to add user to Portal Log.'); + return redirect()->back()->with('error', 'Failed to add user to Portal Log: ' . $e->getMessage()); } } + + // Update or Delete User Portal PIN + public function updatePin(Request $request, $id) + { + $request->validate([ + 'pin' => 'nullable|string|max:20', + ]); + + try { + $portalLog = StudentPortalLog::findOrFail($id); + $portalLog->pin = $request->filled('pin') ? $request->pin : null; + $portalLog->save(); + + $message = $request->filled('pin') + ? 'Portal PIN updated successfully!' + : 'Portal PIN deleted successfully!'; + + return redirect()->back()->with('success', $message); + + } catch (Exception $e) { + \Log::error('Update PIN Error: ' . $e->getMessage()); + return redirect()->back()->with('error', 'Failed to update PIN: ' . $e->getMessage()); + } + } + + // ========================================================================= + // STUDENT PORTAL LOG DELETION ONLY (Main User Account එක ඉතිරි වේ) + // ========================================================================= + + + +public function destroyPortalLog($id) +{ + try { + $portalLog = StudentPortalLog::findOrFail($id); + $portalLog->delete(); // student_portal_logs Table එකෙන් පමණක් Delete වේ + + return redirect()->back()->with('success', 'Student Portal access record deleted successfully!'); + } catch (Exception $e) { + \Log::error('Delete Portal Log Error: ' . $e->getMessage()); + return redirect()->back()->with('error', 'Failed to remove from Student Portal: ' . $e->getMessage()); + } +} } \ No newline at end of file diff --git a/resources/views/admin/admindashboard.blade.php b/resources/views/admin/admindashboard.blade.php index c9147c0..f1b3ef3 100644 --- a/resources/views/admin/admindashboard.blade.php +++ b/resources/views/admin/admindashboard.blade.php @@ -30,16 +30,22 @@ font-size: 24px; } /* Edit Mode Control Styles */ + /* Edit Mode Control Styles */ .edit-only { display: none !important; } + + /* Display rule based on element types */ .is-editing .edit-only { display: inline-block !important; } .is-editing div.edit-only { display: block !important; } - .is-editing flex.edit-only, + .is-editing td.edit-only, + .is-editing th.edit-only { + display: table-cell !important; + } .is-editing .d-flex.edit-only { display: flex !important; } @@ -53,13 +59,7 @@

Welcome to Admin Dashboard

Automobile Engineering Academy System Overview

- - - + @@ -320,103 +320,65 @@ - -
-
-
-
-
- Registered System Users List -
- {{ count($users ?? []) }} Users -
-
-
- - + + +
+
+
+
+
+ Registered System Users List +
+ {{ count($users ?? []) }} Users +
+
+
+
+ + + + + + + + + + + + @forelse($users ?? [] as $user) - - - - - - - + + + + + + + - - - @forelse($users ?? [] as $user) - - - - - - - - - - - @empty - - - - @endforelse - -
IDNameEmailPhoneCreated DateAction
IDNameEmailPhonePortal PINCreated DateAction#{{ $user->id }}{{ $user->first_name }} {{ $user->last_name }}{{ $user->email }}{{ $user->phone ?? 'N/A' }}{{ $user->created_at ? $user->created_at->format('Y-m-d H:i') : 'N/A' }} +
+ @csrf + +
+
#{{ $user->id }}{{ $user->first_name }} {{ $user->last_name }}{{ $user->email }}{{ $user->phone ?? 'N/A' }} -
- @if(!empty($log->pin) && $log->pin !== 'N/A') - - - {{ $log->pin }} - - - - - - -
- @csrf - @method('PUT') - - -
- @else - - - N/A - - - - - @endif -
-
{{ $log->created_at ? $log->created_at->format('Y-m-d H:i') : 'N/A' }} -
- @csrf - -
-
- - No registered users found. -
-
+ @empty + + + + No registered users found. + + + @endforelse + +
+ + +
@@ -428,7 +390,7 @@
{{ count($portalLogs ?? []) }} Active Student Logs - + @@ -468,37 +430,105 @@ {{ $log->email }} {{ $log->phone ?? ($log->user->phone ?? 'N/A') }} - + - - {{ $log->pin ?? 'N/A' }} - +
+ + @if(!empty($log->pin) && $log->pin !== 'N/A') + + + {{ $log->pin }} + + + + + + +
+ @csrf + @method('PUT') + + +
+ @else + + + N/A + + + + + @endif +
+ + + {{ $log->created_at ? $log->created_at->format('Y-m-d H:i') : 'N/A' }} - - - - Active - - -
- - - - -
- @csrf - @method('DELETE') - -
-
- + + @if($user->is_active) + +
+ @csrf + +
+ @else + +
+ @csrf + @method('DELETE') + +
+ @endif + @@ -635,67 +665,4 @@
- - - @endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 124803a..99db35e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -143,11 +143,20 @@ Route::middleware(['web'])->prefix('admin')->group(function () { Route::delete('/notifications/{id}', [AdminDashboardController::class, 'destroy'])->name('admin.notifications.destroy'); Route::post('/notifications/read/{id}', [AdminDashboardController::class, 'markAsRead'])->name('admin.notifications.read'); + // Admin Users Management + Route::delete('/users/{id}', [AdminDashboardController::class, 'destroyUser'])->name('admin.users.destroy'); + + // Student Portal Log Management (Main User Table එකට හානියක් නොවී Portal Log එක පමණක් පාලනය කිරීමට) + Route::post('/portal-logs', [AdminDashboardController::class, 'storePortalLog'])->name('admin.portallogs.store'); + Route::post('/portal-logs/send/{userId}', [AdminDashboardController::class, 'sendToPortalLog'])->name('admin.portallogs.send'); + Route::put('/portal-logs/{userId}/pin', [AdminDashboardController::class, 'updatePin'])->name('admin.portallogs.update'); + Route::delete('/portal-logs/{id}', [AdminDashboardController::class, 'destroyPortalLog'])->name('admin.portallogs.destroy'); + // 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('/admin/courses/{id}', [adminmycoursesController::class, 'destroy'])->name('admin.courses.delete'); + Route::delete('/courses/{id}', [adminmycoursesController::class, 'destroy'])->name('admin.courses.delete'); // Admin Timetable Routes Route::get('/timetable', [AdminTimetableController::class, 'index'])->name('admin.timetable'); @@ -165,13 +174,4 @@ Route::middleware(['web'])->prefix('admin')->group(function () { 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::post('/admin/portal-log/store', [AdminDashboardController::class, 'storePortalLog'])->name('admin.portal.store'); - Route::post('/admin/portal-logs/send/{userId}', [AdminDashboardController::class, 'sendToPortalLog'])->name('admin.portallogs.send'); - - - Route::prefix('admin')->name('admin.')->group(function () { - Route::post('/portal-logs', [PortalLogController::class, 'store'])->name('portallogs.store'); - Route::put('/portal-logs/{id}', [PortalLogController::class, 'update'])->name('portallogs.update'); - Route::delete('/portal-logs/{id}', [PortalLogController::class, 'destroy'])->name('portallogs.destroy'); -}); }); \ No newline at end of file