155 lines
6.7 KiB
PHP
155 lines
6.7 KiB
PHP
<?php
|
|
$tenantRole = (string) ($authState['tenant_role'] ?? 'member');
|
|
$isSelfService = $tenantRole === 'member';
|
|
$sourceLabels = [
|
|
'digital_self' => 'Selbst gebucht',
|
|
'paper_sheet' => 'Papierliste',
|
|
'admin_backoffice' => 'Nachgetragen durch Verwaltung',
|
|
'rfid_reader' => 'Kartenleser',
|
|
];
|
|
require __DIR__ . '/../partials/layout-top.php';
|
|
?>
|
|
|
|
<section class="page-head inline-head">
|
|
<div>
|
|
<span class="eyebrow"><?= e($isSelfService ? 'Mein Kaffeekonto' : 'Kaffeekasse') ?></span>
|
|
<h1><?= e($tenant['name']) ?></h1>
|
|
<?php if ($isSelfService): ?>
|
|
<p>Buchen Sie hier Ihren Kaffee oder andere Produkte und sehen Sie Ihren aktuellen offenen Betrag. Korrekturen übernimmt die verantwortliche Person.</p>
|
|
<?php else: ?>
|
|
<p>Hier sehen Sie, wer Kaffee gebucht hat, welche Beträge offen sind und was als Nächstes in der Kaffeekasse gepflegt werden muss.</p>
|
|
<?php endif; ?>
|
|
</div>
|
|
<form method="post" action="<?= e(tenant_url($tenant['slug'], 'logout')) ?>">
|
|
<?= csrf_field($csrf) ?>
|
|
<button class="button button-secondary" type="submit">Abmelden</button>
|
|
</form>
|
|
</section>
|
|
|
|
<section class="action-strip">
|
|
<a class="quick-action primary" href="<?= e(tenant_url($tenant['slug'], 'bookings')) ?>">
|
|
<strong><?= e($isSelfService ? 'Kaffee buchen' : 'Kaffee oder Produkt buchen') ?></strong>
|
|
<span><?= e($isSelfService ? 'Kaffee, Getränke oder Snacks auf Ihren Namen buchen' : 'Verbrauch direkt einem Mitglied zuordnen') ?></span>
|
|
</a>
|
|
<?php if ($isSelfService): ?>
|
|
<a class="quick-action" href="<?= e(tenant_url($tenant['slug'], 'bookings/export')) ?>">
|
|
<strong>Verlauf exportieren</strong>
|
|
<span>Eigene Buchungen als Tabelle herunterladen</span>
|
|
</a>
|
|
<?php else: ?>
|
|
<a class="quick-action" href="<?= e(tenant_url($tenant['slug'], 'members')) ?>">
|
|
<strong>Mitglied anlegen</strong>
|
|
<span>Person für Buchung, Papierliste oder Login hinzufügen</span>
|
|
</a>
|
|
<a class="quick-action" href="<?= e(tenant_url($tenant['slug'], 'payments')) ?>">
|
|
<strong>Geld einzahlen</strong>
|
|
<span>Barzahlung, Überweisung oder Sammelkasse zuordnen</span>
|
|
</a>
|
|
<a class="quick-action" href="<?= e(tenant_url($tenant['slug'], 'products')) ?>">
|
|
<strong>Produkte verwalten</strong>
|
|
<span>Kaffee, Getränke und Preise pflegen</span>
|
|
</a>
|
|
<?php endif; ?>
|
|
</section>
|
|
|
|
<?php if ($isSelfService): ?>
|
|
<section class="metric-cards">
|
|
<article class="metric-card">
|
|
<span>Produkte</span>
|
|
<strong><?= e((string) $summary['product_count']) ?></strong>
|
|
</article>
|
|
<article class="metric-card">
|
|
<span>Offener Betrag</span>
|
|
<strong><?= e(money_from_cents((int) $summary['open_balance_cents'])) ?></strong>
|
|
</article>
|
|
</section>
|
|
|
|
<div class="two-column">
|
|
<section class="card">
|
|
<span class="eyebrow">Ihr Kaffeekonto</span>
|
|
<ul class="feature-list">
|
|
<li>Kaffee, Getränke oder Snacks auf Ihren Namen buchen</li>
|
|
<li>Preise vor dem Buchen einsehen</li>
|
|
<li>Bei Fragen die verantwortliche Person informieren</li>
|
|
</ul>
|
|
</section>
|
|
<section class="card">
|
|
<span class="eyebrow">Kaffeekasse</span>
|
|
<ul class="stack-list">
|
|
<li>
|
|
<strong>Stammdaten und Mitglieder</strong>
|
|
<small>Pflegen die verantwortlichen Personen der Kaffeeliste.</small>
|
|
</li>
|
|
<li>
|
|
<strong>Einzahlungen und Papierlisten</strong>
|
|
<small>Werden von den verantwortlichen Personen verbucht und bei Bedarf korrigiert.</small>
|
|
</li>
|
|
<li>
|
|
<strong>Eigener Verlauf</strong>
|
|
<small>Kann über den Export heruntergeladen werden.</small>
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
</div>
|
|
<?php else: ?>
|
|
<section class="metric-cards">
|
|
<article class="metric-card">
|
|
<span>Mitglieder</span>
|
|
<strong><?= e((string) $summary['member_count']) ?></strong>
|
|
</article>
|
|
<article class="metric-card">
|
|
<span>Produkte</span>
|
|
<strong><?= e((string) $summary['product_count']) ?></strong>
|
|
</article>
|
|
<article class="metric-card">
|
|
<span>Papierlisten</span>
|
|
<strong><?= e((string) $summary['paper_sheet_count']) ?></strong>
|
|
</article>
|
|
<article class="metric-card">
|
|
<span>Offene Beträge</span>
|
|
<strong><?= e(money_from_cents((int) $summary['open_balance_cents'])) ?></strong>
|
|
</article>
|
|
</section>
|
|
|
|
<div class="two-column">
|
|
<section class="card">
|
|
<span class="eyebrow">Letzte Buchungen</span>
|
|
<ul class="stack-list">
|
|
<?php if ($latestEvents === []): ?>
|
|
<li>
|
|
<strong>Noch keine Buchungen</strong>
|
|
<small>Die letzten Buchungen erscheinen hier, sobald die erste Kaffeebuchung erfasst wurde.</small>
|
|
</li>
|
|
<?php endif; ?>
|
|
<?php foreach ($latestEvents as $event): ?>
|
|
<?php $sourceLabel = $sourceLabels[(string) ($event['source_code'] ?? '')] ?? (string) $event['source_name']; ?>
|
|
<li>
|
|
<strong><?= e($event['member_name']) ?></strong>
|
|
<span><?= e($event['product_name']) ?>, gebucht über <?= e($sourceLabel) ?></span>
|
|
<small><?= e(money_from_cents((int) $event['total_cents'])) ?> am <?= e($event['recorded_at']) ?></small>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</section>
|
|
<section class="card">
|
|
<span class="eyebrow">Offene Beträge</span>
|
|
<ul class="stack-list">
|
|
<?php if ($memberBalances === []): ?>
|
|
<li>
|
|
<strong>Noch keine offenen Beträge</strong>
|
|
<small>Sobald Buchungen oder Einzahlungen vorliegen, erscheint hier die Übersicht.</small>
|
|
</li>
|
|
<?php endif; ?>
|
|
<?php foreach ($memberBalances as $balance): ?>
|
|
<li>
|
|
<strong><?= e($balance['display_name']) ?></strong>
|
|
<small><?= e(money_from_cents((int) $balance['balance_cents'])) ?></small>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</section>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php require __DIR__ . '/../partials/layout-bottom.php'; ?>
|