From 40ac4feeaafbd8c130eae9b998d9efa59fac6307 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Mon, 6 Nov 2023 17:03:55 +0700 Subject: [PATCH] update change profile --- .../Controllers/Api/ProfileController.php | 65 +++++-------------- Modules/Linksehat/Routes/api.php | 1 + .../Transformers/User/UserProfileResource.php | 52 +++++++++++++++ 3 files changed, 68 insertions(+), 50 deletions(-) diff --git a/Modules/Linksehat/Http/Controllers/Api/ProfileController.php b/Modules/Linksehat/Http/Controllers/Api/ProfileController.php index e5b3bcb5..6d88595d 100644 --- a/Modules/Linksehat/Http/Controllers/Api/ProfileController.php +++ b/Modules/Linksehat/Http/Controllers/Api/ProfileController.php @@ -9,6 +9,8 @@ use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Auth; use Modules\Linksehat\Transformers\User\ShowProfileResource; +use Modules\Linksehat\Transformers\User\UserProfileResource; + class ProfileController extends Controller { @@ -70,57 +72,7 @@ class ProfileController extends Controller */ public function update(Request $request) { - $request->validate([ - 'nik' => 'numeric', - 'name_prefix' => '', - 'name' => '', - 'name_suffix' => '', - 'gender' => 'in:P,L', - 'birth_date' => 'sometimes:date', - // 'is_deceased' => '', - 'deceased_at' => 'sometimes:date', - 'marital_status' => 'in:S,M,C', - 'preferred_lang' => 'in:id,en' - ]); - $user = Auth::user(); - if ($user->person) { // Update Profile - $user->person->fill($request->only([ - 'nik', 'name_prefix', 'name', 'name_suffix', 'gender', 'birth_date', 'deceased_at', 'marital_status' - ]))->save(); - - if ($request->has('preferred_lang')) { - $user->metas()->updateOrCreate([ - 'type' => 'preferred_lang' - ], [ - 'system' => 'default', - 'type' => 'preferred_lang', - 'value' => $request->preferred_lang, - ]); - } - } else { // Create If Not Exist - $newPerson = array_merge( - $request->only([ - 'nik', 'name_prefix', 'name', 'name_suffix', 'gender', 'birth_date', 'deceased_at', 'marital_status' - ]), - ['user_owner_id' => $user->id] - ); - $newPerson = $user->person()->create($newPerson); - $user->person_id = $newPerson->id; - $user->save(); - - if ($request->has('preferred_lang')) { - $user->metas()->updateOrCreate([ - 'type' => 'preferred_lang' - ], [ - 'system' => 'default', - 'type' => 'preferred_lang', - 'value' => $request->preferred_lang, - ]); - } - } - - $user = User::find($user->id); // ReLoad User Data return Helper::responseJson(['users' => new UserProfileResource($user)]); } @@ -133,4 +85,17 @@ class ProfileController extends Controller { // } + + public function changeProfile($id){ + $user = User::with('detail') + ->where('nID', $id) + ->first(); + return Helper::responseJson( + data: [ + // 'token' => $user->createToken('app')->plainTextToken, + 'user' => UserProfileResource::make($user), + ], + message: 'Selamat Datang' + ); + } } diff --git a/Modules/Linksehat/Routes/api.php b/Modules/Linksehat/Routes/api.php index 826b6896..67476c7d 100644 --- a/Modules/Linksehat/Routes/api.php +++ b/Modules/Linksehat/Routes/api.php @@ -62,6 +62,7 @@ Route::prefix('linksehat')->group(function () { Route::middleware('auth:sanctum')->group(function () { Route::get('profile/{id}', [ProfileController::class, 'index'])->name('profile'); + Route::get('change-profile/{id}', [ProfileController::class, 'changeProfile'])->name('change-profile'); Route::post('profile', [ProfileController::class, 'update'])->name('profile.update'); Route::post('notification-tokens/delete/{id}', [NotificationTokenController::class, 'destroy'])->name('profile.delete.token'); Route::post('notification-tokens', [NotificationTokenController::class, 'store'])->name('profile.store.token'); diff --git a/Modules/Linksehat/Transformers/User/UserProfileResource.php b/Modules/Linksehat/Transformers/User/UserProfileResource.php index 780b2c1b..a7f80f0c 100644 --- a/Modules/Linksehat/Transformers/User/UserProfileResource.php +++ b/Modules/Linksehat/Transformers/User/UserProfileResource.php @@ -5,6 +5,8 @@ namespace Modules\Linksehat\Transformers\User; use Illuminate\Http\Resources\Json\JsonResource; use App\Models\OLDLMS\User; use App\Models\OLDLMS\UserDetail; +use Illuminate\Support\Facades\Auth; + use DB; @@ -25,6 +27,18 @@ class UserProfileResource extends JsonResource $dataMemberProfile = []; if (count($memberProfile) > 0){ + + $urlAvatarDefault = $this->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/male-avatar.png'; + $avatarMember = $this->detail->sImage ?? $urlAvatarDefault; + $dataUser = [ + 'id' => $this->nID, + 'name' => $this->sFirstName . ' ' . $this->sLastName, + 'relationship' => 'Me', + 'avatar' => $avatarMember + ]; + + array_push($dataMemberProfile, $dataUser); + foreach($memberProfile as $m){ $urlAvatarDefault = $m['detail']['nIDJenisKelamin'] == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/male-avatar.png'; $avatarMember = $m['detail']['sImage'] ?? $urlAvatarDefault; @@ -40,6 +54,44 @@ class UserProfileResource extends JsonResource array_push( $dataMemberProfile, $data); } + + + } else { + $nID = (Auth::user()->nID); + if ($nID){ + $memberProfile = User::with('detail')->where('nIDUser', $nID)->get()->toArray(); + + $dataMember = User::with('detail')->where('nID', $nID)->get()->first(); + + $urlAvatarDefault = $dataMember->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/male-avatar.png'; + $avatarMember = $dataMember->detail->sImage ?? $urlAvatarDefault; + $dataUser = [ + 'id' => $dataMember->nID, + 'name' => $dataMember->sFirstName . ' ' . $dataMember->sLastName, + 'relationship' => 'Me', + 'avatar' => $avatarMember + ]; + + array_push($dataMemberProfile, $dataUser); + + if (count($memberProfile) > 0){ + foreach($memberProfile as $m){ + $urlAvatarDefault = $m['detail']['nIDJenisKelamin'] == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/male-avatar.png'; + $avatarMember = $m['detail']['sImage'] ?? $urlAvatarDefault; + $relationship = DB::connection('oldlms')->table('tm_hubungan_keluarga')->where('nID', $m['nIDHubunganKeluarga'])->first('sHubunganKeluarga'); + + $data = [ + 'id' => $m['nID'], + 'name' => $m['full_name'], + 'relationship' => $relationship->sHubunganKeluarga, + 'avatar' => $avatarMember, + + ]; + + array_push( $dataMemberProfile, $data); + } + } + } } // Principal