CREATE TABLE IF NOT EXISTS businesses (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  name VARCHAR(255) NOT NULL,
  phone VARCHAR(50),
  email VARCHAR(255),
  address TEXT,
  working_hours VARCHAR(100),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS profiles (
  id CHAR(36) PRIMARY KEY,
  full_name VARCHAR(255) NOT NULL,
  email VARCHAR(255),
  role ENUM('platform_admin', 'business_admin', 'staff') NOT NULL DEFAULT 'staff',
  business_id CHAR(36),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_profiles_business_id (business_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS customers (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  name VARCHAR(255) NOT NULL,
  phone VARCHAR(50) NOT NULL,
  email VARCHAR(255),
  notes TEXT DEFAULT '',
  consent_sms TINYINT(1) NOT NULL DEFAULT 1,
  consent_email TINYINT(1) NOT NULL DEFAULT 0,
  consent_calls TINYINT(1) NOT NULL DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_customers_business_id (business_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS vehicles (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  customer_id CHAR(36) NOT NULL,
  plate VARCHAR(50) NOT NULL,
  brand VARCHAR(100) NOT NULL,
  model VARCHAR(100) NOT NULL,
  year INT,
  vehicle_type VARCHAR(100) NOT NULL,
  last_visit TIMESTAMP NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uk_business_plate (business_id, plate),
  KEY idx_vehicles_customer_id (customer_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS services (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  name VARCHAR(255) NOT NULL,
  description TEXT,
  price DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  duration_minutes INT NOT NULL DEFAULT 60,
  active TINYINT(1) NOT NULL DEFAULT 1,
  commission_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_services_business_id (business_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS appointments (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  customer_id CHAR(36) NOT NULL,
  vehicle_id CHAR(36) NOT NULL,
  service_ids JSON NOT NULL,
  appointment_date DATE NOT NULL,
  start_time TIME NOT NULL,
  duration_minutes INT NOT NULL DEFAULT 60,
  price DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  staff_id CHAR(36),
  status ENUM('Bekliyor', 'Onaylandı', 'İşlemde', 'Tamamlandı', 'İptal edildi', 'Gelmedi') NOT NULL DEFAULT 'Bekliyor',
  description TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_appointments_business_id (business_id),
  KEY idx_appointments_customer_id (customer_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS work_orders (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  customer_id CHAR(36) NOT NULL,
  vehicle_id CHAR(36) NOT NULL,
  service_ids JSON NOT NULL,
  staff_id CHAR(36),
  started_at TIMESTAMP NULL,
  finished_at TIMESTAMP NULL,
  total_price DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  paid TINYINT(1) NOT NULL DEFAULT 0,
  status ENUM('Bekliyor', 'İşlemde', 'Tamamlandı', 'Tahsil edildi') NOT NULL DEFAULT 'Bekliyor',
  notes TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_work_orders_business_id (business_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS payments (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  customer_id CHAR(36),
  amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  payment_method ENUM('Nakit', 'Kart', 'Havale') NOT NULL DEFAULT 'Nakit',
  payment_date DATE NOT NULL DEFAULT (CURRENT_DATE),
  status ENUM('Tahsil edildi', 'Bekliyor') NOT NULL DEFAULT 'Tahsil edildi',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_payments_business_id (business_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS expenses (
  id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
  business_id CHAR(36) NOT NULL,
  title VARCHAR(255) NOT NULL,
  category VARCHAR(255) NOT NULL,
  amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  expense_date DATE NOT NULL DEFAULT (CURRENT_DATE),
  payment_method VARCHAR(50) NOT NULL DEFAULT 'Nakit',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY idx_expenses_business_id (business_id)
) ENGINE=InnoDB;
