diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index 9152e32..53c2e26 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -6,7 +6,9 @@ use App\Couple; use App\Http\Requests\Users\UpdateRequest; use App\Jobs\Users\DeleteAndReplaceUser; use App\User; +use App\UserMetadata; use Illuminate\Http\Request; +use Ramsey\Uuid\Uuid; use Storage; class UsersController extends Controller @@ -125,7 +127,21 @@ class UsersController extends Controller */ public function update(UpdateRequest $request, User $user) { - $user->update($request->validated()); + $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('name', $key)->firstOrNew(); + if (!$userMeta->exists) { + $userMeta->id = Uuid::uuid4()->toString(); + $userMeta->user_id = $user->id; + $userMeta->name = $key; + } + $userMeta->value = $userAttributes->get($key); + $userMeta->save(); + } + } return redirect()->route('users.show', $user->id); } diff --git a/app/Http/Requests/Users/UpdateRequest.php b/app/Http/Requests/Users/UpdateRequest.php index ba34ff6..ad4d219 100644 --- a/app/Http/Requests/Users/UpdateRequest.php +++ b/app/Http/Requests/Users/UpdateRequest.php @@ -39,6 +39,11 @@ class UpdateRequest extends FormRequest 'email' => 'nullable|string|max:255', 'password' => 'nullable|min:6|max:15', 'birth_order' => 'nullable|numeric|min:1', + + 'cemetery_location_name' => 'nullable|string|max:255', + 'cemetery_location_address' => 'nullable|string|max:255', + 'cemetery_location_latitude' => 'required_with:cemetery_location_longitude|nullable|string|max:255', + 'cemetery_location_longitude' => 'required_with:cemetery_location_latitude|nullable|string|max:255', ]; } diff --git a/app/UserMetadata.php b/app/UserMetadata.php new file mode 100644 index 0000000..99e3d38 --- /dev/null +++ b/app/UserMetadata.php @@ -0,0 +1,12 @@ +uuid('id')->primary(); + $table->foreignId('user_id')->constrained('users')->onDelete('cascade'); + $table->string('name')->index(); + $table->text('value'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_metadata'); + } +} diff --git a/resources/views/users/partials/edit_death.blade.php b/resources/views/users/partials/edit_death.blade.php index 6e8ff6e..0bce3a4 100644 --- a/resources/views/users/partials/edit_death.blade.php +++ b/resources/views/users/partials/edit_death.blade.php @@ -2,3 +2,7 @@