true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/', 'name' => 'Home'], ['name' => 'Students']]; $createUrl = [['url' => 'create', 'name' => "Create", 'slug' => 'students']]; $users = User::where('role', 'STUDENT')->latest()->paginate(15); return view('content.users.index', [ 'breadcrumbs' => $breadcrumbs, 'pageConfigs' => $pageConfigs, 'createUrl' => $createUrl, 'users' => $users ]); } public function search(Request $request) { $pageConfigs = [ 'pageHeader' => true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/', 'name' => 'Home'], ['name' => 'Students']]; $createUrl = [['url' => 'create', 'name' => "Create", 'slug' => 'students']]; $users = User::where('role', 'STUDENT') ->where('name', 'like', "%{$request->search}%") ->orWhere('father_name', 'like', "%{$request->search}%") ->orWhere('email', 'like', "%{$request->search}%") ->orWhere('phone', 'like', "%{$request->search}%") ->orWhere('cnic', 'like', "%{$request->search}%") ->latest() ->paginate(15); return view('content.users.index', [ 'breadcrumbs' => $breadcrumbs, 'pageConfigs' => $pageConfigs, 'createUrl' => $createUrl, 'users' => $users ]); } public function create() { // $pageConfigs = [ 'pageHeader' => true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/admin/students', 'name' => 'Students'], ['name' => 'Add']]; return view('content.users.create', [ 'pageConfigs' => $pageConfigs, 'breadcrumbs' => $breadcrumbs ]); } public function store(Request $request) { $request->validate([ 'fullName' => ['required', 'min: 3'], 'fatherName' => ['required', 'min: 3'], 'email' => ['required', 'email', 'unique:users'], 'phone' => ['required'], 'password' => ['required', 'confirmed', Password::min(8)], 'cnic' => ['nullable', 'integer', 'digits:13'], 'dob' => ['nullable'], 'address' => ['nullable'], 'gender' => ['required'], 'notes' => ['nullable'], 'profileImage' => ['required', 'image'], ]); try { DB::beginTransaction(); $user = new User(); $user->name = $request->fullName; $user->father_name = $request->fatherName; $user->email = $request->email; $user->phone = $request->phone; $user->dob = $request->dob; $user->gender = $request->gender; $user->cnic = $request->cnic; $user->address = $request->address; $user->notes = $request->notes; $user->password = Hash::make($request->password); $user->email_verified_at = now(); $user->save(); if ($request->profileImage) { $prefix = 'profile'; $profileImagePath = $this->uploadFile($request->profileImage, $prefix, false); $user->picture = $profileImagePath; $user->save(); } DB::commit(); return redirect()->route('students.index')->with([ 'success' => "Student created successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); report($exception); Log::info($exception); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } public function edit(User $student) { $pageConfigs = [ 'pageHeader' => true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/admin/students', 'name' => 'Students'], ['name' => 'Edit']]; $courses = Course::where('student_id', $student->id)->get(); return view('content.users.edit', [ 'pageConfigs' => $pageConfigs, 'breadcrumbs' => $breadcrumbs, 'user' => $student, 'courses' => $courses ]); } public function update(Request $request, User $student) { $request->validate([ 'fullName' => ['required', 'min: 3'], 'fatherName' => ['required', 'min: 3'], 'email' => ['required', 'email'], 'phone' => ['required'], 'status' => ['required'], 'password' => ['nullable', 'confirmed', Password::min(8)], 'cnic' => ['nullable', 'numeric', 'digits:13'], 'dob' => ['nullable'], 'address' => ['nullable'], 'gender' => ['required'], 'notes' => ['nullable'], 'profileImage' => ['nullable', 'image'], ]); try { DB::beginTransaction(); $student->name = $request->fullName; $student->father_name = $request->fatherName; $student->email = $request->email; $student->phone = $request->phone; $student->dob = $request->dob; $student->gender = $request->gender; $student->cnic = $request->cnic; $student->address = $request->address; $student->notes = $request->notes; $student->status = $request->status; if ($request->password) { $student->password = Hash::make($request->password); } if ($request->hasFile('profileImage')) { $prefix = 'profileImage'; $bannerImagePath = $this->updateFile($request->profileImage, $student->picture, $prefix, false); $student->picture = $bannerImagePath; } $student->update(); DB::commit(); return redirect()->back()->with([ 'success' => "Student updated successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } public function destroy(User $student) { try { DB::beginTransaction(); if ($student->courses->count() > 0) { foreach ($student->courses as $course) { if ($course->allTransactions->count() > 0) { foreach ($course->allTransactions as $transaction){ $transaction->delete(); } } $course->delete(); } // return redirect()->back()->with([ // 'error' => 'Please delete all the records that are related to this Student.' // ]); } if ($student->picture) { $this->deleteFile($student->picture); } $student->delete(); DB::commit(); return redirect()->back()->with([ 'success' => "Student deleted successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } }