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['facebook'] = $request->facebook; $profile['twitter'] = $request->twitter; $profile['linkedin'] = $request->linkedin; $profile['video_url'] = $request->video_url; $profile['about'] = $request->about; $profile['skills'] = $request->skills; $profile['biography'] = $request->biography; if ($request->photo) { if (isset($request->photo) && $request->photo != '') { $profile['photo'] = "uploads/users/admin/" . nice_file_name($request->title, $request->photo->extension()); FileUploader::upload($request->photo, $profile['photo'], 400, null, 200, 200); } } User::where('id', auth()->user()->id)->update($profile); } else { $old_pass_check = Auth::attempt(['email' => auth()->user()->email, 'password' => $request->current_password]); if (! $old_pass_check) { Session::flash('error', get_phrase('Current password wrong.')); return redirect()->back(); } if ($request->new_password != $request->confirm_password) { Session::flash('error', get_phrase('Confirm password not same')); return redirect()->back(); } $password = Hash::make($request->new_password); User::where('id', auth()->user()->id)->update(['password' => $password]); } Session::flash('success', get_phrase('Your changes has been saved.')); return redirect()->back(); } public function manage_resume() { return view('instructor.resume.index'); } public function education_add(Request $request) { // Validate the form data $validatedData = $request->validate([ 'title' => 'required|string|max:255', 'institute' => 'required|string|max:255', 'country' => 'required|string|max:255', 'city' => 'required|string|max:255', 'start_date' => 'required|date', 'end_date' => 'nullable|date', 'status' => 'nullable|string|in:ongoing,completed', 'description' => 'nullable|string' ]); // Check if 'end_date' is empty and 'status' is 'ongoing' if ($request->has('status') && $request->status === 'ongoing') { $validatedData['end_date'] = null; } else { $validatedData['status'] = 'completed'; } // Format data for new education entry $newEducation = [ 'title' => $validatedData['title'], 'institute' => $validatedData['institute'], 'country' => $validatedData['country'], 'city' => $validatedData['city'], 'start_date' => $validatedData['start_date'], 'end_date' => $validatedData['end_date'], 'status' => $validatedData['status'], 'description' => $validatedData['description'] ]; // Retrieve the currently authenticated user $user = Auth::user(); // Decode the existing educations JSON data $educations = json_decode($user->educations, true) ?? []; // Append the new education entry $educations[] = $newEducation; // Save updated educations data back to the user's educations column as JSON $user->educations = json_encode($educations); $user->save(); // Redirect or return a response, e.g., to the resume index page with a success message return redirect()->route('instructor.manage.resume')->with('success', 'Education added successfully.'); } public function education_update(Request $request, $index) { // Validate the form data $validatedData = $request->validate([ 'title' => 'required|string|max:255', 'institute' => 'required|string|max:255', 'country' => 'required|string|max:255', 'city' => 'required|string|max:255', 'start_date' => 'required|date', 'end_date' => 'nullable|date', 'status' => 'nullable|string|in:ongoing,completed', 'description' => 'nullable|string' ]); // Check if 'end_date' is empty and 'status' is 'ongoing' if ($request->has('status') && $request->status === 'ongoing') { $validatedData['end_date'] = null; } else { $validatedData['status'] = 'completed'; } // Retrieve the currently authenticated user $user = Auth::user(); // Decode the existing educations JSON data $educations = json_decode($user->educations, true) ?? []; // Check if the specified index exists in educations array if (isset($educations[$index])) { // Update the existing education entry $educations[$index] = [ 'title' => $validatedData['title'], 'institute' => $validatedData['institute'], 'country' => $validatedData['country'], 'city' => $validatedData['city'], 'start_date' => $validatedData['start_date'], 'end_date' => $validatedData['end_date'], 'status' => $validatedData['status'], 'description' => $validatedData['description'] ]; // Save updated educations data back to the user's educations column as JSON $user->educations = json_encode($educations); $user->save(); // Redirect or return a response, e.g., to the resume index page with a success message return redirect()->route('instructor.manage.resume')->with('success', 'Education updated successfully.'); } else { // Handle the case where the specified education index does not exist return redirect()->route('instructor.manage.resume')->with('error', 'Education data not found for the specified index.'); } } public function education_remove(Request $request, $index) { // Retrieve the currently authenticated user $user = Auth::user(); // Decode the existing educations JSON data $educations = json_decode($user->educations, true) ?? []; // Check if the index exists in the educations array if (isset($educations[$index])) { // Remove the specific education entry unset($educations[$index]); // Re-index the array to ensure no gaps in the indices $educations = array_values($educations); // Update the user's educations column with the modified array $user->educations = json_encode($educations); $user->save(); return redirect()->route('instructor.manage.resume')->with('success', 'Education deleted successfully.'); } else { return redirect()->route('instructor.manage.resume')->with('error', 'Education not found.'); } } }