diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index b1fd07b..4ed81ef 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -169,56 +169,6 @@ class ApiController extends Controller } } -// public function signup(Request $request) -// { -// $response = []; - -// $rules = [ -// 'name' => ['required', 'string', 'max:255'], -// 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], -// 'password' => ['required', 'confirmed', Rules\Password::defaults()], -// ]; - -// $validator = Validator::make($request->all(), $rules); -// if ($validator->fails()) { -// return response()->json(['validationError' => $validator->errors()], 422); -// } - -// $user_data = [ -// 'name' => $request->name, -// 'email' => $request->email, -// 'role' => 'student', -// 'status' => 1, -// 'password' => Hash::make($request->password), -// ]; - -// if (get_settings('student_email_verification') != 1) { -// $user_data['email_verified_at'] = now(); -// } - -// $user = User::create($user_data); - -// if (get_settings('student_email_verification') == 1) { -// $user->sendEmailVerificationNotification(); -// } - -// if ($user) { -// $response = [ -// 'success' => true, -// 'message' => 'User created successfully', -// ]; -// } else { -// $response = [ -// 'success' => false, -// 'message' => 'User creation failed', -// ]; -// } - -// event(new Registered($user)); - -// return response()->json($response); -// } - //student logout function public function logout(Request $request) { @@ -229,30 +179,6 @@ class ApiController extends Controller ], 201); } - // forgot password - // public function forgot_password(Request $request): RedirectResponse - // { - // $request->validate([ - // 'email' => 'required|email', - // ]); - - // // We will send the password reset link to this user. Once we have attempted - // // to send the link, we will examine the response then see the message we - // // need to show to the user. Finally, we'll send out a proper response. - // $status = Password::sendResetLink( - // $request->only('email') - // ); - - // if ($status == Password::RESET_LINK_SENT) { - // return back()->with('status', __($status)); - // } - - // throw ValidationException::withMessages([ - // 'email' => [trans($status)], - // ]); - // } - - public function forgot_password(Request $request) { $response = []; @@ -274,7 +200,6 @@ class ApiController extends Controller return response()->json($response, 400); } - // update user data public function update_userdata(Request $request) { @@ -331,7 +256,6 @@ class ApiController extends Controller return $response; } - // public function top_courses($top_course_id = "") { $query = Course::orderBy('id', 'desc')->where('status', 'active')->limit(10)->get(); @@ -386,23 +310,13 @@ class ApiController extends Controller $categories = array(); $categories = sub_categories($request->category_id); - // $response['sub_categories'] = $categories; - $response[0]['sub_categories'] = $categories; $courses = get_category_wise_courses($request->category_id); $response[0]['courses'] = course_data($courses); - // foreach ($response as $key => $resp) { - // $response[$key]['sub_categories'] = $categories; - // } - return $response; - - // $response['courses'] = $result; - - // return $response; } // Fetch all the categories @@ -440,9 +354,6 @@ class ApiController extends Controller // Filter course public function filter_course(Request $request) { - // $courses = $this->api_model->filter_course(); - // $this->set_response($courses, REST_Controller::HTTP_OK); - $selected_category = $request->selected_category; $selected_price = $request->selected_price; $selected_level = $request->selected_level; @@ -450,8 +361,6 @@ class ApiController extends Controller $selected_rating = $request->selected_rating; $selected_search_string = ltrim(rtrim($request->selected_search_string)); - // $course_ids = array(); - $query = Course::query(); if ($selected_search_string != "" && $selected_search_string != "null") { @@ -481,21 +390,6 @@ class ApiController extends Controller $query->where('status', 'active'); $courses = $query->get(); - // foreach ($courses as $course) { - // if ($selected_rating != "all") { - // $total_rating = $this->crud_model->get_ratings('course', $course['id'], true)->row()->rating; - // $number_of_ratings = $this->crud_model->get_ratings('course', $course['id'])->num_rows(); - // if ($number_of_ratings > 0) { - // $average_ceil_rating = ceil($total_rating / $number_of_ratings); - // if ($average_ceil_rating == $selected_rating) { - // array_push($course_ids, $course['id']); - // } - // } - // } else { - // array_push($course_ids, $course['id']); - // } - // } - // This block of codes return the required data of courses $result = array(); $result = course_data($courses); @@ -601,8 +495,6 @@ class ApiController extends Controller } else { $response = array(); } - } else { - } return $response; @@ -893,11 +785,4 @@ class ApiController extends Controller } return $response; } - - - - - - - } diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 67f7493..97a0d61 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -86,30 +86,52 @@ class RegisteredUserController extends Controller } } - $user_data = [ - 'name' => $request->name, - 'email' => $request->email, - 'role' => 'student', - 'status' => 1, - 'password' => Hash::make($request->password), - ]; + // Start database transaction for the entire registration process + $user = null; - if (get_settings('student_email_verification') != 1) { - $user_data['email_verified_at'] = Carbon::now(); + try { + DB::beginTransaction(); + + $user_data = [ + 'name' => $request->name, + 'email' => $request->email, + 'role' => 'student', + 'status' => 1, + 'password' => Hash::make($request->password), + ]; + + if (get_settings('student_email_verification') != 1) { + $user_data['email_verified_at'] = Carbon::now(); + } + + $user = User::create($user_data); + event(new Registered($user)); + + // If applying as an instructor, process the application + if ($request->has('instructor')) { + $result = $this->processInstructorApplication($request, $user); + if ($result instanceof RedirectResponse && $result->getSession()->get('error')) { + // If there was an error in instructor application, rollback + DB::rollBack(); + return $result; + } + } + + DB::commit(); + + // Log the user in after successful registration + Auth::login($user); + return redirect(RouteServiceProvider::HOME); + + } catch (\Exception $e) { + if (DB::transactionLevel() > 0) { + DB::rollBack(); + } + + Log::error('Registration error:', ['error' => $e->getMessage()]); + Session::flash('error', get_phrase('Error during registration. Please try again.')); + return redirect()->back()->withInput(); } - - $user = User::create($user_data); - event(new Registered($user)); - - // If applying as an instructor, process the application - if ($request->has('instructor')) { - return $this->processInstructorApplication($request, $user); - } - - // Log the user in after successful registration - Auth::login($user); - - return redirect(RouteServiceProvider::HOME); } private function processInstructorApplication(Request $request, User $user): RedirectResponse @@ -120,79 +142,73 @@ class RegisteredUserController extends Controller return redirect()->route('become.instructor'); } - try { - // Check NIDN with the API - $nidn = $request->nidn; - $api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1"; + // Check if NIDN already exists in Instructors table with status = 1 (active) + $nidn = $request->nidn; + $existingInstructor = Instructors::where('nidn', $nidn) + ->where('status', 1) + ->first(); - $response = Http::timeout(30)->get($api_url); - $data = $response->json(); - - Log::info('API Response for NIDN: ' . $nidn, ['response' => $data]); - - // Extract matched dosen data - $matched_dosen = $data['matched_dosen'][0]; - Log::info('Instructor data to be saved:', $matched_dosen); - - if (!isset($data['ok']) || !isset($data['matched_dosen']) || count($data['matched_dosen']) == 0) { - Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.')); - return redirect()->back()->withInput(); - }else if ($matched_dosen['nama'] != $user->name){ - Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.')); - return redirect()->back()->withInput(); - } - - Log::info('API Response for Nama: ' . $matched_dosen['nama'], ' || nama :',$user->name); - - // Prepare instructor data - adjust fields according to your database - $instructor = [ - 'user_id' => $user->id, - 'nidn' => $nidn, - 'name' => $matched_dosen['nama'] ?? $user->name, - 'id_sdm' => $matched_dosen['id'] ?? null, - 'id_sms' => $matched_dosen['nama_prodi'] ?? null, - 'id_pt' => $matched_dosen['nama_pt'] ?? null - ]; - - Log::info('Instructor data to be saved:', $instructor); - - // Upload document - if ($request->hasFile('document') && $request->file('document')->isValid()) { - $doc = $request->file('document'); - $fileName = 'uploads/applications/' . $user->id . Str::random(20) . '.' . $doc->extension(); - - FileUploader::upload($doc, $fileName, null, null, 300); - } else { - Session::flash('error', 'Document upload failed or no document selected.'); - return redirect()->back()->withInput(); - } - - // Prepare application data - $application = [ - 'user_id' => $user->id, - 'phone' => $request->phone, - 'description' => $request->description - ]; - - // Start database transaction to ensure both records are saved - DB::transaction(function () use ($application, $instructor) { - Application::create($application); - Instructors::create($instructor); - }); - - Session::flash('success', get_phrase('Your application has been submitted successfully.')); - - } catch (\Exception $e) { - Log::error('Instructor registration error:', [ - 'user_id' => $user->id, - 'error' => $e->getMessage(), - 'trace' => $e->getTraceAsString() - ]); - - Session::flash('error', get_phrase('Error while processing your application. Please try again later!')); + if ($existingInstructor) { + Session::flash('error', get_phrase('This NIDN is already registered as an active instructor.')); return redirect()->back()->withInput(); } + // Check NIDN with the API + $api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1"; + + $response = Http::timeout(30)->get($api_url); + $data = $response->json(); + + Log::info('API Response for NIDN: ' . $nidn, ['response' => $data]); + + // Extract matched dosen data + $matched_dosen = $data['matched_dosen'][0]; + Log::info('Instructor data to be saved:', $matched_dosen); + + if (!isset($data['ok']) || !isset($data['matched_dosen']) || count($data['matched_dosen']) == 0) { + Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.')); + return redirect()->back()->withInput(); + } else if (strtolower($matched_dosen['nama']) != strtolower($user->name)) { + Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.')); + return redirect()->back()->withInput(); + } + + // Prepare instructor data - adjust fields according to your database + $instructor = [ + 'user_id' => $user->id, + 'nidn' => $nidn, + 'name' => $matched_dosen['nama'] ?? $user->name, + 'id_sdm' => $matched_dosen['id'] ?? null, + 'id_sms' => $matched_dosen['nama_prodi'] ?? null, + 'id_pt' => $matched_dosen['nama_pt'] ?? null, + 'status' => 0 + ]; + + Log::info('Instructor data to be saved:', $instructor); + + // Upload document + if ($request->hasFile('document') && $request->file('document')->isValid()) { + $doc = $request->file('document'); + $fileName = 'uploads/applications/' . $user->id . Str::random(20) . '.' . $doc->extension(); + + FileUploader::upload($doc, $fileName, null, null, 300); + } else { + Session::flash('error', 'Document upload failed or no document selected.'); + return redirect()->back()->withInput(); + } + + // Prepare application data + $application = [ + 'user_id' => $user->id, + 'phone' => $request->phone, + 'description' => $request->description + ]; + + // Create both application and instructor records + Application::create($application); + Instructors::create($instructor); + + Session::flash('success', get_phrase('Your application has been submitted successfully.')); return redirect(RouteServiceProvider::HOME); } } diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index abba35e..2fdad33 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Application; use App\Models\Course; use App\Models\Enrollment; +use App\Models\Instructors; use App\Models\FileUploader; use App\Models\Payout; use App\Models\Permission; @@ -16,10 +17,11 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Session; -use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Response; -use Illuminate\Support\Str; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\Log; + class UsersController extends Controller { @@ -42,12 +44,28 @@ class UsersController extends Controller public function admin_store(Request $request) { - $validated = $request->validate([ - 'name' => "required", + $validator = Validator::make($request->all(), [ + 'name' => "required|max:255", 'email' => 'required|email|unique:users', 'password' => "required|min:8", + ], [ + 'name.required' => get_phrase('Name is required'), + 'name.string' => get_phrase('Name must be a valid text'), + 'name.max' => get_phrase('Name may not be greater than 255 characters'), + 'email.required' => get_phrase('Email is required'), + 'email.string' => get_phrase('Email must be a valid text'), + 'email.email' => get_phrase('Please enter a valid email address'), + 'email.unique' => get_phrase('This email is already registered. Please use a different email.'), + 'password.required' => get_phrase('Password is required'), + 'password.min' => get_phrase('Password must be at least 8 characters'), ]); + if ($validator->fails()) { + $firstError = $validator->errors()->first(); + Session::flash('error', $firstError); + return redirect()->back()->withErrors($validator)->withInput(); + } + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -90,6 +108,8 @@ class UsersController extends Controller 'email' => "required|email|unique:users,email,$id", ]); + $data = []; + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -99,7 +119,7 @@ class UsersController extends Controller $data['twitter'] = $request->twitter; $data['website'] = $request->website; $data['linkedin'] = $request->linkedin; - + if (isset($request->photo) && $request->hasFile('photo')) { remove_file(User::where('id', $id)->first()->photo); $path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension()); @@ -176,21 +196,49 @@ class UsersController extends Controller } public function instructor_edit($id = '') { - $page_data['instructor'] = User::where('id', $id)->first(); + $page_data['instructor'] = User::where('users.id', $id) + ->leftJoin('instructors', 'users.id', '=', 'instructors.user_id') + ->select('users.*', 'instructors.nidn', 'instructors.status', 'instructors.id_sdm', 'instructors.id_sms', 'instructors.id_pt') + ->first(); + + if (!$page_data['instructor']) { + Session::flash('error', get_phrase('Instructor not found')); + return redirect()->route('admin.instructor.index'); + } + return view('admin.instructor.edit_instructor', $page_data); } public function instructor_store(Request $request, $id = '') { - $validated = $request->validate([ + $validator = Validator::make($request->all(), [ 'name' => "required|max:255", 'email' => 'required|email|unique:users', 'password' => "required|min:8", + 'nidn' => "required" + ], [ + 'name.required' => get_phrase('Name is required'), + 'name.string' => get_phrase('Name must be a valid text'), + 'name.max' => get_phrase('Name may not be greater than 255 characters'), + 'email.required' => get_phrase('Email is required'), + 'email.string' => get_phrase('Email must be a valid text'), + 'email.email' => get_phrase('Please enter a valid email address'), + 'email.unique' => get_phrase('This email is already registered. Please use a different email.'), + 'password.required' => get_phrase('Password is required'), + 'password.min' => get_phrase('Password must be at least 8 characters'), ]); + if ($validator->fails()) { + $firstError = $validator->errors()->first(); + Session::flash('error', $firstError); + return redirect()->back()->withErrors($validator)->withInput(); + } + if(get_settings('student_email_verification') != 1){ $data['email_verified_at'] = date('Y-m-d H:i:s'); } + $data = []; + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -213,7 +261,56 @@ class UsersController extends Controller FileUploader::upload($request->photo, $path, 400, null, 200, 200); $data['photo'] = $path; } - $user = User::create($data); + + // Check if NIDN already exists in Instructors table with status = 1 (active) + $nidn = $request->nidn; + $existingInstructor = Instructors::where('nidn', $nidn) + ->where('status', 1) + ->first(); + + if ($existingInstructor) { + Session::flash('error', get_phrase('This NIDN is already registered as an active instructor.')); + return redirect()->back()->withInput(); + } + + try { + $api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1"; + + $response = Http::timeout(30)->get($api_url); + $apiResponse = $response->json(); + + Log::info('API Response for NIDN: ' . $nidn, ['response' => $apiResponse]); + + // Extract matched dosen data + $matched_dosen = $apiResponse['matched_dosen'][0]; + Log::info('Instructor data to be saved:', $matched_dosen); + + if (!isset($apiResponse['ok']) || !isset($apiResponse['matched_dosen']) || count($apiResponse['matched_dosen']) == 0) { + Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.')); + return redirect()->back()->withInput(); + }else if (strtolower($matched_dosen['nama']) != strtolower($request->name)) { + Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.')); + return redirect()->back()->withInput(); + } + $user = User::create($data); + // Prepare instructor data - adjust fields according to your database + $instructor = [ + 'user_id' => $user->id, + 'nidn' => $nidn, + 'name' => $matched_dosen['nama'] ?? null, + 'id_sdm' => $matched_dosen['id'] ?? null, + 'id_sms' => $matched_dosen['nama_prodi'] ?? null, + 'id_pt' => $matched_dosen['nama_pt'] ?? null + ]; + + Log::info('Instructor data to be saved:', $instructor); + + Instructors::create($instructor); + } catch (\Exception $e) { + Log::error('Error storing NIDN for admin: ' . $e->getMessage()); + Session::flash('error', get_phrase('There was an error processing the NIDN. Please try again.')); + return redirect()->back()->withInput(); + } if(get_settings('student_email_verification') == 1) { $user->sendEmailVerificationNotification(); @@ -226,12 +323,15 @@ class UsersController extends Controller public function instructor_update(Request $request, $id = '') { - + $validated = $request->validate([ 'name' => 'required|max:255', 'email' => "required|email|unique:users,email,$id", ]); + $data = []; + $data_instructor = []; + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -243,6 +343,12 @@ class UsersController extends Controller $data['linkedin'] = $request->linkedin; $data['paymentkeys'] = json_encode($request->paymentkeys); + $data_instructor['nidn'] = $request->nidn; + $data_instructor['status'] = $request->status ?? 0; + $data_instructor['id_sdm'] = $request->id_sdm; + $data_instructor['id_sms'] = $request->id_sms; + $data_instructor['id_pt'] = $request->id_pt; + if (isset($request->photo) && $request->hasFile('photo')) { remove_file(User::where('id', $id)->first()->photo); $path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension()); @@ -251,6 +357,7 @@ class UsersController extends Controller } User::where('id', $id)->update($data); + Instructors::where('user_id', $id)->update($data_instructor); Session::flash('success', get_phrase('Instructor update successfully')); return redirect()->route('admin.instructor.index'); } @@ -265,7 +372,7 @@ class UsersController extends Controller Message::whereIn('thread_id', $threads)->delete(); MessageThread::whereIn('id', $threads)->delete(); } - + User::where('id', $id)->delete(); Session::flash('success', get_phrase('Instructor delete successfully')); return redirect()->back(); @@ -415,15 +522,40 @@ class UsersController extends Controller { return view('admin.instructor.application'); } + public function instructor_application_approve($id) { - $query = Application::where('id', $id); - $update_status = $query->update(['status' => 1]); - if ($update_status) { - $user_id = $query->first(); - User::where('id', $user_id->user_id)->update(['role' => 'instructor']); - Session::flash('success', get_phrase('Application approve successfully')); + $application = Application::find($id); + + if (!$application) { + Session::flash('error', get_phrase('Application not found')); + return redirect()->back(); } + + try { + DB::beginTransaction(); + + // Update application status + $application->status = 1; + $application->save(); + + $user_id = $application->user_id; + + // Update user role to instructor + User::where('id', $user_id)->update(['role' => 'instructor']); + + // Update instructor status to 1 (active) + Instructors::where('user_id', $user_id)->update(['status' => 1]); + + DB::commit(); + Session::flash('success', get_phrase('Application approved successfully')); + + } catch (\Exception $e) { + DB::rollBack(); + Log::error('Application approval error:', ['error' => $e->getMessage()]); + Session::flash('error', get_phrase('Failed to approve application')); + } + return redirect()->back(); } public function instructor_application_delete($id) @@ -482,12 +614,28 @@ class UsersController extends Controller } public function student_store(Request $request, $id = '') { - $validated = $request->validate([ - 'name' => 'required|max:255', + $validator = Validator::make($request->all(), [ + 'name' => "required|max:255", 'email' => 'required|email|unique:users', - 'password' => 'required', + 'password' => "required|min:8", + ], [ + 'name.required' => get_phrase('Name is required'), + 'name.string' => get_phrase('Name must be a valid text'), + 'name.max' => get_phrase('Name may not be greater than 255 characters'), + 'email.required' => get_phrase('Email is required'), + 'email.string' => get_phrase('Email must be a valid text'), + 'email.email' => get_phrase('Please enter a valid email address'), + 'email.unique' => get_phrase('This email is already registered. Please use a different email.'), + 'password.required' => get_phrase('Password is required'), + 'password.min' => get_phrase('Password must be at least 8 characters'), ]); + if ($validator->fails()) { + $firstError = $validator->errors()->first(); + Session::flash('error', $firstError); + return redirect()->back()->withErrors($validator)->withInput(); + } + if(get_settings('student_email_verification') != 1){ $data['email_verified_at'] = date('Y-m-d H:i:s'); } @@ -655,7 +803,6 @@ class UsersController extends Controller { if ($request->type == 'general') { $profile['name'] = $request->name; - $profile['email'] = $request->email; $profile['facebook'] = $request->facebook; $profile['linkedin'] = $request->linkedin; $profile['twitter'] = $request->twitter; diff --git a/app/Http/Controllers/instructor/MyProfileController.php b/app/Http/Controllers/instructor/MyProfileController.php index 1abc9bd..4e7d18f 100644 --- a/app/Http/Controllers/instructor/MyProfileController.php +++ b/app/Http/Controllers/instructor/MyProfileController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\instructor; use App\Http\Controllers\Controller; use App\Models\FileUploader; use App\Models\User; +use App\Models\Instructors; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; @@ -17,13 +18,29 @@ class MyProfileController extends Controller { public function manage_profile() { - return view('instructor.profile.index'); + // Get current authenticated user + $user = Auth::user(); + + // Get instructor data based on user_id + $instructor = Instructors::where('user_id', $user->id)->first(); + + // Merge instructor data into user object + if ($instructor) { + $user->nidn = $instructor->nidn; + $user->id_sdm = $instructor->id_sdm; + $user->id_sms = $instructor->id_sms; + $user->id_pt = $instructor->id_pt; + } + + return view('instructor.profile.index', [ + 'auth' => $user + ]); } + public function manage_profile_update(Request $request) { if ($request->type == 'general') { $profile['name'] = $request->name; - $profile['email'] = $request->email; $profile['facebook'] = $request->facebook; $profile['twitter'] = $request->twitter; $profile['linkedin'] = $request->linkedin; @@ -59,7 +76,7 @@ class MyProfileController extends Controller return redirect()->back(); } - public function manage_resume() + public function manage_resume() { return view('instructor.resume.index'); } diff --git a/app/Http/Controllers/student/MyProfileController.php b/app/Http/Controllers/student/MyProfileController.php index ebde599..c788a3f 100644 --- a/app/Http/Controllers/student/MyProfileController.php +++ b/app/Http/Controllers/student/MyProfileController.php @@ -5,19 +5,37 @@ namespace App\Http\Controllers\student; use App\Http\Controllers\Controller; use App\Models\FileUploader; use App\Models\User; +use App\Models\Instructors; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Log; + class MyProfileController extends Controller { public function index() { - $page_data['user_details'] = User::find(auth()->user()->id); + $user = User::find(auth()->user()->id); + // Check if the role is 'instructor' + if ($user->role === 'instructor') { + // Retrieve the instructor details associated with the user + $instructor = Instructors::where('user_id', $user->id)->first(); + + // Check if the instructor exists to avoid errors when accessing properties + if ($instructor) { + $user->nidn = $instructor->nidn; + $user->id_sdm = $instructor->id_sdm; + $user->id_sms = $instructor->id_sms; + $user->id_pt = $instructor->id_pt; + } + } + $page_data['user_details'] = $user; $view_path = 'frontend.' . get_frontend_settings('theme') . '.student.my_profile.index'; + return view($view_path, $page_data); } @@ -34,7 +52,6 @@ class MyProfileController extends Controller } $data['name'] = $request->name; - $data['email'] = $request->email; $data['phone'] = $request->phone; $data['website'] = $request->website; $data['facebook'] = $request->facebook; diff --git a/app/Models/Instructors.php b/app/Models/Instructors.php index 8e364b7..db4113d 100644 --- a/app/Models/Instructors.php +++ b/app/Models/Instructors.php @@ -10,6 +10,6 @@ class Instructors extends Model use HasFactory; protected $fillable = [ - 'user_id', 'nidn', 'id_sdm', 'id_sms', 'id_pt' + 'user_id', 'nidn', 'id_sdm', 'id_sms', 'id_pt', 'status' ]; } diff --git a/resources/views/admin/admin/create_admin_basic.blade.php b/resources/views/admin/admin/create_admin_basic.blade.php index ac08d76..535b069 100644 --- a/resources/views/admin/admin/create_admin_basic.blade.php +++ b/resources/views/admin/admin/create_admin_basic.blade.php @@ -1,7 +1,7 @@