coupon code system eingeführt. coupons werden vom super admin gemanaged. coupons werden mit paddle synchronisiert und dort validiert. plus: einige mobil-optimierungen im tenant admin pwa.

This commit is contained in:
Codex Agent
2025-11-09 20:26:50 +01:00
parent f3c44be76d
commit 082b78cd43
80 changed files with 4855 additions and 435 deletions

View File

@@ -7,6 +7,8 @@ use App\Http\Requests\Tenant\EmotionStoreRequest;
use App\Http\Requests\Tenant\EmotionUpdateRequest;
use App\Http\Resources\Tenant\EmotionResource;
use App\Models\Emotion;
use App\Models\Tenant;
use App\Support\TenantRequestResolver;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
@@ -16,7 +18,7 @@ class EmotionController extends Controller
{
public function index(Request $request): AnonymousResourceCollection
{
$tenantId = $request->tenant->id;
$tenantId = $this->currentTenant($request)->id;
$query = Emotion::query()
->whereNull('tenant_id')
@@ -41,9 +43,10 @@ class EmotionController extends Controller
public function store(EmotionStoreRequest $request): JsonResponse
{
$data = $request->validated();
$tenantId = $this->currentTenant($request)->id;
$payload = [
'tenant_id' => $request->tenant->id,
'tenant_id' => $tenantId,
'name' => $this->localizeValue($data['name']),
'description' => $this->localizeValue($data['description'] ?? null, allowNull: true),
'icon' => $data['icon'] ?? 'lucide-smile',
@@ -70,7 +73,9 @@ class EmotionController extends Controller
public function update(EmotionUpdateRequest $request, Emotion $emotion): JsonResponse
{
if ($emotion->tenant_id && $emotion->tenant_id !== $request->tenant->id) {
$tenantId = $this->currentTenant($request)->id;
if ($emotion->tenant_id && $emotion->tenant_id !== $tenantId) {
abort(403, 'Emotion gehört nicht zu diesem Tenant.');
}
@@ -139,6 +144,7 @@ class EmotionController extends Controller
if (is_string($value) && $value !== '') {
$locale = app()->getLocale() ?: 'de';
return [$locale => $value];
}
@@ -149,9 +155,14 @@ class EmotionController extends Controller
{
$normalized = ltrim($color, '#');
if (strlen($normalized) === 6) {
return '#' . strtolower($normalized);
return '#'.strtolower($normalized);
}
return '#6366f1';
}
protected function currentTenant(Request $request): Tenant
{
return TenantRequestResolver::resolve($request);
}
}