From c1ef1d71ad2dd7fd87eace7fc66cc09e784bde04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20G=C3=BCnther?=
Date: Sun, 21 Jun 2026 22:12:05 +0200
Subject: [PATCH] Code Styling
---
.../CreateTenant/CreateTenantAction.php | 38 ++++++++++++++++++
.../CreateTenant/CreateTenantRequest.php | 13 +++++++
.../CreateTenant/CreateTenantResponse.php | 10 +++++
.../ToggleUserActiveAction.php | 30 ++++++++++++++
.../ToggleUserActiveRequest.php | 14 +++++++
.../ToggleUserActiveResponse.php | 10 +++++
.../UpdateTenantContactAction.php | 27 +++++++++++++
.../UpdateTenantContactRequest.php | 17 ++++++++
.../UpdateTenantContactResponse.php | 9 +++++
.../UpdateTenantGdprAction.php | 24 ++++++++++++
.../UpdateTenantGdprRequest.php | 14 +++++++
.../UpdateTenantGdprResponse.php | 9 +++++
.../UpdateTenantGeneralAction.php | 26 +++++++++++++
.../UpdateTenantGeneralRequest.php | 16 ++++++++
.../UpdateTenantGeneralResponse.php | 9 +++++
.../UpdateTenantImpressAction.php | 24 ++++++++++++
.../UpdateTenantImpressRequest.php | 14 +++++++
.../UpdateTenantImpressResponse.php | 9 +++++
.../UpdateTenantPaymentAction.php | 26 +++++++++++++
.../UpdateTenantPaymentRequest.php | 16 ++++++++
.../UpdateTenantPaymentResponse.php | 9 +++++
.../Actions/UpdateUser/UpdateUserAction.php | 39 +++++++++++++++++++
.../Actions/UpdateUser/UpdateUserRequest.php | 16 ++++++++
.../Actions/UpdateUser/UpdateUserResponse.php | 9 +++++
.../ManagedTenantContactGetController.php | 3 +-
.../ManagedTenantContactUpdateController.php | 24 +++++++-----
.../ManagedTenantGdprGetController.php | 3 +-
.../ManagedTenantGdprUpdateController.php | 19 +++++----
.../ManagedTenantImpressGetController.php | 3 +-
.../ManagedTenantImpressUpdateController.php | 18 +++++----
.../ManagedTenantPaymentGetController.php | 3 +-
.../ManagedTenantPaymentUpdateController.php | 22 ++++++-----
.../TenantContactUpdateController.php | 21 ++++++----
.../Controllers/TenantCreateController.php | 30 ++++++--------
.../Controllers/TenantEditPageController.php | 3 +-
.../TenantGdprUpdateController.php | 15 ++++---
.../TenantGeneralGetController.php | 3 +-
.../TenantGeneralUpdateController.php | 22 ++++++-----
.../TenantImpressUpdateController.php | 15 ++++---
.../Controllers/TenantListApiController.php | 7 ++--
.../TenantPaymentUpdateController.php | 19 +++++----
.../Controllers/UserDetailGetController.php | 9 ++---
.../Controllers/UserListApiController.php | 18 ++-------
.../UserResetPasswordController.php | 3 +-
.../UserToggleActiveController.php | 25 ++++++------
.../Controllers/UserUpdateController.php | 35 ++++++-----------
.../Repositories/AdminTenantRepository.php | 30 ++++++++++++++
.../Repositories/AdminUserRepository.php | 25 ++++++++++++
app/Scopes/CommonController.php | 6 +++
49 files changed, 650 insertions(+), 159 deletions(-)
create mode 100644 app/Domains/Admin/Actions/CreateTenant/CreateTenantAction.php
create mode 100644 app/Domains/Admin/Actions/CreateTenant/CreateTenantRequest.php
create mode 100644 app/Domains/Admin/Actions/CreateTenant/CreateTenantResponse.php
create mode 100644 app/Domains/Admin/Actions/ToggleUserActive/ToggleUserActiveAction.php
create mode 100644 app/Domains/Admin/Actions/ToggleUserActive/ToggleUserActiveRequest.php
create mode 100644 app/Domains/Admin/Actions/ToggleUserActive/ToggleUserActiveResponse.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantContact/UpdateTenantContactAction.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantContact/UpdateTenantContactRequest.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantContact/UpdateTenantContactResponse.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantGdpr/UpdateTenantGdprAction.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantGdpr/UpdateTenantGdprRequest.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantGdpr/UpdateTenantGdprResponse.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantGeneral/UpdateTenantGeneralAction.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantGeneral/UpdateTenantGeneralRequest.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantGeneral/UpdateTenantGeneralResponse.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantImpress/UpdateTenantImpressAction.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantImpress/UpdateTenantImpressRequest.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantImpress/UpdateTenantImpressResponse.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantPayment/UpdateTenantPaymentAction.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantPayment/UpdateTenantPaymentRequest.php
create mode 100644 app/Domains/Admin/Actions/UpdateTenantPayment/UpdateTenantPaymentResponse.php
create mode 100644 app/Domains/Admin/Actions/UpdateUser/UpdateUserAction.php
create mode 100644 app/Domains/Admin/Actions/UpdateUser/UpdateUserRequest.php
create mode 100644 app/Domains/Admin/Actions/UpdateUser/UpdateUserResponse.php
create mode 100644 app/Domains/Admin/Repositories/AdminTenantRepository.php
create mode 100644 app/Domains/Admin/Repositories/AdminUserRepository.php
diff --git a/app/Domains/Admin/Actions/CreateTenant/CreateTenantAction.php b/app/Domains/Admin/Actions/CreateTenant/CreateTenantAction.php
new file mode 100644
index 0000000..05c4504
--- /dev/null
+++ b/app/Domains/Admin/Actions/CreateTenant/CreateTenantAction.php
@@ -0,0 +1,38 @@
+ $this->request->name,
+ 'slug' => $this->request->slug,
+ 'url' => $this->request->url,
+ 'email' => '',
+ 'email_finance' => '',
+ 'account_name' => '',
+ 'account_iban' => '',
+ 'account_bic' => '',
+ 'city' => '',
+ 'postcode' => '',
+ 'is_active_local_group' => true,
+ 'has_active_instance' => true,
+ ]);
+
+ $response->success = true;
+ $response->message = 'Stamm wurde angelegt.';
+ $response->slug = $tenant->slug;
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/CreateTenant/CreateTenantRequest.php b/app/Domains/Admin/Actions/CreateTenant/CreateTenantRequest.php
new file mode 100644
index 0000000..85e7e82
--- /dev/null
+++ b/app/Domains/Admin/Actions/CreateTenant/CreateTenantRequest.php
@@ -0,0 +1,13 @@
+request->currentUserId === $this->request->user->id) {
+ $response->message = 'Du kannst dich nicht selbst deaktivieren.';
+ return $response;
+ }
+
+ $this->request->user->update(['active' => !$this->request->user->active]);
+
+ $status = $this->request->user->active ? 'aktiviert' : 'deaktiviert';
+
+ $response->success = true;
+ $response->message = 'Benutzer*in wurde ' . $status . '.';
+ $response->active = $this->request->user->active;
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/ToggleUserActive/ToggleUserActiveRequest.php b/app/Domains/Admin/Actions/ToggleUserActive/ToggleUserActiveRequest.php
new file mode 100644
index 0000000..b4f39d5
--- /dev/null
+++ b/app/Domains/Admin/Actions/ToggleUserActive/ToggleUserActiveRequest.php
@@ -0,0 +1,14 @@
+request->tenant->update([
+ 'email' => $this->request->email,
+ 'email_finance' => $this->request->emailFinance,
+ 'postcode' => $this->request->postcode,
+ 'city' => $this->request->city,
+ ]);
+
+ $response->success = true;
+ $response->message = 'Kontaktdaten wurden gespeichert.';
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/UpdateTenantContact/UpdateTenantContactRequest.php b/app/Domains/Admin/Actions/UpdateTenantContact/UpdateTenantContactRequest.php
new file mode 100644
index 0000000..f9135ea
--- /dev/null
+++ b/app/Domains/Admin/Actions/UpdateTenantContact/UpdateTenantContactRequest.php
@@ -0,0 +1,17 @@
+request->tenant->update([
+ 'gdpr_text' => $this->request->gdprText,
+ ]);
+
+ $response->success = true;
+ $response->message = 'Datenschutzerklärung wurde gespeichert.';
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/UpdateTenantGdpr/UpdateTenantGdprRequest.php b/app/Domains/Admin/Actions/UpdateTenantGdpr/UpdateTenantGdprRequest.php
new file mode 100644
index 0000000..4e63c27
--- /dev/null
+++ b/app/Domains/Admin/Actions/UpdateTenantGdpr/UpdateTenantGdprRequest.php
@@ -0,0 +1,14 @@
+request->tenant->update([
+ 'name' => $this->request->name,
+ 'slug' => $this->request->slug,
+ 'url' => $this->request->url,
+ ]);
+
+ $response->success = true;
+ $response->message = 'Allgemeine Daten wurden gespeichert.';
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/UpdateTenantGeneral/UpdateTenantGeneralRequest.php b/app/Domains/Admin/Actions/UpdateTenantGeneral/UpdateTenantGeneralRequest.php
new file mode 100644
index 0000000..277cf0e
--- /dev/null
+++ b/app/Domains/Admin/Actions/UpdateTenantGeneral/UpdateTenantGeneralRequest.php
@@ -0,0 +1,16 @@
+request->tenant->update([
+ 'impress_text' => $this->request->impressText,
+ ]);
+
+ $response->success = true;
+ $response->message = 'Impressum wurde gespeichert.';
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/UpdateTenantImpress/UpdateTenantImpressRequest.php b/app/Domains/Admin/Actions/UpdateTenantImpress/UpdateTenantImpressRequest.php
new file mode 100644
index 0000000..d3e8637
--- /dev/null
+++ b/app/Domains/Admin/Actions/UpdateTenantImpress/UpdateTenantImpressRequest.php
@@ -0,0 +1,14 @@
+request->tenant->update([
+ 'account_iban' => $this->request->accountIban,
+ 'account_bic' => $this->request->accountBic,
+ 'account_name' => $this->request->accountName,
+ ]);
+
+ $response->success = true;
+ $response->message = 'Bezahldaten wurden gespeichert.';
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/UpdateTenantPayment/UpdateTenantPaymentRequest.php b/app/Domains/Admin/Actions/UpdateTenantPayment/UpdateTenantPaymentRequest.php
new file mode 100644
index 0000000..1bc9a60
--- /dev/null
+++ b/app/Domains/Admin/Actions/UpdateTenantPayment/UpdateTenantPaymentRequest.php
@@ -0,0 +1,16 @@
+request->isLvTenant) {
+ $allowedFields[] = 'local_group';
+ if (!$this->request->isOwnUser) {
+ $allowedFields[] = 'user_role_main';
+ }
+ }
+
+ $data = array_intersect_key($this->request->data, array_flip($allowedFields));
+ $this->request->user->update($data);
+
+ $response->success = true;
+ $response->message = 'Benutzerdaten wurden gespeichert.';
+
+ return $response;
+ }
+}
diff --git a/app/Domains/Admin/Actions/UpdateUser/UpdateUserRequest.php b/app/Domains/Admin/Actions/UpdateUser/UpdateUserRequest.php
new file mode 100644
index 0000000..85a347a
--- /dev/null
+++ b/app/Domains/Admin/Actions/UpdateUser/UpdateUserRequest.php
@@ -0,0 +1,16 @@
+firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
return response()->json([
'email' => $tenant->email,
diff --git a/app/Domains/Admin/Controllers/ManagedTenantContactUpdateController.php b/app/Domains/Admin/Controllers/ManagedTenantContactUpdateController.php
index a102aac..dce1996 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantContactUpdateController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantContactUpdateController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
+use App\Domains\Admin\Actions\UpdateTenantContact\UpdateTenantContactAction;
+use App\Domains\Admin\Actions\UpdateTenantContact\UpdateTenantContactRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,18 +12,21 @@ class ManagedTenantContactUpdateController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
- $tenant->update([
- 'email' => $request->input('email'),
- 'email_finance' => $request->input('email_finance'),
- 'postcode' => $request->input('postcode'),
- 'city' => $request->input('city'),
- ]);
+ $action = new UpdateTenantContactAction(new UpdateTenantContactRequest(
+ tenant: $tenant,
+ email: $request->input('email'),
+ emailFinance: $request->input('email_finance'),
+ postcode: $request->input('postcode'),
+ city: $request->input('city'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Kontaktdaten wurden gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/ManagedTenantGdprGetController.php b/app/Domains/Admin/Controllers/ManagedTenantGdprGetController.php
index 6cc472d..06bd941 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantGdprGetController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantGdprGetController.php
@@ -2,7 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,7 +10,7 @@ class ManagedTenantGdprGetController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
return response()->json([
'gdpr_text' => $tenant->gdpr_text ?? '',
diff --git a/app/Domains/Admin/Controllers/ManagedTenantGdprUpdateController.php b/app/Domains/Admin/Controllers/ManagedTenantGdprUpdateController.php
index 96a3826..47703c5 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantGdprUpdateController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantGdprUpdateController.php
@@ -2,24 +2,29 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
+use App\Domains\Admin\Actions\UpdateTenantGdpr\UpdateTenantGdprAction;
+use App\Domains\Admin\Actions\UpdateTenantGdpr\UpdateTenantGdprRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ManagedTenantGdprUpdateController extends CommonController
{
+
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
- $tenant->update([
- 'gdpr_text' => $request->input('gdpr_text'),
- ]);
+ $action = new UpdateTenantGdprAction(new UpdateTenantGdprRequest(
+ tenant: $tenant,
+ gdprText: $request->input('gdpr_text'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Datenschutzerklärung wurde gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/ManagedTenantImpressGetController.php b/app/Domains/Admin/Controllers/ManagedTenantImpressGetController.php
index dd188a8..8a718da 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantImpressGetController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantImpressGetController.php
@@ -2,7 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,7 +10,7 @@ class ManagedTenantImpressGetController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
return response()->json([
'impress_text' => $tenant->impress_text ?? '',
diff --git a/app/Domains/Admin/Controllers/ManagedTenantImpressUpdateController.php b/app/Domains/Admin/Controllers/ManagedTenantImpressUpdateController.php
index 09e23f1..baa1225 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantImpressUpdateController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantImpressUpdateController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
+use App\Domains\Admin\Actions\UpdateTenantImpress\UpdateTenantImpressAction;
+use App\Domains\Admin\Actions\UpdateTenantImpress\UpdateTenantImpressRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,15 +12,18 @@ class ManagedTenantImpressUpdateController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
- $tenant->update([
- 'impress_text' => $request->input('impress_text'),
- ]);
+ $action = new UpdateTenantImpressAction(new UpdateTenantImpressRequest(
+ tenant: $tenant,
+ impressText: $request->input('impress_text'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Impressum wurde gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/ManagedTenantPaymentGetController.php b/app/Domains/Admin/Controllers/ManagedTenantPaymentGetController.php
index 5d8e258..e57e10b 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantPaymentGetController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantPaymentGetController.php
@@ -2,7 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,7 +10,7 @@ class ManagedTenantPaymentGetController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
return response()->json([
'account_iban' => $tenant->account_iban,
diff --git a/app/Domains/Admin/Controllers/ManagedTenantPaymentUpdateController.php b/app/Domains/Admin/Controllers/ManagedTenantPaymentUpdateController.php
index e01d39a..8d8e184 100644
--- a/app/Domains/Admin/Controllers/ManagedTenantPaymentUpdateController.php
+++ b/app/Domains/Admin/Controllers/ManagedTenantPaymentUpdateController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
+use App\Domains\Admin\Actions\UpdateTenantPayment\UpdateTenantPaymentAction;
+use App\Domains\Admin\Actions\UpdateTenantPayment\UpdateTenantPaymentRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,17 +12,20 @@ class ManagedTenantPaymentUpdateController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
- $tenant->update([
- 'account_iban' => $request->input('account_iban'),
- 'account_bic' => $request->input('account_bic'),
- 'account_name' => $request->input('account_name'),
- ]);
+ $action = new UpdateTenantPaymentAction(new UpdateTenantPaymentRequest(
+ tenant: $tenant,
+ accountIban: $request->input('account_iban'),
+ accountBic: $request->input('account_bic'),
+ accountName: $request->input('account_name'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Bezahldaten wurden gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantContactUpdateController.php b/app/Domains/Admin/Controllers/TenantContactUpdateController.php
index 8acf166..bc38a23 100644
--- a/app/Domains/Admin/Controllers/TenantContactUpdateController.php
+++ b/app/Domains/Admin/Controllers/TenantContactUpdateController.php
@@ -2,6 +2,8 @@
namespace App\Domains\Admin\Controllers;
+use App\Domains\Admin\Actions\UpdateTenantContact\UpdateTenantContactAction;
+use App\Domains\Admin\Actions\UpdateTenantContact\UpdateTenantContactRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -10,16 +12,19 @@ class TenantContactUpdateController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $this->tenant->update([
- 'email' => $request->input('email'),
- 'email_finance' => $request->input('email_finance'),
- 'postcode' => $request->input('postcode'),
- 'city' => $request->input('city'),
- ]);
+ $action = new UpdateTenantContactAction(new UpdateTenantContactRequest(
+ tenant: $this->tenant,
+ email: $request->input('email'),
+ emailFinance: $request->input('email_finance'),
+ postcode: $request->input('postcode'),
+ city: $request->input('city'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Kontaktdaten wurden gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantCreateController.php b/app/Domains/Admin/Controllers/TenantCreateController.php
index c92e269..1048f63 100644
--- a/app/Domains/Admin/Controllers/TenantCreateController.php
+++ b/app/Domains/Admin/Controllers/TenantCreateController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
+use App\Domains\Admin\Actions\CreateTenant\CreateTenantAction;
+use App\Domains\Admin\Actions\CreateTenant\CreateTenantRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,25 +12,18 @@ class TenantCreateController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $tenant = Tenant::create([
- 'name' => $request->input('name'),
- 'slug' => $request->input('slug'),
- 'url' => $request->input('url'),
- 'email' => '',
- 'email_finance' => '',
- 'account_name' => '',
- 'account_iban' => '',
- 'account_bic' => '',
- 'city' => '',
- 'postcode' => '',
- 'is_active_local_group' => true,
- 'has_active_instance' => true,
- ]);
+ $action = new CreateTenantAction(new CreateTenantRequest(
+ name: $request->input('name'),
+ slug: $request->input('slug'),
+ url: $request->input('url'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Stamm wurde angelegt.',
- 'slug' => $tenant->slug,
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
+ 'slug' => $response->slug,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantEditPageController.php b/app/Domains/Admin/Controllers/TenantEditPageController.php
index dbf22a4..d56262d 100644
--- a/app/Domains/Admin/Controllers/TenantEditPageController.php
+++ b/app/Domains/Admin/Controllers/TenantEditPageController.php
@@ -2,7 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
use App\Providers\InertiaProvider;
use App\Scopes\CommonController;
use Illuminate\Http\Request;
@@ -12,7 +11,7 @@ class TenantEditPageController extends CommonController
{
public function __invoke(string $slug, Request $request): Response
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
$inertiaProvider = new InertiaProvider('Admin/TenantEdit', [
'tenant' => [
diff --git a/app/Domains/Admin/Controllers/TenantGdprUpdateController.php b/app/Domains/Admin/Controllers/TenantGdprUpdateController.php
index 974495b..e9886d8 100644
--- a/app/Domains/Admin/Controllers/TenantGdprUpdateController.php
+++ b/app/Domains/Admin/Controllers/TenantGdprUpdateController.php
@@ -2,6 +2,8 @@
namespace App\Domains\Admin\Controllers;
+use App\Domains\Admin\Actions\UpdateTenantGdpr\UpdateTenantGdprAction;
+use App\Domains\Admin\Actions\UpdateTenantGdpr\UpdateTenantGdprRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -10,13 +12,16 @@ class TenantGdprUpdateController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $this->tenant->update([
- 'gdpr_text' => $request->input('gdpr_text'),
- ]);
+ $action = new UpdateTenantGdprAction(new UpdateTenantGdprRequest(
+ tenant: $this->tenant,
+ gdprText: $request->input('gdpr_text'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Datenschutzerklärung wurde gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantGeneralGetController.php b/app/Domains/Admin/Controllers/TenantGeneralGetController.php
index 0c3c877..714bb72 100644
--- a/app/Domains/Admin/Controllers/TenantGeneralGetController.php
+++ b/app/Domains/Admin/Controllers/TenantGeneralGetController.php
@@ -2,7 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,7 +10,7 @@ class TenantGeneralGetController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
return response()->json([
'name' => $tenant->name,
diff --git a/app/Domains/Admin/Controllers/TenantGeneralUpdateController.php b/app/Domains/Admin/Controllers/TenantGeneralUpdateController.php
index 3f6277e..a1654fe 100644
--- a/app/Domains/Admin/Controllers/TenantGeneralUpdateController.php
+++ b/app/Domains/Admin/Controllers/TenantGeneralUpdateController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
+use App\Domains\Admin\Actions\UpdateTenantGeneral\UpdateTenantGeneralAction;
+use App\Domains\Admin\Actions\UpdateTenantGeneral\UpdateTenantGeneralRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,17 +12,20 @@ class TenantGeneralUpdateController extends CommonController
{
public function __invoke(string $slug, Request $request): JsonResponse
{
- $tenant = Tenant::where('slug', $slug)->firstOrFail();
+ $tenant = $this->adminTenants->findBySlug($slug);
- $tenant->update([
- 'name' => $request->input('name'),
- 'slug' => $request->input('slug'),
- 'url' => $request->input('url'),
- ]);
+ $action = new UpdateTenantGeneralAction(new UpdateTenantGeneralRequest(
+ tenant: $tenant,
+ name: $request->input('name'),
+ slug: $request->input('slug'),
+ url: $request->input('url'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Allgemeine Daten wurden gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantImpressUpdateController.php b/app/Domains/Admin/Controllers/TenantImpressUpdateController.php
index e2feaac..b18a1f1 100644
--- a/app/Domains/Admin/Controllers/TenantImpressUpdateController.php
+++ b/app/Domains/Admin/Controllers/TenantImpressUpdateController.php
@@ -2,6 +2,8 @@
namespace App\Domains\Admin\Controllers;
+use App\Domains\Admin\Actions\UpdateTenantImpress\UpdateTenantImpressAction;
+use App\Domains\Admin\Actions\UpdateTenantImpress\UpdateTenantImpressRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -10,13 +12,16 @@ class TenantImpressUpdateController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $this->tenant->update([
- 'impress_text' => $request->input('impress_text'),
- ]);
+ $action = new UpdateTenantImpressAction(new UpdateTenantImpressRequest(
+ tenant: $this->tenant,
+ impressText: $request->input('impress_text'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Impressum wurde gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantListApiController.php b/app/Domains/Admin/Controllers/TenantListApiController.php
index 12c68e8..f09e6b4 100644
--- a/app/Domains/Admin/Controllers/TenantListApiController.php
+++ b/app/Domains/Admin/Controllers/TenantListApiController.php
@@ -2,7 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,7 +10,9 @@ class TenantListApiController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $tenants = Tenant::where('has_active_instance', true)->get()->map(function ($tenant) {
+ $tenants = $this->adminTenants->getActiveTenants();
+
+ $mapped = $tenants->map(function ($tenant) {
return [
'name' => $tenant->name,
'slug' => $tenant->slug,
@@ -20,6 +21,6 @@ class TenantListApiController extends CommonController
];
});
- return response()->json(['tenants' => $tenants]);
+ return response()->json(['tenants' => $mapped]);
}
}
diff --git a/app/Domains/Admin/Controllers/TenantPaymentUpdateController.php b/app/Domains/Admin/Controllers/TenantPaymentUpdateController.php
index 7bf6fef..f6bf901 100644
--- a/app/Domains/Admin/Controllers/TenantPaymentUpdateController.php
+++ b/app/Domains/Admin/Controllers/TenantPaymentUpdateController.php
@@ -2,6 +2,8 @@
namespace App\Domains\Admin\Controllers;
+use App\Domains\Admin\Actions\UpdateTenantPayment\UpdateTenantPaymentAction;
+use App\Domains\Admin\Actions\UpdateTenantPayment\UpdateTenantPaymentRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -10,15 +12,18 @@ class TenantPaymentUpdateController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $this->tenant->update([
- 'account_iban' => $request->input('account_iban'),
- 'account_bic' => $request->input('account_bic'),
- 'account_name' => $request->input('account_name'),
- ]);
+ $action = new UpdateTenantPaymentAction(new UpdateTenantPaymentRequest(
+ tenant: $this->tenant,
+ accountIban: $request->input('account_iban'),
+ accountBic: $request->input('account_bic'),
+ accountName: $request->input('account_name'),
+ ));
+
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Bezahldaten wurden gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/UserDetailGetController.php b/app/Domains/Admin/Controllers/UserDetailGetController.php
index 9e013e7..a093c0d 100644
--- a/app/Domains/Admin/Controllers/UserDetailGetController.php
+++ b/app/Domains/Admin/Controllers/UserDetailGetController.php
@@ -3,8 +3,6 @@
namespace App\Domains\Admin\Controllers;
use App\Enumerations\UserRole;
-use App\Models\Tenant;
-use App\Models\User;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -13,13 +11,12 @@ class UserDetailGetController extends CommonController
{
public function __invoke(int $id, Request $request): JsonResponse
{
- $user = User::findOrFail($id);
+ $user = $this->adminUsers->findById($id);
$userData = $user->toArray();
-
unset($userData['password'], $userData['remember_token'], $userData['activation_token'], $userData['activation_token_expires_at']);
- $tenantNames = Tenant::pluck('name', 'slug');
+ $tenantNames = $this->adminTenants->getTenantNames();
$userData['nicename'] = $user->getNicename();
$userData['fullname'] = $user->getFullName();
$userData['local_group_name'] = $tenantNames[$user->local_group] ?? $user->local_group;
@@ -29,7 +26,7 @@ class UserDetailGetController extends CommonController
'isOwnUser' => auth()->id() === $user->id,
'isLvTenant' => $this->tenant->slug === 'lv',
'userRoles' => UserRole::all()->map(fn($role) => ['slug' => $role->slug, 'name' => $role->name]),
- 'localGroups' => Tenant::where('is_active_local_group', true)->get()->map(fn($t) => ['slug' => $t->slug, 'name' => $t->name]),
+ 'localGroups' => $this->adminTenants->getActiveLocalGroups()->map(fn($t) => ['slug' => $t->slug, 'name' => $t->name]),
]);
}
}
diff --git a/app/Domains/Admin/Controllers/UserListApiController.php b/app/Domains/Admin/Controllers/UserListApiController.php
index e4aa5dc..8ba8a76 100644
--- a/app/Domains/Admin/Controllers/UserListApiController.php
+++ b/app/Domains/Admin/Controllers/UserListApiController.php
@@ -2,8 +2,6 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\Tenant;
-use App\Models\User;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -12,18 +10,10 @@ class UserListApiController extends CommonController
{
public function __invoke(Request $request): JsonResponse
{
- $tenantNames = Tenant::pluck('name', 'slug');
+ $tenantNames = $this->adminTenants->getTenantNames();
+ $users = $this->adminUsers->getListForTenant($this->tenant->slug);
- $query = User::query();
-
- if ($this->tenant->slug === 'lv') {
- $query->orderBy('lastname')->orderBy('firstname');
- } else {
- $query->where('local_group', $this->tenant->slug)
- ->orderBy('lastname')->orderBy('firstname');
- }
-
- $users = $query->get()->map(function ($user) use ($tenantNames) {
+ $mapped = $users->map(function ($user) use ($tenantNames) {
return [
'id' => $user->id,
'firstname' => $user->firstname,
@@ -35,6 +25,6 @@ class UserListApiController extends CommonController
];
});
- return response()->json(['users' => $users]);
+ return response()->json(['users' => $mapped]);
}
}
diff --git a/app/Domains/Admin/Controllers/UserResetPasswordController.php b/app/Domains/Admin/Controllers/UserResetPasswordController.php
index 253034f..d27ebb8 100644
--- a/app/Domains/Admin/Controllers/UserResetPasswordController.php
+++ b/app/Domains/Admin/Controllers/UserResetPasswordController.php
@@ -3,7 +3,6 @@
namespace App\Domains\Admin\Controllers;
use App\Domains\UserManagement\Actions\GenerateActivationToken\GenerateActivationTokenCommand;
-use App\Models\User;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -12,7 +11,7 @@ class UserResetPasswordController extends CommonController
{
public function __invoke(int $id, Request $request): JsonResponse
{
- $user = User::findOrFail($id);
+ $user = $this->adminUsers->findById($id);
if (!$user->email) {
return response()->json([
diff --git a/app/Domains/Admin/Controllers/UserToggleActiveController.php b/app/Domains/Admin/Controllers/UserToggleActiveController.php
index 4c5ffe5..005d7bc 100644
--- a/app/Domains/Admin/Controllers/UserToggleActiveController.php
+++ b/app/Domains/Admin/Controllers/UserToggleActiveController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\User;
+use App\Domains\Admin\Actions\ToggleUserActive\ToggleUserActiveAction;
+use App\Domains\Admin\Actions\ToggleUserActive\ToggleUserActiveRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,23 +12,19 @@ class UserToggleActiveController extends CommonController
{
public function __invoke(int $id, Request $request): JsonResponse
{
- $user = User::findOrFail($id);
+ $user = $this->adminUsers->findById($id);
- if (auth()->id() === $user->id) {
- return response()->json([
- 'status' => 'error',
- 'message' => 'Du kannst dich nicht selbst deaktivieren.',
- ]);
- }
+ $action = new ToggleUserActiveAction(new ToggleUserActiveRequest(
+ user: $user,
+ currentUserId: auth()->id(),
+ ));
- $user->update(['active' => !$user->active]);
-
- $status = $user->active ? 'aktiviert' : 'deaktiviert';
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Benutzer*in wurde ' . $status . '.',
- 'active' => $user->active,
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
+ 'active' => $response->active,
]);
}
}
diff --git a/app/Domains/Admin/Controllers/UserUpdateController.php b/app/Domains/Admin/Controllers/UserUpdateController.php
index de85b97..6878692 100644
--- a/app/Domains/Admin/Controllers/UserUpdateController.php
+++ b/app/Domains/Admin/Controllers/UserUpdateController.php
@@ -2,7 +2,8 @@
namespace App\Domains\Admin\Controllers;
-use App\Models\User;
+use App\Domains\Admin\Actions\UpdateUser\UpdateUserAction;
+use App\Domains\Admin\Actions\UpdateUser\UpdateUserRequest;
use App\Scopes\CommonController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -11,32 +12,20 @@ class UserUpdateController extends CommonController
{
public function __invoke(int $id, Request $request): JsonResponse
{
- $user = User::findOrFail($id);
- $isOwnUser = auth()->id() === $user->id;
- $isLvTenant = $this->tenant->slug === 'lv';
+ $user = $this->adminUsers->findById($id);
- $allowedFields = [
- 'firstname', 'lastname', 'nickname', 'email', 'phone', 'birthday',
- 'membership_id', 'address_1', 'address_2', 'postcode', 'city',
- 'eating_habits', 'swimming_permission', 'first_aid_permission',
- 'bank_account_owner', 'bank_account_iban',
- 'medications', 'allergies', 'intolerances',
- 'user_role_local_group',
- ];
+ $action = new UpdateUserAction(new UpdateUserRequest(
+ user: $user,
+ data: $request->all(),
+ isOwnUser: auth()->id() === $user->id,
+ isLvTenant: $this->tenant->slug === 'lv',
+ ));
- if ($isLvTenant) {
- $allowedFields[] = 'local_group';
- if (!$isOwnUser) {
- $allowedFields[] = 'user_role_main';
- }
- }
-
- $data = $request->only($allowedFields);
- $user->update($data);
+ $response = $action->execute();
return response()->json([
- 'status' => 'success',
- 'message' => 'Benutzerdaten wurden gespeichert.',
+ 'status' => $response->success ? 'success' : 'error',
+ 'message' => $response->message,
]);
}
}
diff --git a/app/Domains/Admin/Repositories/AdminTenantRepository.php b/app/Domains/Admin/Repositories/AdminTenantRepository.php
new file mode 100644
index 0000000..0c92d38
--- /dev/null
+++ b/app/Domains/Admin/Repositories/AdminTenantRepository.php
@@ -0,0 +1,30 @@
+firstOrFail();
+ }
+
+ public function getActiveTenants(): Collection
+ {
+ return Tenant::where('has_active_instance', true)->get();
+ }
+
+ public function getTenantNames(): SupportCollection
+ {
+ return Tenant::pluck('name', 'slug');
+ }
+
+ public function getActiveLocalGroups(): Collection
+ {
+ return Tenant::where('is_active_local_group', true)->get();
+ }
+}
diff --git a/app/Domains/Admin/Repositories/AdminUserRepository.php b/app/Domains/Admin/Repositories/AdminUserRepository.php
new file mode 100644
index 0000000..997ca58
--- /dev/null
+++ b/app/Domains/Admin/Repositories/AdminUserRepository.php
@@ -0,0 +1,25 @@
+where('local_group', $tenantSlug);
+ }
+
+ return $query->orderBy('lastname')->orderBy('firstname')->get();
+ }
+}
diff --git a/app/Scopes/CommonController.php b/app/Scopes/CommonController.php
index dd0efae..695b531 100644
--- a/app/Scopes/CommonController.php
+++ b/app/Scopes/CommonController.php
@@ -2,6 +2,8 @@
namespace App\Scopes;
+use App\Domains\Admin\Repositories\AdminTenantRepository;
+use App\Domains\Admin\Repositories\AdminUserRepository;
use App\Models\Tenant;
use App\Providers\AuthCheckProvider;
use App\Repositories\CostUnitRepository;
@@ -23,6 +25,8 @@ abstract class CommonController {
protected EventRepository $events;
protected EventParticipantRepository $eventParticipants;
protected EstimatesRepository $estimates;
+ protected AdminUserRepository $adminUsers;
+ protected AdminTenantRepository $adminTenants;
public function __construct() {
$this->tenant = app('tenant');
@@ -33,6 +37,8 @@ abstract class CommonController {
$this->events = new EventRepository();
$this->eventParticipants = new EventParticipantRepository();
$this->estimates = new EstimatesRepository();
+ $this->adminUsers = new AdminUserRepository();
+ $this->adminTenants = new AdminTenantRepository();
}
protected function checkAuth() {