Add team, developers, PDF type, and QR rendering dependency.
Deploy Ladill QR Plus / deploy (push) Successful in 42s

Enables account collaboration, API tokens, hosted PDF codes, and fixes QR detail 500s by declaring chillerlan/php-qrcode.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-07 06:16:13 +00:00
co-authored by Cursor
parent bcd1cf5d28
commit 8c3e9d3c26
23 changed files with 892 additions and 28 deletions
+23 -11
View File
@@ -40,19 +40,19 @@ class QrCodeController extends Controller
public function index(Request $request): View
{
$user = $request->user();
$wallet = $this->manager->walletFor($user);
$qrCodes = $user->qrCodes()
$account = ladill_account();
$wallet = $this->manager->walletFor($account);
$qrCodes = $account->qrCodes()
->whereIn('type', QrTypeCatalog::plusTypes())
->latest()
->get();
$ladillWalletBalance = 0.0;
try {
$ladillWalletBalance = $this->platformBilling->balanceMinor($user->public_id) / 100;
$ladillWalletBalance = $this->platformBilling->balanceMinor($account->public_id) / 100;
} catch (Throwable $e) {
Log::warning('QR Plus index could not load Ladill wallet balance', [
'user' => $user->public_id,
'user' => $account->public_id,
'error' => $e->getMessage(),
]);
}
@@ -69,7 +69,8 @@ class QrCodeController extends Controller
public function create(Request $request): View
{
$wallet = $this->manager->walletFor($request->user());
$account = ladill_account();
$wallet = $this->manager->walletFor($account);
return view('qr-codes.create', [
'wallet' => $wallet,
@@ -80,7 +81,7 @@ class QrCodeController extends Controller
'frameStyles' => QrFrameStyleCatalog::visible(),
'pricePerQr' => QrWallet::pricePerQr(),
'minTopup' => QrWallet::minTopupGhs(),
'ladillWalletBalance' => $this->platformBilling->balanceMinor($request->user()->public_id) / 100,
'ladillWalletBalance' => $this->platformBilling->balanceMinor($account->public_id) / 100,
'topupUrl' => 'https://'.config('app.account_domain').'/wallet',
]);
}
@@ -134,7 +135,7 @@ class QrCodeController extends Controller
}
try {
$qrCode = $this->manager->create($request->user(), array_merge(
$qrCode = $this->manager->create(ladill_account(), array_merge(
$request->all(),
[
'style' => $validated['style'] ?? [],
@@ -175,13 +176,24 @@ class QrCodeController extends Controller
$logoDataUri = ! empty($qrStyle['logo_path'])
? $this->imageGenerator->logoDataUri($qrStyle['logo_path'])
: null;
$wallet = $this->manager->walletFor($request->user());
$account = ladill_account();
$wallet = $this->manager->walletFor($account);
$summary = $this->analytics->summaryFor($qrCode);
$dailyScans = $this->analytics->dailyScans($qrCode, 30);
$devices = $this->analytics->breakdown($qrCode, 'device_type');
$browsers = $this->analytics->breakdown($qrCode, 'browser');
$recentScans = $this->analytics->recentScans($qrCode);
$ladillWalletBalance = 0.0;
try {
$ladillWalletBalance = $this->platformBilling->balanceMinor($account->public_id) / 100;
} catch (Throwable $e) {
Log::warning('QR Plus show could not load Ladill wallet balance', [
'user' => $account->public_id,
'error' => $e->getMessage(),
]);
}
return view('qr-codes.show', [
'qrCode' => $qrCode,
'previewDataUri' => $previewDataUri,
@@ -199,7 +211,7 @@ class QrCodeController extends Controller
'recentScans' => $recentScans,
'pricePerQr' => QrWallet::pricePerQr(),
'minTopup' => QrWallet::minTopupGhs(),
'ladillWalletBalance' => $this->platformBilling->balanceMinor($request->user()->public_id) / 100,
'ladillWalletBalance' => $ladillWalletBalance,
'topupUrl' => 'https://'.config('app.account_domain').'/wallet',
]);
}
@@ -281,7 +293,7 @@ class QrCodeController extends Controller
$style['logo_path'] = $tempLogoPath;
} elseif ($request->boolean('use_existing_logo') && ! empty($validated['existing_logo_path'])) {
$existingPath = $validated['existing_logo_path'];
$userPrefix = $request->user()->id . '/';
$userPrefix = ladill_account()->id . '/';
if (str_starts_with($existingPath, $userPrefix) && Storage::disk('qr')->exists($existingPath)) {
$style['logo_path'] = $existingPath;
}