diff --git a/app/Http/Controllers/Transfer/FilesController.php b/app/Http/Controllers/Transfer/FilesController.php index 2aef591..526f72b 100644 --- a/app/Http/Controllers/Transfer/FilesController.php +++ b/app/Http/Controllers/Transfer/FilesController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Models\Transfer; use App\Models\TransferFile; use App\Models\User; +use App\Services\Billing\BillingClient; use App\Services\Transfer\FileStorageService; use App\Services\Transfer\TransferRecipientMailService; use App\Services\Transfer\TransferService; @@ -24,6 +25,7 @@ class FilesController extends Controller public function __construct( private TransferService $transfers, private FileStorageService $storage, + private BillingClient $billing, ) {} public function index(Request $request): View @@ -88,6 +90,19 @@ class FilesController extends Controller ->where('status', '!=', Transfer::STATUS_DELETED) ->sum('storage_bytes'); + $fileCount = TransferFile::query() + ->whereHas('transfer', fn ($q) => $q + ->where('user_id', $account->id) + ->where('status', '!=', Transfer::STATUS_DELETED)) + ->count(); + + $balanceMinor = 0; + try { + $balanceMinor = $this->billing->balanceMinor($account->public_id); + } catch (\Throwable) { + // Balance is informational on this page. + } + return view('transfer.files.index', [ 'files' => $files, 'folders' => $folders, @@ -99,6 +114,8 @@ class FilesController extends Controller 'storageBytes' => (int) $storageBytes, 'storageGb' => round($storageBytes / (1024 * 1024 * 1024), 2), 'pricePerGb' => (float) config('transfer.price_per_gb_month', 0.30), + 'fileCount' => $fileCount, + 'balanceMinor' => $balanceMinor, ]); } diff --git a/app/Http/Controllers/Transfer/TransferController.php b/app/Http/Controllers/Transfer/TransferController.php index 2d13a19..886bac9 100644 --- a/app/Http/Controllers/Transfer/TransferController.php +++ b/app/Http/Controllers/Transfer/TransferController.php @@ -25,6 +25,7 @@ class TransferController extends Controller private ChunkedUploadService $chunkedUploads, private QrImageGeneratorService $imageGenerator, private QrPdfExporter $pdfExporter, + private BillingClient $billing, ) {} public function index(Request $request): View @@ -58,7 +59,34 @@ class TransferController extends Controller ->paginate(20) ->withQueryString(); - return view('transfer.transfers.index', compact('transfers', 'search', 'status', 'sort')); + $transferCount = Transfer::query() + ->where('user_id', $account->id) + ->shareTransfers() + ->where('status', '!=', Transfer::STATUS_DELETED) + ->count(); + + $activeCount = Transfer::query() + ->where('user_id', $account->id) + ->shareTransfers() + ->accessible() + ->count(); + + $balanceMinor = 0; + try { + $balanceMinor = $this->billing->balanceMinor($account->public_id); + } catch (\Throwable) { + // Balance is informational on this page. + } + + return view('transfer.transfers.index', compact( + 'transfers', + 'search', + 'status', + 'sort', + 'transferCount', + 'activeCount', + 'balanceMinor', + )); } public function create(BillingClient $billing): View diff --git a/resources/views/transfer/files/index.blade.php b/resources/views/transfer/files/index.blade.php index 42794ae..0ee3c99 100644 --- a/resources/views/transfer/files/index.blade.php +++ b/resources/views/transfer/files/index.blade.php @@ -29,7 +29,7 @@ ])->values(); @endphp -
- {{-- Header --}} -
-
-

Files

-

{{ $fmtBytes($storageBytes) }} stored (~GHS {{ number_format($storageGb * $pricePerGb, 2) }}/month)

-
+
+
+
+
+
+
+ Cloud storage · QR sharing +
+

Your files

+

+ Upload, organise, and share files from your Ladill Transfer storage. Billed at GHS {{ number_format($pricePerGb, 2) }}/GB per month. +

+
+
+ +
+ +
+ + +
+ + +
+
+
- {{-- Create or upload --}} -
- -
- -
- - +
+
+

GHS {{ number_format($balanceMinor / 100, 2) }}

+

Account balance

+
+
+

{{ $fmtBytes($storageBytes) }}

+

Storage used

+
+
+

{{ number_format($fileCount) }}

+

Files

+
+
- -
diff --git a/resources/views/transfer/transfers/index.blade.php b/resources/views/transfer/transfers/index.blade.php index 18b47d8..a90e11a 100644 --- a/resources/views/transfer/transfers/index.blade.php +++ b/resources/views/transfer/transfers/index.blade.php @@ -1,16 +1,45 @@ Transfers -
-
-
-

Transfers

-

All your file shares — active, grace, and expired.

+ +
+
+
+
+
+
+
+ File shares · QR downloads +
+

Your transfers

+

+ All your file shares — active, grace, and expired. Each transfer gets a QR code and download link for recipients. +

+
+ New transfer +
+
+ +
+
+

GHS {{ number_format($balanceMinor / 100, 2) }}

+

Account balance

+
+
+

{{ number_format($transferCount) }}

+

Transfers

+
+
+

{{ number_format($activeCount) }}

+

Active

+
+
+
- New transfer
-
+
+

All transfers

@@ -47,7 +76,7 @@ Create your first transfer
@else -
+
{{ $transfers->total() }} transfer{{ $transfers->total() === 1 ? '' : 's' }} Showing {{ $transfers->firstItem() }}–{{ $transfers->lastItem() }}