-- İHARS RENT A CAR - Migration v4
-- SaaS: Firma (tenant) tablosu, veri izolasyonu, login SMS doğrulama

-- Firma (tenant) tablosu
CREATE TABLE IF NOT EXISTS `firma` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ad` varchar(100) NOT NULL DEFAULT 'Firma',
  `demo_bitis_tarihi` date DEFAULT NULL,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Ana firma (mevcut veriler için)
INSERT IGNORE INTO `firma` (`id`, `ad`, `demo_bitis_tarihi`) VALUES (1, 'Ana Firma', NULL);

-- Kullanıcılara firma_id ve telefon ekle
ALTER TABLE `kullanicilar` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `kullanicilar` ADD COLUMN `telefon` varchar(20) DEFAULT NULL;
UPDATE `kullanicilar` SET firma_id = 1 WHERE firma_id IS NULL;

-- Veri tablolarına firma_id ekle
ALTER TABLE `araclar` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `musteriler` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `subeler` ADD COLUMN `firma_id` int(11) DEFAULT 1;
-- ayarlar: firma_id ekle, PK değiştir (firma bazlı ayar için)
ALTER TABLE `ayarlar` ADD COLUMN `firma_id` int(11) DEFAULT 1;
UPDATE `ayarlar` SET firma_id = 1 WHERE firma_id IS NULL;
ALTER TABLE `ayarlar` DROP PRIMARY KEY, ADD PRIMARY KEY (`firma_id`, `anahtar`);

UPDATE `araclar` SET firma_id = 1 WHERE firma_id IS NULL;
UPDATE `musteriler` SET firma_id = 1 WHERE firma_id IS NULL;
UPDATE `subeler` SET firma_id = 1 WHERE firma_id IS NULL;
UPDATE `ayarlar` SET firma_id = 1 WHERE firma_id IS NULL;

-- kiralamalar (arac ve musteri üzerinden - firma_id ekleyelim)
ALTER TABLE `kiralamalar` ADD COLUMN `firma_id` int(11) DEFAULT 1;
UPDATE `kiralamalar` k SET k.firma_id = (SELECT c.firma_id FROM araclar c WHERE c.id = k.arac_id LIMIT 1) WHERE k.firma_id IS NULL;
UPDATE `kiralamalar` SET firma_id = 1 WHERE firma_id IS NULL;

-- Diğer tablolar (arac/musteri/kiralama üzerinden)
ALTER TABLE `arac_evraklari` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `arac_bakimlari` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `odemeler` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `sezon_fiyatlari` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `trafik_cezalari` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `yakit_kayitlari` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `sozlesme_imzalari` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `kabis_bildirimleri` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `sms_log` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `senetler` ADD COLUMN `firma_id` int(11) DEFAULT 1;
ALTER TABLE `kiralama_sms_bildirim` ADD COLUMN `firma_id` int(11) DEFAULT 1;

-- firma_id güncellemeleri (mevcut veriler için)
UPDATE arac_evraklari e SET e.firma_id = (SELECT c.firma_id FROM araclar c WHERE c.id = e.arac_id LIMIT 1);
UPDATE arac_bakimlari b SET b.firma_id = (SELECT c.firma_id FROM araclar c WHERE c.id = b.arac_id LIMIT 1);
UPDATE odemeler o SET o.firma_id = (SELECT k.firma_id FROM kiralamalar k WHERE k.id = o.kiralama_id LIMIT 1);
UPDATE sezon_fiyatlari s SET s.firma_id = COALESCE((SELECT c.firma_id FROM araclar c WHERE c.id = s.arac_id LIMIT 1), 1);
UPDATE trafik_cezalari t SET t.firma_id = (SELECT c.firma_id FROM araclar c WHERE c.id = t.arac_id LIMIT 1);
UPDATE yakit_kayitlari y SET y.firma_id = (SELECT c.firma_id FROM araclar c WHERE c.id = y.arac_id LIMIT 1);
UPDATE sozlesme_imzalari si SET si.firma_id = (SELECT k.firma_id FROM kiralamalar k WHERE k.id = si.kiralama_id LIMIT 1);
UPDATE kabis_bildirimleri kb SET kb.firma_id = (SELECT k.firma_id FROM kiralamalar k WHERE k.id = kb.kiralama_id LIMIT 1);
UPDATE sms_log sl SET sl.firma_id = 1 WHERE sl.firma_id IS NULL;
UPDATE senetler s SET s.firma_id = COALESCE((SELECT k.firma_id FROM kiralamalar k WHERE k.id = s.kiralama_id LIMIT 1), 1);
UPDATE kiralama_sms_bildirim ksb SET ksb.firma_id = (SELECT k.firma_id FROM kiralamalar k WHERE k.id = ksb.kiralama_id LIMIT 1);

-- Login SMS doğrulama tablosu
CREATE TABLE IF NOT EXISTS `login_sms_verify` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kullanici_id` int(11) NOT NULL,
  `telefon` varchar(20) NOT NULL,
  `kod` varchar(6) NOT NULL,
  `token` varchar(64) NOT NULL,
  `olusturma_tarihi` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `token` (`token`),
  KEY `kullanici_id` (`kullanici_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
