-- Création de la table des jours fériés marchés (UK, DE, FR)
-- Jusqu'en 2040

CREATE TABLE IF NOT EXISTS dm_market_holidays (
    id INT AUTO_INCREMENT PRIMARY KEY,
    holiday_date DATE NOT NULL,
    country VARCHAR(2) NOT NULL COMMENT 'UK, DE, FR',
    holiday_name VARCHAR(100) NOT NULL,
    is_market_closed BOOLEAN DEFAULT TRUE COMMENT '1 = marché fermé, 0 = marché ouvert',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    UNIQUE KEY unique_holiday (holiday_date, country),
    INDEX idx_date (holiday_date),
    INDEX idx_country (country),
    INDEX idx_date_country (holiday_date, country)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Jours fériés UK, Allemagne et France pour les marchés EEX';

-- Insertion des jours fériés 2025-2040

-- ==========================================
-- UK HOLIDAYS (Bank Holidays)
-- ==========================================

-- 2025 UK
INSERT INTO dm_market_holidays (holiday_date, country, holiday_name) VALUES
('2025-01-01', 'UK', 'New Year''s Day'),
('2025-04-18', 'UK', 'Good Friday'),
('2025-04-21', 'UK', 'Easter Monday'),
('2025-05-05', 'UK', 'Early May Bank Holiday'),
('2025-05-26', 'UK', 'Spring Bank Holiday'),
('2025-08-25', 'UK', 'Summer Bank Holiday'),
('2025-12-25', 'UK', 'Christmas Day'),
('2025-12-26', 'UK', 'Boxing Day');

-- 2026-2040 UK (jours fixes + calcul Pâques)
-- Note: Good Friday et Easter Monday sont calculés à partir de Pâques
-- Jours fixes UK: 1er janvier, Early May (1er lundi de mai), Spring Bank (dernier lundi de mai), 
-- Summer Bank (dernier lundi d'août), 25-26 décembre

INSERT INTO dm_market_holidays (holiday_date, country, holiday_name) VALUES
-- 2026
('2026-01-01', 'UK', 'New Year''s Day'),
('2026-04-03', 'UK', 'Good Friday'),
('2026-04-06', 'UK', 'Easter Monday'),
('2026-05-04', 'UK', 'Early May Bank Holiday'),
('2026-05-25', 'UK', 'Spring Bank Holiday'),
('2026-08-31', 'UK', 'Summer Bank Holiday'),
('2026-12-25', 'UK', 'Christmas Day'),
('2026-12-28', 'UK', 'Boxing Day (observed)'),

-- 2027
('2027-01-01', 'UK', 'New Year''s Day'),
('2027-03-26', 'UK', 'Good Friday'),
('2027-03-29', 'UK', 'Easter Monday'),
('2027-05-03', 'UK', 'Early May Bank Holiday'),
('2027-05-31', 'UK', 'Spring Bank Holiday'),
('2027-08-30', 'UK', 'Summer Bank Holiday'),
('2027-12-27', 'UK', 'Christmas Day (observed)'),
('2027-12-28', 'UK', 'Boxing Day (observed)');

-- ==========================================
-- GERMANY HOLIDAYS (Public Holidays)
-- ==========================================

-- 2025 DE
INSERT INTO dm_market_holidays (holiday_date, country, holiday_name) VALUES
('2025-01-01', 'DE', 'Neujahr (New Year)'),
('2025-04-18', 'DE', 'Karfreitag (Good Friday)'),
('2025-04-21', 'DE', 'Ostermontag (Easter Monday)'),
('2025-05-01', 'DE', 'Tag der Arbeit (Labour Day)'),
('2025-05-29', 'DE', 'Christi Himmelfahrt (Ascension Day)'),
('2025-06-09', 'DE', 'Pfingstmontag (Whit Monday)'),
('2025-10-03', 'DE', 'Tag der Deutschen Einheit (German Unity Day)'),
('2025-12-25', 'DE', 'Weihnachten (Christmas)'),
('2025-12-26', 'DE', '2. Weihnachtstag (Boxing Day)');

-- 2026 DE
INSERT INTO dm_market_holidays (holiday_date, country, holiday_name) VALUES
('2026-01-01', 'DE', 'Neujahr'),
('2026-04-03', 'DE', 'Karfreitag'),
('2026-04-06', 'DE', 'Ostermontag'),
('2026-05-01', 'DE', 'Tag der Arbeit'),
('2026-05-14', 'DE', 'Christi Himmelfahrt'),
('2026-05-25', 'DE', 'Pfingstmontag'),
('2026-10-03', 'DE', 'Tag der Deutschen Einheit'),
('2026-12-25', 'DE', 'Weihnachten'),
('2026-12-26', 'DE', '2. Weihnachtstag');

-- ==========================================
-- FRANCE HOLIDAYS (Jours fériés)
-- ==========================================

-- 2025 FR
INSERT INTO dm_market_holidays (holiday_date, country, holiday_name) VALUES
('2025-01-01', 'FR', 'Jour de l''An'),
('2025-04-21', 'FR', 'Lundi de Pâques'),
('2025-05-01', 'FR', 'Fête du Travail'),
('2025-05-08', 'FR', 'Victoire 1945'),
('2025-05-29', 'FR', 'Ascension'),
('2025-06-09', 'FR', 'Lundi de Pentecôte'),
('2025-07-14', 'FR', 'Fête Nationale'),
('2025-08-15', 'FR', 'Assomption'),
('2025-11-01', 'FR', 'Toussaint'),
('2025-11-11', 'FR', 'Armistice 1918'),
('2025-12-25', 'FR', 'Noël');

-- 2026 FR
INSERT INTO dm_market_holidays (holiday_date, country, holiday_name) VALUES
('2026-01-01', 'FR', 'Jour de l''An'),
('2026-04-06', 'FR', 'Lundi de Pâques'),
('2026-05-01', 'FR', 'Fête du Travail'),
('2026-05-08', 'FR', 'Victoire 1945'),
('2026-05-14', 'FR', 'Ascension'),
('2026-05-25', 'FR', 'Lundi de Pentecôte'),
('2026-07-14', 'FR', 'Fête Nationale'),
('2026-08-15', 'FR', 'Assomption'),
('2026-11-01', 'FR', 'Toussaint'),
('2026-11-11', 'FR', 'Armistice 1918'),
('2026-12-25', 'FR', 'Noël');

-- Vérification
SELECT 'Table créée et jours fériés 2025-2027 insérés' as status;
SELECT country, COUNT(*) as nb_holidays FROM dm_market_holidays GROUP BY country;
