user(); if (! $admin instanceof AdminUser) { return ApiResponse::error( trans('admin.unauthenticated', [], $request->lotteryLocale()), ErrorCode::AdminUnauthenticated->value, null, 401, ); } try { $row = $this->adjustments->apply( $pool, $admin, (int) $request->validated('amount_delta'), (string) $request->validated('reason'), $request, ); } catch (\RuntimeException $e) { $msg = match ($e->getMessage()) { 'adjustment_delta_zero' => trans('jackpot.adjustment_delta_zero', [], $request->lotteryLocale()), 'adjustment_reason_required' => trans('jackpot.adjustment_reason_required', [], $request->lotteryLocale()), 'adjustment_would_make_balance_negative' => trans('jackpot.adjustment_negative_balance', [], $request->lotteryLocale()), default => trans('api.client_error', [], $request->lotteryLocale()), }; return ApiResponse::error($msg, ErrorCode::ClientHttpError->value, ['reason' => $e->getMessage()], 422); } $pool->refresh(); return ApiResponse::success([ 'adjustment' => $this->adjustmentRow($row), 'pool' => [ 'id' => (int) $pool->id, 'currency_code' => $pool->currency_code, 'current_amount' => (int) $pool->current_amount, 'updated_at' => $pool->updated_at?->toIso8601String(), ], ]); } }