-- Dinamik Vardiya Yönetim Sistemi - Veritabanı Şeması
-- Veritabanı oluştur
CREATE DATABASE IF NOT EXISTS ugurompa_nobet CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci;
USE ugurompa_nobet;

-- Personel tablosu
CREATE TABLE IF NOT EXISTS personel (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ad_soyad VARCHAR(100) NOT NULL,
    grup_kodu ENUM('A', 'B', 'C', 'D') NOT NULL,
    telefon VARCHAR(20),
    email VARCHAR(100),
    aktif TINYINT(1) DEFAULT 1,
    olusturma_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    guncelleme_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_turkish_ci;

-- Vardiya kayıtları tablosu
CREATE TABLE IF NOT EXISTS vardiya_kayitlari (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tarih DATE NOT NULL,
    personel_id INT NOT NULL,
    vardiya_tipi ENUM('8saat', '12saat', 'izin', 'rapor', 'yillik_izin', 'dinlenme') NOT NULL,
    baslangic_saati TIME,
    bitis_saati TIME,
    notlar TEXT,
    olusturma_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    guncelleme_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (personel_id) REFERENCES personel(id) ON DELETE CASCADE,
    UNIQUE KEY unique_personel_tarih (personel_id, tarih)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_turkish_ci;

-- Ayarlar tablosu
CREATE TABLE IF NOT EXISTS ayarlar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    anahtar VARCHAR(50) NOT NULL UNIQUE,
    deger TEXT NOT NULL,
    aciklama VARCHAR(255),
    olusturma_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    guncelleme_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_turkish_ci;

-- Varsayılan ayarları ekle
INSERT INTO ayarlar (anahtar, deger, aciklama) VALUES
('dongu_baslangic_tarihi', '2026-01-01', 'Ana döngü başlangıç tarihi'),
('baslangic_grubu', 'A', 'Döngü başlangıç grubu'),
('vardiya_8_sabah_baslangic', '08:00', '8 saatlik sabah vardiyası başlangıç'),
('vardiya_8_sabah_bitis', '16:00', '8 saatlik sabah vardiyası bitiş'),
('vardiya_8_aksam_baslangic', '16:00', '8 saatlik akşam vardiyası başlangıç'),
('vardiya_8_aksam_bitis', '00:00', '8 saatlik akşam vardiyası bitiş'),
('vardiya_8_gece_baslangic', '00:00', '8 saatlik gece vardiyası başlangıç'),
('vardiya_8_gece_bitis', '08:00', '8 saatlik gece vardiyası bitiş'),
('vardiya_12_gunduz_baslangic', '08:00', '12 saatlik gündüz vardiyası başlangıç'),
('vardiya_12_gunduz_bitis', '20:00', '12 saatlik gündüz vardiyası bitiş'),
('vardiya_12_gece_baslangic', '20:00', '12 saatlik gece vardiyası başlangıç'),
('vardiya_12_gece_bitis', '08:00', '12 saatlik gece vardiyası bitiş');

-- Personel verileri (Ocak 2026 1. gün sırasına göre: Sabah-Akşam-Gece-İzin)
INSERT INTO personel (ad_soyad, grup_kodu, telefon, email) VALUES
('ŞENOL', 'A', '', ''),
('MUSTAFA', 'B', '', ''),
('İBRAHİM', 'C', '', ''),
('ÖZGÜR', 'D', '', '');

-- İndeksler
CREATE INDEX idx_vardiya_tarih ON vardiya_kayitlari(tarih);
CREATE INDEX idx_vardiya_personel ON vardiya_kayitlari(personel_id);
CREATE INDEX idx_vardiya_tipi ON vardiya_kayitlari(vardiya_tipi);
CREATE INDEX idx_personel_grup ON personel(grup_kodu);
