From 17f7c0245f0ff731f397721565e8907a8e46da21 Mon Sep 17 00:00:00 2001 From: Soneye Oluwasina Abimbola Date: Sat, 1 Feb 2025 18:58:38 +0100 Subject: [PATCH] feat: add vault edit and update functionality (#7523) --- .../Web/Controllers/VaultController.php | 29 ++++ .../Web/ViewHelpers/VaultEditViewHelper.php | 23 +++ .../Web/ViewHelpers/VaultIndexViewHelper.php | 3 + resources/js/Pages/Vault/Edit.vue | 153 ++++++++++++++++++ resources/js/Pages/Vault/Index.vue | 16 +- routes/web.php | 2 + 6 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultEditViewHelper.php create mode 100644 resources/js/Pages/Vault/Edit.vue diff --git a/app/Domains/Vault/ManageVault/Web/Controllers/VaultController.php b/app/Domains/Vault/ManageVault/Web/Controllers/VaultController.php index 809cd49a59d..0b46b62706f 100644 --- a/app/Domains/Vault/ManageVault/Web/Controllers/VaultController.php +++ b/app/Domains/Vault/ManageVault/Web/Controllers/VaultController.php @@ -6,7 +6,9 @@ use App\Domains\Vault\ManageLifeMetrics\Web\ViewHelpers\VaultLifeMetricsViewHelper; use App\Domains\Vault\ManageVault\Services\CreateVault; use App\Domains\Vault\ManageVault\Services\DestroyVault; +use App\Domains\Vault\ManageVault\Services\UpdateVault; use App\Domains\Vault\ManageVault\Web\ViewHelpers\VaultCreateViewHelper; +use App\Domains\Vault\ManageVault\Web\ViewHelpers\VaultEditViewHelper; use App\Domains\Vault\ManageVault\Web\ViewHelpers\VaultIndexViewHelper; use App\Domains\Vault\ManageVault\Web\ViewHelpers\VaultShowViewHelper; use App\Http\Controllers\Controller; @@ -86,6 +88,33 @@ public function show(Request $request, Vault $vault) ]); } + public function edit(Vault $vault) + { + return Inertia::render('Vault/Edit', [ + 'layoutData' => VaultIndexViewHelper::layoutData(), + 'data' => VaultEditViewHelper::data($vault), + ]); + } + + public function update(Request $request, Vault $vault) + { + $data = [ + 'account_id' => Auth::user()->account_id, + 'author_id' => Auth::id(), + 'vault_id' => $vault->id, + 'name' => $request->input('name'), + 'description' => $request->input('description'), + ]; + + (new UpdateVault)->execute($data); + + return response()->json([ + 'data' => route('vault.show', [ + 'vault' => $vault, + ]), + ], 200); + } + public function destroy(Request $request, Vault $vault) { $data = [ diff --git a/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultEditViewHelper.php b/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultEditViewHelper.php new file mode 100644 index 00000000000..c09e099962d --- /dev/null +++ b/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultEditViewHelper.php @@ -0,0 +1,23 @@ + $vault->id, + 'name' => $vault->name, + 'description' => $vault->description, + 'url' => [ + 'update' => route('vault.update', [ + 'vault' => $vault, + ]), + 'back' => route('vault.index'), + ], + ]; + } +} diff --git a/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultIndexViewHelper.php b/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultIndexViewHelper.php index 60a019d7374..7c87cdf9cc8 100644 --- a/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultIndexViewHelper.php +++ b/app/Domains/Vault/ManageVault/Web/ViewHelpers/VaultIndexViewHelper.php @@ -108,6 +108,9 @@ public static function data(User $user): array 'show' => route('vault.show', [ 'vault' => $vault, ]), + 'edit' => route('vault.edit', [ + 'vault' => $vault, + ]), 'settings' => route('vault.settings.index', [ 'vault' => $vault->id, ]), diff --git a/resources/js/Pages/Vault/Edit.vue b/resources/js/Pages/Vault/Edit.vue new file mode 100644 index 00000000000..0fdc05c2c79 --- /dev/null +++ b/resources/js/Pages/Vault/Edit.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/resources/js/Pages/Vault/Index.vue b/resources/js/Pages/Vault/Index.vue index ab357c6c32a..3f5c320136e 100644 --- a/resources/js/Pages/Vault/Index.vue +++ b/resources/js/Pages/Vault/Index.vue @@ -61,13 +61,27 @@ v-for="vault in data.vaults" :key="vault.id" class="rounded-lg border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900"> -
+
{{ vault.name }} + + + + + + +
diff --git a/routes/web.php b/routes/web.php index 07ebc096e84..358a326473c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -190,6 +190,8 @@ Route::get('create', [VaultController::class, 'create'])->name('vault.create'); Route::post('', [VaultController::class, 'store'])->name('vault.store'); Route::get('{vault}', [VaultController::class, 'show'])->name('vault.show'); + Route::get('{vault}/edit', [VaultController::class, 'edit'])->name('vault.edit'); + Route::put('{vault}', [VaultController::class, 'update'])->name('vault.update'); Route::delete('{vault}', [VaultController::class, 'destroy'])->name('vault.destroy'); Route::middleware('can:vault-viewer,vault')->prefix('{vault}')->group(function () {