From 5d76c711f7d340341f2e293dbf3e0048e9202393 Mon Sep 17 00:00:00 2001 From: imadhigp Date: Tue, 4 Aug 2026 10:36:33 +0530 Subject: [PATCH] set lms parts --- app/Http/Controllers/FeedbackController.php | 89 +++++--- .../Controllers/StudentPortalController.php | 216 ++++++------------ .../studentportalnavController.php | 4 - resources/views/Feedback&Complain.blade.php | 103 ++++----- .../views/layouts/studentportalnav.blade.php | 126 +++------- resources/views/welcome.blade.php | 4 +- routes/web.php | 155 +++++++------ 7 files changed, 300 insertions(+), 397 deletions(-) diff --git a/app/Http/Controllers/FeedbackController.php b/app/Http/Controllers/FeedbackController.php index 80a517d..3dfbe89 100644 --- a/app/Http/Controllers/FeedbackController.php +++ b/app/Http/Controllers/FeedbackController.php @@ -3,40 +3,75 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use App\Models\Feedback; use Illuminate\Support\Facades\DB; class FeedbackController extends Controller { - // public function feedback(Request $request) - // { - - // $request->validate([ - // 'feedback_type' => 'required', - // 'subject' => 'required|string|max:255', - // 'feedback_text' => 'required|string', - // ]); + + public function index(Request $request) + { + $studentLogId = session('student_log_id') ?? session('student_id'); + + if (!$studentLogId) { + return redirect('/')->with('error', 'Please login first!'); + } + + $feedbacks = DB::table('feedback') + ->where('student_id', $studentLogId) + ->orderBy('created_at', 'desc') + ->get(); + + return view('Feedback&Complain', compact('feedbacks')); + } + + + public function store(Request $request) + { + $studentLogId = session('student_log_id') ?? session('student_id'); + + if (!$studentLogId) { + return redirect('/')->with('error', 'Please login first to submit!'); + } - // $studentLogId = session('student_portal_log_id'); + $isComplaint = $request->has('is_complaint') && $request->is_complaint == "1"; + + if ($isComplaint) { + + $request->validate([ + 'complaint_category' => 'required', + 'complaint_title' => 'required|string|max:255', + 'complaint_details' => 'required|string', + ]); + + $type = 'Complaint - ' . $request->complaint_category; + $subject = $request->complaint_title; + $text = $request->complaint_details; + } else { + + $request->validate([ + 'feedback_type' => 'required', + 'subject' => 'required|string|max:255', + 'feedback_text' => 'required|string', + ]); + + $type = 'Feedback - ' . $request->feedback_type; + $subject = $request->subject; + $text = $request->feedback_text; + } - // if (!$studentLogId) { - // return redirect('/')->with('error', 'Please login first to submit feedback!'); - // } + DB::table('feedback')->insert([ + 'student_id' => $studentLogId, + 'feedback_type' => $type, + 'subject' => $subject, + 'feedback_text' => $text, + 'status' => 'Pending', + 'created_at' => now(), + 'updated_at' => now(), + ]); - - // DB::table('feedbacks')->insert([ - // 'student_id' => $studentLogId, - // 'feedback_type' => $request->feedback_type, - // 'subject' => $request->subject, - // 'feedback_text' => $request->feedback_text, - // 'status' => 'Pending', - // 'created_at' => now(), - // 'updated_at' => now(), - // ]); - - - // return redirect()->back()->with('success', 'Feedback submitted successfully!'); - // } + return redirect()->back()->with('success', ($isComplaint ? 'Complaint' : 'Feedback') . ' submitted successfully!'); + } + } \ No newline at end of file diff --git a/app/Http/Controllers/StudentPortalController.php b/app/Http/Controllers/StudentPortalController.php index c58d1e6..34efbe4 100644 --- a/app/Http/Controllers/StudentPortalController.php +++ b/app/Http/Controllers/StudentPortalController.php @@ -4,156 +4,90 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; -use App\Models\StudentPortalLog ; use Illuminate\Support\Facades\Hash; - - class StudentPortalController extends Controller { -public function studentlogin(Request $request) -{ - $request->validate([ - 'username' => 'required', - 'password' => 'required', - 'pin' => 'required|numeric', - ]); + + public function studentlogin(Request $request) + { + + $request->validate([ + 'username' => 'required|string', + 'password' => 'required|string', + 'pin' => 'required|numeric', + ]); - $student = DB::table('student_portal_logs') - ->where('email', $request->username) + + $student = DB::table('student_portal_logs') + ->where('email', $request->username) + ->orWhere('studentid', $request->username) + ->first(); + + + if ($student && Hash::check($request->password, $student->password) && $student->pin == $request->pin) { + + if ($student->status !== 'active' && $student->status !== '' && !is_null($student->status)) { + return redirect()->back()->with('error', 'Your account is inactive!'); + } + + + $request->session()->put('student_id', $student->studentid); + $request->session()->put('student_log_id', $student->id ?? null); + + $name = trim(($student->first_name ?? '') . ' ' . ($student->last_name ?? '')); + $request->session()->put('student_name', $name ?: ($student->email ?? $student->studentid)); + + return redirect()->route('student.portal')->with('success', 'Logged in successfully!'); + } + + return redirect()->back()->with('error', 'Invalid Email/Username, Password, or PIN!'); + } + + public function showProfile(Request $request) + { + + $log_id = $request->session()->get('student_log_id'); + $student_code = $request->session()->get('student_id'); + + if (!$log_id && !$student_code) { + return redirect('/')->with('error', 'Please login first!'); + } + + + $student = DB::table('student_details') + ->where(function ($query) use ($log_id, $student_code) { + if ($log_id) { + $query->where('student_portal_log_id', $log_id); + } + if ($student_code) { + + if ($log_id) { + $query->orWhere('student_id', $student_code); + } else { + $query->where('student_id', $student_code); + } + } + }) ->first(); - if ($student && Hash::check($request->password, $student->password) && $student->pin == $request->pin) { - if ($student->status !== 'active' && $student->status !== '') { - return redirect('/')->with('error', 'Your account is inactive!'); + + if (!$student) { + return redirect()->route('student.portal')->with('error', 'Student details not found in database!'); + } + + + return view('StudentProfile', compact('student')); } - $request->session()->put('student_id', $student->studentid); - return redirect()->route('student.portal')->with('success', 'Logged in successfully!'); - } - return redirect('/')->with('error', 'Invalid Email, Password, or PIN!'); -} + public function studentlogout(Request $request) + { + $request->session()->forget(['student_id', 'student_log_id', 'student_name']); + $request->session()->invalidate(); + $request->session()->regenerateToken(); -public function showProfile(Request $request) -{ - - $log_id = $request->session()->get('student_log_id'); - $student_code = $request->session()->get('student_id'); + return response()->json(['success' => true]); + } - if (!$log_id && !$student_code) { - return redirect('/')->with('error', 'Please login first!'); - } - - - $student = DB::table('student_details') - ->where(function ($query) use ($log_id, $student_code) { - if ($log_id) { - $query->where('student_portal_log_id', $log_id); - } - if ($student_code) { - $query->orWhere('student_id', $student_code); - } - }) - ->first(); - - - if (!$student) { - return redirect()->back()->with('error', 'Student details not found in database!'); - } - - return view('StudentProfile', compact('student')); -} - - - -// public function showProfile(Request $request) -// { - -// $log_id = $request->session()->get('student_log_id'); -// $student_code = $request->session()->get('student_id'); - -// if (!$log_id && !$student_code) { -// return redirect('/')->with('error', 'Please login first!'); -// } - - -// $student = DB::table('student_details') -// ->where('student_portal_log_id', $log_id) -// ->orWhere('student_id', $student_code) -// ->first(); - - -// if (!$student) { -// return redirect()->back()->with('error', 'Student details not found in database!'); -// } - -// return view('StudentProfile', compact('student')); -// } - - -// public function showProfile(Request $request) -// { - -// $log_id = $request->session()->get('student_log_id'); -// $student_code = $request->session()->get('student_id'); - -// if (!$log_id && !$student_code) { -// return redirect('/')->with('error', 'Please login first!'); -// } - - -// $student = DB::table('student_details') -// ->where('student_portal_log_id', $log_id) -// ->orWhere('student_id', $student_code) -// ->first(); - - -// if (!$student) { -// return redirect()->back()->with('error', 'Student details not found in database!'); -// } - -// return view('StudentProfile', compact('student')); -// } - - - -// public function showProfile(Request $request) -// { - -// $log_id = $request->session()->get('student_id'); - -// if (!$log_id) { -// return redirect('/')->with('error', 'Please login first!'); -// } - - -// $student = DB::table('student_details') -// ->where('student_id', $log_id) -// ->orWhere('student_portal_log_id', $log_id) -// ->first(); - - -// if (!$student) { -// $student = (object)[ -// 'image' => '', -// 'full_name' => 'Data Not Found (Check DB)', -// 'student_id' => $log_id, -// 'nic_passport' => 'N/A', -// 'date_of_birth' => '2000-01-01', -// 'gender' => 'N/A', -// 'email' => 'N/A', -// 'phone' => 'N/A', -// 'qualification' => 'N/A', -// 'institute' => 'N/A', -// 'year_completed' => 'N/A', -// 'course_name' => 'N/A', -// 'duration' => 'N/A', -// 'current_semester' => 'N/A', -// 'trainer_name' => 'N/A' -// ]; -// } - -// return view('StudentProfile', compact('student')); -// } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/studentportalnavController.php b/app/Http/Controllers/studentportalnavController.php index 2b855fd..3fd33de 100644 --- a/app/Http/Controllers/studentportalnavController.php +++ b/app/Http/Controllers/studentportalnavController.php @@ -11,11 +11,7 @@ class studentportalnavController extends Controller { $request->session()->forget(['student_log_id', 'student_id']); - - Auth::logout(); - - $request->session()->invalidate(); $request->session()->regenerateToken(); diff --git a/resources/views/Feedback&Complain.blade.php b/resources/views/Feedback&Complain.blade.php index 7e3dc02..b1d32ac 100644 --- a/resources/views/Feedback&Complain.blade.php +++ b/resources/views/Feedback&Complain.blade.php @@ -6,21 +6,19 @@ - -
@@ -176,7 +141,7 @@ body {

Share your suggestions, feedback, or complaints with the Automobile Engineering Academy management team.

- + @if(session('success')) @endif + @if(session('error')) + + @endif + @if ($errors->any())
- +
-
Previous Requests
+
Previous Requests
@@ -282,23 +254,36 @@ body { Type Subject Date - Status + Status - - Feedback - Workshop Equipment - 10 July 2026 - Resolved - - - Complaint - Class Schedule Issue - 05 July 2026 - Pending - + @forelse ($feedbacks as $item) + + + + {{ $item->feedback_type }} + + + {{ $item->subject }} + {{ \Carbon\Carbon::parse($item->created_at)->format('d M Y') }} + + @if(strtolower($item->status) == 'resolved') + Resolved + @else + {{ $item->status ?? 'Pending' }} + @endif + + + @empty + + + + No feedback or complaints submitted yet. + + + @endforelse
diff --git a/resources/views/layouts/studentportalnav.blade.php b/resources/views/layouts/studentportalnav.blade.php index 134ee01..33a4aa3 100644 --- a/resources/views/layouts/studentportalnav.blade.php +++ b/resources/views/layouts/studentportalnav.blade.php @@ -11,14 +11,13 @@