SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

-- --------------------------------------------------------

CREATE TABLE User (
    userid INT AUTO_INCREMENT PRIMARY KEY,
    vorname VARCHAR(50),
    nachname VARCHAR(50),
    strasse VARCHAR(100),
    hausnr VARCHAR(10),
    plz VARCHAR(10),
    ort VARCHAR(50),
    land VARCHAR(50),
    tel VARCHAR(20),
    email VARCHAR(100) UNIQUE,
    isAdmin BOOLEAN DEFAULT FALSE,
    validUntil DATETIME NOT NULL DEFAULT '3025-01-01 00:00:00',
    password VARCHAR(255)
);


CREATE TABLE Standort (
    standortid INT AUTO_INCREMENT PRIMARY KEY,
    strasse VARCHAR(100),
    hausnr VARCHAR(10),
    plz VARCHAR(10),
    ort VARCHAR(50),
    land VARCHAR(50),
    tel VARCHAR(20),
    email VARCHAR(100)
);


CREATE TABLE Ausstellung (
    austellungid INT AUTO_INCREMENT PRIMARY KEY,
    standortid INT,
    datum_von DATE,
    datum_bis DATE,
    name VARCHAR(100),
    beschreibung TEXT,
    max_tickets INT,
    eintrittspreis DECIMAL(5,2),
    FOREIGN KEY (standortid) REFERENCES Standort(standortid)
);


CREATE TABLE Ticket (
    ticketid INT AUTO_INCREMENT PRIMARY KEY,
    userid INT,
    ausstellungid INT,
    kaufdatum DATE,
    gueltigkeit DATE,
    FOREIGN KEY (userid) REFERENCES User(userid),
    FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
);


CREATE TABLE Gutschein (
    gutscheinid INT AUTO_INCREMENT PRIMARY KEY,
    code VARCHAR(50) UNIQUE,
    rabatt INT CHECK (rabatt BETWEEN 0 AND 100),
    ausstellungid INT,
    gueltigkeit DATE,
    FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
);


CREATE TABLE News (
    newsid INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    beschreibung TEXT,
    datum DATE
);



-- User-Daten (Passwort: passwort123)
INSERT INTO User (vorname, nachname, strasse, hausnr, plz, ort, land, tel, email, isAdmin, password)
VALUES

    ('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, '$2y$10$VAj.C0XHPUxV4oXS6b79aumlg5fBMPPx5FPqgkQSIQeBLh0WtYmKy'),
    ('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, '$2y$10$cnPBpkvLbdpDxzYvxlQg9uVp5y8ggr2SWL8NAMg9zk.3QnnEl.MGq');

-- Standort-Daten
INSERT INTO Standort (strasse, hausnr, plz, ort, land, tel, email)
VALUES
    ('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'),
    ('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de');

-- Ausstellung-Daten
INSERT INTO Ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets, eintrittspreis)
VALUES
    (1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200, 19.99),
    (2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150, 39.99);

-- Gutschein-Daten (Spaltennamen korrigiert)
INSERT INTO Gutschein (code, rabatt, ausstellungid, gueltigkeit)
VALUES
    ('SOMMER2025', 15, 1, '2025-08-31'),
    ('HERBST25', 25, 2, '2025-10-15');

-- Ticket-Daten (Spaltennamen korrigiert)
INSERT INTO Ticket (userid, ausstellungid, kaufdatum, gueltigkeit)
VALUES
    (1, 1, '2025-06-01', '2025-07-15'),
    (2, 2, '2025-06-05', '2025-09-15');

-- News-Daten
INSERT INTO News (name, beschreibung, datum)
VALUES
    ('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'),
    ('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20');
