diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index d2fbcda..b3cb72b 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -4,6 +4,10 @@ use Illuminate\Http\Request; +use App\Models\Menu; + +use Auth; + class DashboardController extends Controller { public function index() diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 9a7e3cb..e7002cf 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -6,7 +6,178 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; +use App\Models\education; +use App\Models\user_education; +use App\Models\user_achievements; +use App\Models\user_experience; + class ProfileController extends Controller { - + public function index(){ + $data['user'] = Auth::user(); + $data['profile'] = 1; + $data['education'] = education::all(); + $data['user_education'] = education::join('user_educations', 'education_id', '=', 'educations.id') + ->where('user_id', Auth::user()->id) + ->orderBy('education_id', 'asc') + ->get(); + return view('system.users.profile', $data); + } + + public function set_education(Request $request){ + $request->validate([ + 'user_id' => 'required|exists:users,id', + 'education_id' => 'required|exists:educations,id', + 'institution' => 'required', + 'from_year' => 'required', + 'to_year' => 'required' + ]); + + $user_education = new user_education(); + $user_education->user_id = $request->user_id; + $user_education->education_id = $request->education_id; + $user_education->institution = $request->institution; + $user_education->from_year = $request->from_year; + $user_education->to_year = $request->to_year; + $user_education->save(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil menambah riwayat pendidikan' + ]); + } + + public function update_education(Request $request){ + // dd($request->all()); + $validatedInput = $request->validate([ + 'user_education_id' => 'required', + 'education_id' => 'required', + 'institution' => 'required', + 'from_year' => 'required', + 'to_year' => 'required' + ]); + + $education = user_education::find($request->user_education_id); + + $education->education_id = $request->education_id; + $education->institution = $request->institution; + $education->from_year = $request->from_year; + $education->to_year = $request->to_year; + $education->update(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil mengubah riwayat pendidikan' + ]); + } + + public function delete_education(Request $request){ + // dd($request->all()); + $validatedInput = $request->validate([ + 'user_id' => 'required', + 'user_education_id' => 'required' + ]); + + user_education::where('id', $validatedInput['user_education_id'])->where('user_id', $validatedInput['user_id'])->delete(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'warning', + 'text' => 'Berhasil menghapus riwayat pendidikan' + ]); + } + + public function set_achievements(Request $request){ + // dd($request->all()); + $request->validate([ + 'user_id' => 'required|exists:users,id', + 'deskripsi' => 'required' + ]); + + $pencapaian = new user_achievements(); + $pencapaian->description = $request->deskripsi; + $pencapaian->user_id = $request->user_id; + $pencapaian->save(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil menambahkan pencapaian' + ]); + } + + public function update_achievements(Request $request){ + // dd($request->all()); + $request->validate([ + 'user_id' => 'required|exists:users,id', + 'id_achievements' => 'required:exists:achievements,id', + 'deskripsi' => 'required' + ]); + + $pencapaian = user_achievements::find($request->id_achievements); + $pencapaian->description = $request->deskripsi; + $pencapaian->update(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil mengubah pencapaian' + ]); + } + + public function delete_achievements(Request $request){ + // dd($request->all()); + $request->validate([ + 'user_id' => 'required|exists:users,id', + 'id_achievements' => 'required:exists:achievements,id', + ]); + + user_achievements::where('id', $request->id_achievements)->where('user_id', $request->user_id)->delete(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'warning', + 'text' => 'Berhasil menghapus pencapaian' + ]); + } + + public function set_experience(Request $request){ + // dd($request->all()); + $request->validate([ + 'user_id' => 'required|exists:users,id', + 'institution' => 'required', + 'position' => 'required' + ]); + + $exp = new user_experience(); + $exp->user_id = $request->user_id; + $exp->institution = $request->institution; + $exp->position = $request->position; + $exp->save(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil menambahkan pengalaman' + ]); + } + + public function update_experience(Request $request){ + // dd($request->all()); + $request->validate([ + 'user_id' => 'required|exists:users,id', + 'exp_id' => 'required|', + 'institution' => 'required', + 'position' => 'required' + ]); + + $exp = user_experience::find($request->exp_id); + $exp->institution = $request->institution; + $exp->position = $request->position; + $exp->update(); + + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil mengubah pengalaman' + ]); + } + + public function delete_experience(Request $request){ + + } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 5e9b7ae..d14961c 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -7,6 +7,8 @@ use App\Models\UserRole; use Illuminate\Http\Request; +use File; + class UserController extends Controller { /** @@ -95,7 +97,7 @@ public function roleDestroy(Request $request) */ public function show(User $user) { - // + } /** @@ -107,7 +109,8 @@ public function show(User $user) public function edit(User $user) { $roles = Role::all(); - return view('system.users.form', compact('user', 'roles')); + $profile = 0; + return view('system.users.form', compact('user', 'roles', 'profile')); } /** @@ -119,10 +122,50 @@ public function edit(User $user) */ public function update(Request $request, User $user) { - return redirect(route('system.users.edit', $user))->with('message', [ - 'class' => 'success', - 'text' => 'Berhasil menyimpan perubahan' - ]); + $ubah = User::find($request->user_id); + $ubah->is_male = ($request->isMale == 'on' ? 1 : 0); + $ubah->religion = $request->religion; + $ubah->birth_date = $request->birthDate; + $ubah->birth_city = $request->birthCity; + $ubah->hobby = $request->hobi; + $ubah->motto = $request->moto; + $ubah->bio = $request->bio; + $ubah->id_number = $request->id_number; + if ($request->foto) { + $foto = ['png', 'jpeg', 'jpg']; + if (in_array($request->file('foto')->extension(), $foto)) { + if (File::exists('assets/foto/'.$ubah->img_path)) { + File::delete('assets/foto/'.$ubah->img_path); + $name = time().'.'.$request->file('foto')->extension(); + $request->file('foto')->move('assets/foto', $name); + $ubah->img_path = $name; + } else { + $name = time().'.'.$request->file('foto')->extension(); + $request->file('foto')->move('assets/foto', $name); + $ubah->img_path = $name; + } + } else { + return redirect(route('account.profile', $user))->with('message', [ + 'class' => 'danger', + 'text' => 'File hanya boleh ber-extensi : .png, .jpg, .jpeg' + ]); + } + } + $ubah->update(); + + if ($request->profile == 0) { + return redirect(route('system.users.edit', $user))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil menyimpan perubahan' + ]); + } else { + return redirect(route('account.profile'))->with('message', [ + 'class' => 'success', + 'text' => 'Berhasil menyimpan perubahan' + ]); + } + + } /** diff --git a/app/Models/User.php b/app/Models/User.php index 9bd2f5c..00a18ca 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -61,8 +61,20 @@ public function menus() return $this->hasManyThrough(Menu::class, UserMenu::class, 'user_id', 'id', 'id', 'menu_id'); } + public function educations(){ + return $this->hasManyThrough(education::class, user_education::class, 'user_id', 'id', 'id', 'education_id'); + } + public function setPasswordAttribute($value) { $this->attributes['password'] = bcrypt($value); } + + public function achievements(){ + return $this->hasMany(user_achievements::class); + } + + public function experience(){ + return $this->hasMany(user_experience::class); + } } diff --git a/app/Models/education.php b/app/Models/education.php new file mode 100644 index 0000000..84a61c9 --- /dev/null +++ b/app/Models/education.php @@ -0,0 +1,13 @@ +belongsTo('education', 'id', 'education_id'); + } +} diff --git a/app/Models/user_experience.php b/app/Models/user_experience.php new file mode 100644 index 0000000..a601752 --- /dev/null +++ b/app/Models/user_experience.php @@ -0,0 +1,13 @@ +id(); + $table->string('name'); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('educations'); + } +} diff --git a/database/migrations/2022_10_23_152601_create_user_educations_table.php b/database/migrations/2022_10_23_152601_create_user_educations_table.php new file mode 100644 index 0000000..ba628e0 --- /dev/null +++ b/database/migrations/2022_10_23_152601_create_user_educations_table.php @@ -0,0 +1,45 @@ +id(); + + $table->foreignId('user_id') + ->constrained('users') + ->cascadeOnUpdate() + ->restrictOnDelete(); + + $table->foreignId('education_id') + ->constrained('educations') + ->cascadeOnUpdate() + ->restrictOnDelete(); + + $table->string('institution'); + $table->integer('from_year'); + $table->integer('to_year'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_educations'); + } +} diff --git a/database/migrations/2022_10_28_091352_create_achievements_table.php b/database/migrations/2022_10_28_091352_create_achievements_table.php new file mode 100644 index 0000000..2604c87 --- /dev/null +++ b/database/migrations/2022_10_28_091352_create_achievements_table.php @@ -0,0 +1,36 @@ +id(); + $table->foreignId('user_id') + ->constrained('users') + ->cascadeOnUpdate() + ->restrictOnDelete(); + $table->text('description'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('achievements'); + } +} diff --git a/database/migrations/2022_10_29_090602_create_experience_table.php b/database/migrations/2022_10_29_090602_create_experience_table.php new file mode 100644 index 0000000..ba2632c --- /dev/null +++ b/database/migrations/2022_10_29_090602_create_experience_table.php @@ -0,0 +1,37 @@ +id(); + $table->foreignId('user_id') + ->constrained('users') + ->cascadeOnUpdate() + ->restrictOnDelete(); + $table->string('institution'); + $table->string('position'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('experience'); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a3d0853..268c20f 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -16,7 +16,8 @@ public function run() $this->call([ MenuSeeder::class, RoleSeeder::class, - RoleMenuSeeder::class + RoleMenuSeeder::class, + EducationSeeder::class ]); } } diff --git a/database/seeders/EducationSeeder.php b/database/seeders/EducationSeeder.php new file mode 100644 index 0000000..99862b5 --- /dev/null +++ b/database/seeders/EducationSeeder.php @@ -0,0 +1,51 @@ +insert([ + [ + 'id' => 1, + 'name' => 'SD/MI' + ], [ + 'id' => 2, + 'name' => 'SMP/MTS' + ], + [ + 'id' => 3, + 'name' => 'SMK/SMA/MA' + ], + [ + 'id' => 4, + 'name' => 'D3' + ], + [ + 'id' => 5, + 'name' => 'D4' + ], + [ + 'id' => 6, + 'name' => 'S1' + ], + [ + 'id' => 7, + 'name' => 'S2' + ], + [ + 'id' => 8, + 'name' => 'S3' + ] + ]); + } +} diff --git a/public/assets/foto/1666494603.jpg b/public/assets/foto/1666494603.jpg new file mode 100644 index 0000000..90a148a Binary files /dev/null and b/public/assets/foto/1666494603.jpg differ diff --git a/public/assets/foto/1666494653.jpg b/public/assets/foto/1666494653.jpg new file mode 100644 index 0000000..12bfd01 Binary files /dev/null and b/public/assets/foto/1666494653.jpg differ diff --git a/public/assets/foto/1667014581.png b/public/assets/foto/1667014581.png new file mode 100644 index 0000000..4b15225 Binary files /dev/null and b/public/assets/foto/1667014581.png differ diff --git a/public/assets/foto/kosong.png b/public/assets/foto/kosong.png new file mode 100644 index 0000000..48bae00 Binary files /dev/null and b/public/assets/foto/kosong.png differ diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index 0e90dc0..21a554d 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -19,6 +19,8 @@ + +