academy/routes/web.php

193 lines
10 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\StudentPortalController;
use App\Http\Controllers\ContactMsgController;
use App\Http\Controllers\FeedbackController;
use App\Http\Controllers\studentportalnavController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\coursesController;
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;
use App\Http\Controllers\welcomeController;
use App\Http\Controllers\DocumentDownloadController;
/*
|--------------------------------------------------------------------------
| Public Routes & General Pages
|--------------------------------------------------------------------------
*/
Route::get('/', [welcomeController::class, 'index'])->name('welcome');
Route::get('/courses', [coursesController::class, 'index'])->name('courses.index');
Route::view('/students', 'students')->name('students');
Route::view('/abouts', 'abouts')->name('abouts');
Route::view('/contact', 'contacts')->name('contact');
Route::view('/signin', 'signin')->name('signin');
Route::get('/login', function () {
return redirect()->route('signin')->with('error', 'Please sign in to your account to continue!');
})->name('login');
Route::view('/signup', 'signup')->name('signup');
/*
|--------------------------------------------------------------------------
| System Auth & Contact Routes (POST)
|--------------------------------------------------------------------------
*/
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
|--------------------------------------------------------------------------
*/
Route::middleware('guest')->group(function () {
Route::get('/password/reset', [ForgotPasswordController::class, 'index'])->name('password.request');
Route::post('/resetEmail', [ForgotPasswordController::class, 'resetEmail'])->name('password.email');
Route::post('/verify-otp', [ForgotPasswordController::class, 'verifyOtpEmail'])->name('password.verify.otp');
Route::post('/update-password', [ForgotPasswordController::class, 'updatePassword'])->name('password.update');
});
/*
|--------------------------------------------------------------------------
| Regular Auth Protected Routes
|--------------------------------------------------------------------------
*/
Route::middleware(['auth'])->group(function () {
Route::get('/apply', [ApplyController::class, 'index'])->name('apply.index');
Route::post('/apply', [ApplyController::class, 'store'])->name('apply.store');
Route::put('/profile/update', [AuthController::class, 'update'])->name('profile.update');
Route::get('/profile', [AuthController::class, 'profilview'])->name('profile.view');
});
/*
|--------------------------------------------------------------------------
| STUDENT PORTAL ROUTES
|--------------------------------------------------------------------------
*/
Route::post('/student-login', [StudentPortalController::class, 'studentlogin'])->name('student.login.submit');
Route::post('/studentlogout', [StudentPortalController::class, 'studentlogout'])->name('student.logout');
Route::middleware(['web'])->group(function () {
Route::get('/student-portal', [StudentPortalController::class, 'index'])->name('student.portal');
Route::get('/StudentProfile', [StudentPortalController::class, 'showProfile'])->name('StudentProfile');
Route::post('/StudentProfile/update', [StudentPortalController::class, 'updateProfile'])->name('student.profile.update');
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!');
}
return view('StudentPortal');
})->name('Dashboard');
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!');
}
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!');
}
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');
/* Document Downloads */
Route::get('/student/download/calendar', [DocumentDownloadController::class, 'downloadAcademicCalendar'])->name('student.download.calendar');
Route::get('/student/download/handbook', [DocumentDownloadController::class, 'downloadStudentHandbook'])->name('student.download.handbook');
Route::get('/student/download/exam-code', [DocumentDownloadController::class, 'downloadExamCode'])->name('student.download.examcode');
Route::get('/student/download/helpdesk', [DocumentDownloadController::class, 'downloadHelpdeskGuide'])->name('student.download.helpdesk');
});
/*
|--------------------------------------------------------------------------
| ADMIN PORTAL ROUTES
|--------------------------------------------------------------------------
*/
// Admin Module Routes
Route::post('/modules/store', [adminmycoursesController::class, 'storeModule'])->name('modules.store');
Route::post('/modules/update/{id}', [adminmycoursesController::class, 'updateModule'])->name('modules.update');
Route::delete('/modules/{id}', [adminmycoursesController::class, 'destroyModule'])->name('modules.delete');
Route::delete('/courses/{id}', [adminmycoursesController::class, 'destroy'])->name('courses.destroy');
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 & Notifications Routes
Route::get('/dashboard', [AdminDashboardController::class, 'index'])->name('admin.dashboard');
Route::post('/notifications', [AdminDashboardController::class, 'store'])->name('admin.notifications.store');
Route::put('/notifications/{id}', [AdminDashboardController::class, 'update'])->name('admin.notifications.update');
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');
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('/courses/{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::prefix('admin')->name('admin.')->group(function () {
Route::get('/results', [AdminResultsController::class, 'index'])->name('results.index');
Route::post('/results/import', [AdminResultsController::class, 'import'])->name('results.import');
Route::post('/admin/courses/assign', [adminmycoursesController::class, 'assignCourse'])->name('admin.courses.assign');
});
});