From 1ab7f9fdbab09001f9638acf8663e6214cc47056 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 30 Apr 2021 22:47:48 +0800 Subject: [PATCH] Refactor user controller on update metadata part --- app/Http/Controllers/UsersController.php | 32 ++++++++++++++++++++------------ app/User.php | 7 +++++++ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index b480688..c442bfc 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -8,6 +8,7 @@ use App\Jobs\Users\DeleteAndReplaceUser; use App\User; use App\UserMetadata; use Illuminate\Http\Request; +use Illuminate\Support\Collection; use Ramsey\Uuid\Uuid; use Storage; @@ -156,18 +157,8 @@ class UsersController extends Controller $userAttributes = $request->validated(); $user->update($userAttributes); $userAttributes = collect($userAttributes); - foreach (['cemetery_location_name', 'cemetery_location_address', 'cemetery_location_latitude', 'cemetery_location_longitude'] as $key) { - if ($userAttributes->has($key)) { - $userMeta = UserMetadata::where('user_id', $user->id)->where('key', $key)->firstOrNew(); - if (!$userMeta->exists) { - $userMeta->id = Uuid::uuid4()->toString(); - $userMeta->user_id = $user->id; - $userMeta->key = $key; - } - $userMeta->value = $userAttributes->get($key); - $userMeta->save(); - } - } + + $this->updateUserMetadata($user, $userAttributes); return redirect()->route('users.show', $user->id); } @@ -274,4 +265,21 @@ class UsersController extends Controller return $allMariageList; } + + private function updateUserMetadata(User $user, Collection $userAttributes) + { + foreach (User::METADATA_KEYS as $key) { + if ($userAttributes->has($key) == false) { + continue; + } + $userMeta = UserMetadata::where('user_id', $user->id)->where('key', $key)->firstOrNew(); + if (!$userMeta->exists) { + $userMeta->id = Uuid::uuid4()->toString(); + $userMeta->user_id = $user->id; + $userMeta->key = $key; + } + $userMeta->value = $userAttributes->get($key); + $userMeta->save(); + } + } } diff --git a/app/User.php b/app/User.php index 6798447..aaca300 100644 --- a/app/User.php +++ b/app/User.php @@ -11,6 +11,13 @@ class User extends Authenticatable { use Notifiable; + const METADATA_KEYS = [ + 'cemetery_location_name', + 'cemetery_location_address', + 'cemetery_location_latitude', + 'cemetery_location_longitude', + ]; + /** * Indicates if the IDs are auto-incrementing. *