-- Renata Carlar - Araç Kiralama Otomasyonu
-- Veritabanı Kurulum Scripti

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- Kullanıcılar
CREATE TABLE IF NOT EXISTS `kullanicilar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kullanici_adi` varchar(50) NOT NULL,
  `sifre` varchar(255) NOT NULL,
  `ad_soyad` varchar(100) DEFAULT NULL,
  `aktif` tinyint(1) DEFAULT 1,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `kullanici_adi` (`kullanici_adi`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Varsayılan admin: admin / admin123
INSERT INTO `kullanicilar` (`kullanici_adi`, `sifre`, `ad_soyad`) VALUES
('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Yönetici');

-- Araçlar
CREATE TABLE IF NOT EXISTS `araclar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `plaka` varchar(20) NOT NULL,
  `marka` varchar(50) DEFAULT NULL,
  `model` varchar(50) DEFAULT NULL,
  `yil` int(4) DEFAULT NULL,
  `renk` varchar(30) DEFAULT NULL,
  `vites_tipi` varchar(20) DEFAULT NULL,
  `yakit_tipi` varchar(20) DEFAULT NULL,
  `kategori` varchar(30) DEFAULT NULL,
  `gunluk_ucret` decimal(10,2) DEFAULT 0,
  `mevcut_km` int(11) DEFAULT 0,
  `durum` enum('musait','kiralandi','bakimda') DEFAULT 'musait',
  `aktif` tinyint(1) DEFAULT 1,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `plaka` (`plaka`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Araç evrakları (sigorta, kasko, muayene)
CREATE TABLE IF NOT EXISTS `arac_evraklari` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `arac_id` int(11) NOT NULL,
  `evrak_tipi` enum('sigorta','kasko','muayene','ruhsat','diger') NOT NULL,
  `baslangic_tarihi` date DEFAULT NULL,
  `bitis_tarihi` date DEFAULT NULL,
  `polis_no` varchar(50) DEFAULT NULL,
  `sirket` varchar(100) DEFAULT NULL,
  `dosya_yolu` varchar(255) DEFAULT NULL,
  `aciklama` text,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `arac_id` (`arac_id`),
  CONSTRAINT `fk_evrak_arac` FOREIGN KEY (`arac_id`) REFERENCES `araclar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Araç bakımları
CREATE TABLE IF NOT EXISTS `arac_bakimlari` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `arac_id` int(11) NOT NULL,
  `tarih` date NOT NULL,
  `tur` enum('periyodik','tamir','parca') DEFAULT 'periyodik',
  `aciklama` text,
  `maliyet` decimal(10,2) DEFAULT 0,
  `servis` varchar(100) DEFAULT NULL,
  `sonraki_bakim` date DEFAULT NULL,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `arac_id` (`arac_id`),
  CONSTRAINT `fk_bakim_arac` FOREIGN KEY (`arac_id`) REFERENCES `araclar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Müşteriler
CREATE TABLE IF NOT EXISTS `musteriler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ad` varchar(50) NOT NULL,
  `soyad` varchar(50) NOT NULL,
  `tc` varchar(11) DEFAULT NULL,
  `telefon` varchar(20) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `adres` text,
  `kara_liste` tinyint(1) DEFAULT 0,
  `notlar` text,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `tc` (`tc`),
  KEY `telefon` (`telefon`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Kiralamalar
CREATE TABLE IF NOT EXISTS `kiralamalar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `arac_id` int(11) NOT NULL,
  `musteri_id` int(11) NOT NULL,
  `baslangic_tarihi` datetime NOT NULL,
  `bitis_tarihi` datetime NOT NULL,
  `cikis_km` int(11) DEFAULT NULL,
  `donus_km` int(11) DEFAULT NULL,
  `gunluk_ucret` decimal(10,2) DEFAULT NULL,
  `toplam_ucret` decimal(10,2) DEFAULT NULL,
  `durum` enum('aktif','tamamlandi','iptal') DEFAULT 'aktif',
  `aciklama` text,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `arac_id` (`arac_id`),
  KEY `musteri_id` (`musteri_id`),
  CONSTRAINT `fk_kiralama_arac` FOREIGN KEY (`arac_id`) REFERENCES `araclar` (`id`),
  CONSTRAINT `fk_kiralama_musteri` FOREIGN KEY (`musteri_id`) REFERENCES `musteriler` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Ödemeler
CREATE TABLE IF NOT EXISTS `odemeler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kiralama_id` int(11) NOT NULL,
  `tutar` decimal(10,2) NOT NULL,
  `odeme_tarihi` date DEFAULT NULL,
  `durum` enum('beklemede','odendi','ksmi') DEFAULT 'beklemede',
  `aciklama` varchar(255) DEFAULT NULL,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `kiralama_id` (`kiralama_id`),
  CONSTRAINT `fk_odeme_kiralama` FOREIGN KEY (`kiralama_id`) REFERENCES `kiralamalar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Ayarlar
CREATE TABLE IF NOT EXISTS `ayarlar` (
  `anahtar` varchar(50) NOT NULL,
  `deger` text,
  PRIMARY KEY (`anahtar`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `ayarlar` (`anahtar`, `deger`) VALUES
('hatirlatma_gun', '15'),
('sirket_adi', 'Renata Carlar'),
('kabis_uye_kodu', ''),
('kabis_sifre', '');

-- Sezon fiyatları
CREATE TABLE IF NOT EXISTS `sezon_fiyatlari` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `arac_id` int(11) DEFAULT NULL,
  `baslangic` date NOT NULL,
  `bitis` date NOT NULL,
  `gunluk_ucret` decimal(10,2) NOT NULL,
  `aciklama` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `arac_id` (`arac_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Şubeler
CREATE TABLE IF NOT EXISTS `subeler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ad` varchar(100) NOT NULL,
  `adres` text,
  `telefon` varchar(20) DEFAULT NULL,
  `aktif` tinyint(1) DEFAULT 1,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Trafik cezaları
CREATE TABLE IF NOT EXISTS `trafik_cezalari` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `arac_id` int(11) NOT NULL,
  `tarih` date NOT NULL,
  `tutar` decimal(10,2) DEFAULT 0,
  `aciklama` text,
  `durum` enum('beklemede','odendi') DEFAULT 'beklemede',
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `arac_id` (`arac_id`),
  CONSTRAINT `fk_ceza_arac` FOREIGN KEY (`arac_id`) REFERENCES `araclar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Yakıt kayıtları
CREATE TABLE IF NOT EXISTS `yakit_kayitlari` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `arac_id` int(11) NOT NULL,
  `tarih` date NOT NULL,
  `km` int(11) DEFAULT NULL,
  `litre` decimal(8,2) DEFAULT NULL,
  `tutar` decimal(10,2) DEFAULT NULL,
  `aciklama` varchar(255) DEFAULT NULL,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `arac_id` (`arac_id`),
  CONSTRAINT `fk_yakit_arac` FOREIGN KEY (`arac_id`) REFERENCES `araclar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Sözleşme imzaları
CREATE TABLE IF NOT EXISTS `sozlesme_imzalari` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kiralama_id` int(11) NOT NULL,
  `token` varchar(64) NOT NULL,
  `durum` enum('beklemede','imzalandi') DEFAULT 'beklemede',
  `imza_tarihi` datetime DEFAULT NULL,
  `ip_adresi` varchar(45) DEFAULT NULL,
  `cihaz` varchar(255) DEFAULT NULL,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `token` (`token`),
  KEY `kiralama_id` (`kiralama_id`),
  CONSTRAINT `fk_imza_kiralama` FOREIGN KEY (`kiralama_id`) REFERENCES `kiralamalar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- KABİS bildirimleri
CREATE TABLE IF NOT EXISTS `kabis_bildirimleri` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kiralama_id` int(11) NOT NULL,
  `durum` enum('beklemede','gonderildi','hata') DEFAULT 'beklemede',
  `gonderim_tarihi` datetime DEFAULT NULL,
  `hata_mesaji` text,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `kiralama_id` (`kiralama_id`),
  CONSTRAINT `fk_kabis_kiralama` FOREIGN KEY (`kiralama_id`) REFERENCES `kiralamalar` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

SET FOREIGN_KEY_CHECKS = 1;
