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 @@
+
+