-- Odak Oto Ekspertiz - Veritabanı Şeması
-- MySQL 5.7+ / MariaDB 10.2+

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- --------------------------------------------------------
-- Bayiler (Franchise / Şubeler)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `bayiler` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `adi` varchar(100) NOT NULL,
  `kod` varchar(20) NOT NULL UNIQUE,
  `adres` text,
  `telefon` varchar(20),
  `email` varchar(100),
  `aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_bayiler_aktif` (`aktif`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Kullanıcılar (Admin, Bayi, Usta)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `bayi_id` int(11) unsigned NULL COMMENT 'Admin için NULL, Bayi/Usta için bayi id',
  `ad_soyad` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `telefon` varchar(20) NULL COMMENT 'Cep telefonu; şifre sıfırlama WhatsApp',
  `username` varchar(50) NOT NULL COMMENT 'Giriş için; e-posta veya kullanıcı adı ile giriş yapılır',
  `password` varchar(255) NOT NULL,
  `rol` enum('admin','bayi','usta') NOT NULL,
  `aktif` tinyint(1) NOT NULL DEFAULT 1,
  `son_giris` datetime NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `idx_users_username` (`username`),
  KEY `idx_users_bayi` (`bayi_id`),
  KEY `idx_users_rol` (`rol`),
  CONSTRAINT `fk_users_bayi` FOREIGN KEY (`bayi_id`) REFERENCES `bayiler` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Paketler (Admin tanımlar, tüm bayiler için geçerli)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `paketler` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `adi` varchar(100) NOT NULL,
  `kod` varchar(50) NOT NULL,
  `aciklama` text,
  `fiyat` decimal(12,2) NOT NULL DEFAULT 0.00,
  `sira` int(11) NOT NULL DEFAULT 0,
  `aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_paketler_aktif` (`aktif`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Müşteriler (Artık bayi_id yok, hangi bayilerde işlem yaptığı ekspertizlerden çekilir)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `musteriler` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ad_soyad` varchar(100) NOT NULL,
  `eski_ad_soyad` varchar(100) NULL,
  `telefon` varchar(20),
  `eski_telefon` varchar(20) NULL,
  `email` varchar(100),
  `eski_email` varchar(100) NULL,
  `tc_kimlik` varchar(11),
  `adres` text,
  `eski_adres` text NULL,
  `notlar` text,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_musteriler_tc` (`tc_kimlik`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Ekspertizler
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `ekspertizler` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `bayi_id` int(11) unsigned NOT NULL,
  `musteri_id` int(11) unsigned NULL,
  `usta_id` int(11) unsigned NULL COMMENT 'İşlemi yapan usta',
  `paket_id` int(11) unsigned NULL,
  `rapor_no` varchar(50) NOT NULL,
  `plaka` varchar(20),
  `arac_marka` varchar(50),
  `arac_model` varchar(50),
  `arac_yil` smallint(4),
  `durum` enum('beklemede','devam_ediyor','tamamlandi','iptal') NOT NULL DEFAULT 'beklemede',
  `tutar` decimal(12,2) NOT NULL DEFAULT 0.00,
  `tarih` date NOT NULL,
  `aciklama` text,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `rapor_no` (`rapor_no`),
  KEY `idx_ekspertizler_bayi` (`bayi_id`),
  KEY `idx_ekspertizler_tarih` (`tarih`),
  KEY `idx_ekspertizler_durum` (`durum`),
  CONSTRAINT `fk_ekspertizler_bayi` FOREIGN KEY (`bayi_id`) REFERENCES `bayiler` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_ekspertizler_musteri` FOREIGN KEY (`musteri_id`) REFERENCES `musteriler` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `fk_ekspertizler_usta` FOREIGN KEY (`usta_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `fk_ekspertizler_paket` FOREIGN KEY (`paket_id`) REFERENCES `paketler` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Ekstra işlemler (opsiyonel)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `ekstra_islemler` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `bayi_id` int(11) unsigned NOT NULL,
  `ekspertiz_id` int(11) unsigned NULL,
  `tanim` varchar(100) NOT NULL,
  `tutar` decimal(12,2) NOT NULL DEFAULT 0.00,
  `tarih` date NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_ekstra_bayi` (`bayi_id`),
  CONSTRAINT `fk_ekstra_bayi` FOREIGN KEY (`bayi_id`) REFERENCES `bayiler` (`id`) ON DELETE CASCADE,
  CONSTRAINT `fk_ekstra_ekspertiz` FOREIGN KEY (`ekspertiz_id`) REFERENCES `ekspertizler` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Araç Marka / Model (Tanımlar - Admin)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `arac_markalari` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `marka` varchar(100) NOT NULL,
  `model` varchar(100) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_arac_markalari_marka` (`marka`),
  KEY `idx_arac_markalari_model` (`model`),
  UNIQUE KEY `uq_marka_model` (`marka`,`model`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Ekstra İşlem Türleri (Tanımlar - Admin, tek alan)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `ekstra_islem_turleri` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `adi` varchar(100) NOT NULL,
  `fiyat` decimal(12,2) NULL DEFAULT 0.00,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_ekstra_islem_turleri_adi` (`adi`),
  UNIQUE KEY `uq_ekstra_islem_turleri_adi` (`adi`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Gider Türleri (Tanımlar - Admin, tek alan)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `gider_turleri` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `adi` varchar(100) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_gider_turleri_adi` (`adi`),
  UNIQUE KEY `uq_gider_turleri_adi` (`adi`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Giriş kayıtları (başarılı / hatalı - sadece Admin görüntüler)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `giris_kayitlari` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(100) NOT NULL COMMENT 'Denenen e-posta',
  `basarili` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1=başarılı, 0=hatalı',
  `mesaj` varchar(255) NOT NULL DEFAULT '',
  `ip_address` varchar(45) NOT NULL DEFAULT '',
  `user_agent` text,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_giris_basarili` (`basarili`),
  KEY `idx_giris_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- Lisans / kullanım (opsiyonel - panelde gösterim için)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `lisans` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `bayi_id` int(11) unsigned NULL COMMENT 'NULL = genel lisans',
  `baslangic` date NOT NULL,
  `bitis` date NOT NULL,
  `aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_lisans_bayi` (`bayi_id`),
  CONSTRAINT `fk_lisans_bayi` FOREIGN KEY (`bayi_id`) REFERENCES `bayiler` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------
-- İletişim rolleri (Bayi Yöneticisi, Reklam Ajansı, Yazılım Sorumlusu - admin düzenler)
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `iletisim_rolleri` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `rol_kodu` varchar(50) NOT NULL,
  `baslik` varchar(100) NOT NULL,
  `ad_soyad` varchar(100) DEFAULT NULL,
  `telefon` varchar(30) DEFAULT NULL,
  `whatsapp` varchar(30) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `adres` text,
  `harita_url` varchar(500) DEFAULT NULL,
  `aciklama` text,
  `sira` smallint(6) NOT NULL DEFAULT 0,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_iletisim_rol_kodu` (`rol_kodu`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

SET FOREIGN_KEY_CHECKS = 1;

-- Örnek veriler (geliştirme için)
INSERT INTO `bayiler` (`adi`, `kod`, `adres`, `telefon`, `email`) VALUES
('Nilüfer', 'NILUFER', 'Nilüfer Adres', '0212 xxx xx xx', 'nilufer@odak.com'),
('Demo Bayi', 'DEMO', 'Demo Adres', '', 'demo@odak.com');

-- Varsayılan admin: admin@odak.com / Admin123!
INSERT INTO `users` (`bayi_id`, `ad_soyad`, `email`, `username`, `password`, `rol`) VALUES
(NULL, 'Sistem Yöneticisi', 'admin@odak.com', 'admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');

-- Örnek paketler
INSERT INTO `paketler` (`adi`, `kod`, `fiyat`, `sira`) VALUES
('Standart Paket', 'STANDART', 500.00, 1),
('Premium Paket', 'PREMIUM', 750.00, 2),
('Avantaj Plus Paket', 'AVANTAJ_PLUS', 1000.00, 3);

-- İletişim rolleri (İletişim sayfası - admin panelden düzenlenir)
INSERT INTO `iletisim_rolleri` (`rol_kodu`, `baslik`, `sira`) VALUES
('bayi_yoneticisi', 'Bayi Yöneticisi', 1),
('reklam_ajansi', 'Reklam Ajansı', 2),
('yazilim_sorumlusu', 'Yazılım Sorumlusu', 3);
