-- =====================================================================
-- Napi menü
--
-- Más szerkezet, mint az à la carte étlap: nem kategória → étel, hanem
-- rögzített menüsorok × dátum. A sorok neve (pl. „Hedonista menü")
-- állandó; naponta csak a leves, a főétel és az árak cserélődnek.
--
-- Ettől lesz az előre betáplálás magától értetődő: minden nap egy
-- dátumhoz tartozik, tetszőleges számú felvihető előre, és a TV mindig
-- az aznapit mutatja.
-- =====================================================================

ALTER TABLE menus
  ADD COLUMN kind ENUM('alacarte','daily') NOT NULL DEFAULT 'alacarte' AFTER name,
  ADD COLUMN ticker_text VARCHAR(300) NULL AFTER currency,
  ADD COLUMN ticker_active TINYINT(1) NOT NULL DEFAULT 0 AFTER ticker_text;

-- A hat állandó menüsor. Az árak itt csak alapértelmezések: új nap
-- felvitelekor ezekkel töltjük elő a mezőket, hogy ne kelljen minden
-- reggel ugyanazt a két számot begépelni.
CREATE TABLE IF NOT EXISTS menu_lines (
  id                  CHAR(36)      NOT NULL PRIMARY KEY,
  menu_id             CHAR(36)      NOT NULL,
  name                VARCHAR(120)  NOT NULL,
  sort_order          INT           NOT NULL DEFAULT 0,
  default_price_full  DECIMAL(10,2) NULL,
  default_price_main  DECIMAL(10,2) NULL,
  created_at          DATETIME(3)   NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  updated_at          DATETIME(3)   NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  KEY menu_lines_menu_sort_idx (menu_id, sort_order),
  CONSTRAINT menu_lines_menu_fk FOREIGN KEY (menu_id)
    REFERENCES menus (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Egy nap. A service_date a vendéglátás napja, nem időbélyeg — nincs
-- rajta időzóna, mert a „mai menü" fogalom az étterem naptárához tartozik.
CREATE TABLE IF NOT EXISTS menu_days (
  id           CHAR(36)    NOT NULL PRIMARY KEY,
  menu_id      CHAR(36)    NOT NULL,
  service_date DATE        NOT NULL,
  created_at   DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  updated_at   DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  UNIQUE KEY menu_days_menu_date_uq (menu_id, service_date),
  CONSTRAINT menu_days_menu_fk FOREIGN KEY (menu_id)
    REFERENCES menus (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Egy sor tartalma egy adott napon.
CREATE TABLE IF NOT EXISTS menu_day_entries (
  id          CHAR(36)      NOT NULL PRIMARY KEY,
  day_id      CHAR(36)      NOT NULL,
  line_id     CHAR(36)      NOT NULL,
  soup        VARCHAR(300)  NULL,
  main_course VARCHAR(300)  NULL,
  price_full  DECIMAL(10,2) NULL,
  price_main  DECIMAL(10,2) NULL,
  created_at  DATETIME(3)   NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  updated_at  DATETIME(3)   NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  UNIQUE KEY menu_day_entries_day_line_uq (day_id, line_id),
  CONSTRAINT menu_day_entries_day_fk FOREIGN KEY (day_id)
    REFERENCES menu_days (id) ON DELETE CASCADE,
  CONSTRAINT menu_day_entries_line_fk FOREIGN KEY (line_id)
    REFERENCES menu_lines (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Demó: a jelenleg is üzemelő tábla hat menüsora.
-- Az árak alapértelmezések, felülírhatók.
-- ---------------------------------------------------------------------
INSERT IGNORE INTO menus (id, name, kind, currency, ticker_text, ticker_active) VALUES
  ('66666666-6666-4666-8666-000000000001', 'Napi menü', 'daily', 'HUF', NULL, 0);

INSERT IGNORE INTO menu_lines (id, menu_id, name, sort_order, default_price_full, default_price_main) VALUES
  ('77777777-7777-4777-8777-000000000001', '66666666-6666-4666-8666-000000000001', 'Napi menü ''A''',   0, 2290, 1790),
  ('77777777-7777-4777-8777-000000000002', '66666666-6666-4666-8666-000000000001', 'Napi menü ''B''',   1, 2290, 1790),
  ('77777777-7777-4777-8777-000000000003', '66666666-6666-4666-8666-000000000001', 'Hedonista menü',    2, 2890, 2290),
  ('77777777-7777-4777-8777-000000000004', '66666666-6666-4666-8666-000000000001', 'Fitnesz menü',      3, 2590, 1990),
  ('77777777-7777-4777-8777-000000000005', '66666666-6666-4666-8666-000000000001', 'Nyári menü',        4, 2490, 1890),
  ('77777777-7777-4777-8777-000000000006', '66666666-6666-4666-8666-000000000001', 'Vegetáriánus menü', 5, 2390, 1890);
