-- Kriter Geçmiş/Tarihçe Tablosu
-- Her kriterin farklı zaman aralıklarında farklı değerleri olabilir

CREATE TABLE IF NOT EXISTS criteria_history (
    id INT AUTO_INCREMENT PRIMARY KEY,
    criteria_code VARCHAR(50) NOT NULL,
    point_value DECIMAL(10, 2) NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE NULL DEFAULT NULL,
    notes TEXT,
    created_by INT DEFAULT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    FOREIGN KEY (criteria_code) REFERENCES criteria(code) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL,

    INDEX idx_criteria_code (criteria_code),
    INDEX idx_date_range (start_date, end_date),
    INDEX idx_created_by (created_by),

    -- Aynı kriter için tarih aralıkları çakışmamalı
    CONSTRAINT chk_date_order CHECK (end_date IS NULL OR end_date >= start_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_turkish_ci;

-- Mevcut geçmiş verileri için örnek kayıtlar (Ocak-Şubat 2025 için %35 oranı)
INSERT INTO criteria_history (criteria_code, point_value, start_date, end_date, notes) VALUES
('egitim_orani', 0.35, '2025-01-01', '2025-02-29', 'Ocak-Şubat 2025 dönemi için düşürülmüş oran'),
('egitim_orani', 0.40, '2025-03-01', NULL, 'Mart 2025 ve sonrası için normal oran');

-- Not:
-- - end_date NULL ise, o kayıt hala aktiftir
-- - Bir tarih aralığını sorgulamak için:
--   WHERE start_date <= '2025-02-15' AND (end_date IS NULL OR end_date >= '2025-02-15')
