-- ============================================================
--  LK Fashion — Production Patch
--  Executar DEPOIS de importar o backup lojacsm_lkfashion.sql
--  e ANTES de fazer deploy do código Laravel.
--
--  Compatível com MySQL / MariaDB (o servidor de produção).
-- ============================================================

SET FOREIGN_KEY_CHECKS = 0;

-- ── 1. Coluna due_date em orders (ausente no backup) ─────────────────────────
ALTER TABLE `orders`
  ADD COLUMN IF NOT EXISTS `due_date` DATE NULL DEFAULT NULL AFTER `estimated_delivery`;

-- ── 2. zip_code nullable em customer_addresses ───────────────────────────────
ALTER TABLE `customer_addresses`
  MODIFY COLUMN `zip_code` VARCHAR(20) NULL DEFAULT NULL;

-- ── 3. Tabela settings (ausente no backup) ───────────────────────────────────
CREATE TABLE IF NOT EXISTS `settings` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `key` varchar(255) NOT NULL,
  `value` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `settings_key_unique` (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO `settings` (`key`, `value`, `created_at`, `updated_at`) VALUES
  ('store_name',        'LK Fashion',                                    NOW(), NOW()),
  ('store_tagline',     'Moda a seu estilo',                             NOW(), NOW()),
  ('store_logo',        '',                                               NOW(), NOW()),
  ('store_address',     'Nampula, Moçambique',                           NOW(), NOW()),
  ('store_phone',       '+258 84 000 0000',                              NOW(), NOW()),
  ('store_email',       'info@lkfashion.com',                            NOW(), NOW()),
  ('store_website',     '',                                               NOW(), NOW()),
  ('store_description', 'A melhor loja de moda em Moçambique.',          NOW(), NOW()),
  ('social_instagram',  '',                                               NOW(), NOW()),
  ('social_facebook',   '',                                               NOW(), NOW()),
  ('social_tiktok',     '',                                               NOW(), NOW()),
  ('social_whatsapp',   '',                                               NOW(), NOW()),
  ('social_youtube',    '',                                               NOW(), NOW()),
  ('brand_color',       '#dc2626',                                        NOW(), NOW()),
  ('brand_color_dark',  '#b91c1c',                                        NOW(), NOW()),
  ('footer_text',       '© 2026 LK Fashion. Todos os direitos reservados.', NOW(), NOW()),
  ('currency',          'MZN',                                            NOW(), NOW()),
  ('currency_symbol',   'Mt',                                             NOW(), NOW());

-- ── 4. Seed zona de envio padrão se vazia ────────────────────────────────────
INSERT INTO `shipping_zones` (`name`, `description`, `cities`, `districts`, `base_price`, `price_per_kg`, `free_shipping_min`, `delivery_days`, `active`, `created_at`, `updated_at`)
SELECT 'Entrega Padrão', 'Entrega em 2-3 dias úteis', '[]', '[]', 150.00, NULL, NULL, 3, 1, NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM `shipping_zones` LIMIT 1);

-- ── 5. Sincronizar tabela migrations ─────────────────────────────────────────
--  Adicionar registos para migrações cujos nomes locais diferem do backup,
--  e para migrações novas já aplicadas via patch acima.
--  Usa INSERT IGNORE para não duplicar entradas já existentes.

-- Migrações já aplicadas no servidor mas com nome diferente localmente
INSERT IGNORE INTO `migrations` (`migration`, `batch`) VALUES
  ('2026_01_01_000001_create_stores_table',              1),
  ('2026_01_01_000002_create_users_table',               1),
  ('2026_01_01_000003_create_categories_table',          1),
  ('2026_01_01_000004_create_brands_table',              1),
  ('2026_01_01_000005_create_products_table',            1),
  ('2026_03_23_055237_create_product_variations_table',  1),
  ('2026_03_23_055300_add_variant_id_to_stock_table',    1);

-- Migrações novas aplicadas por este patch
INSERT IGNORE INTO `migrations` (`migration`, `batch`) VALUES
  ('2026_05_29_161926_add_performance_indexes_to_products_table', 2),
  ('2026_05_29_162638_add_performance_indexes_to_orders_table',   2),
  ('2026_05_30_144450_make_zip_code_nullable_in_customer_addresses', 2),
  ('2026_05_30_152824_fix_orders_fk_and_seed_shipping_zone',      2),
  ('2026_06_01_000001_create_settings_table',                     2),
  ('2026_06_15_015147_add_amount_paid_to_orders_table',           2),
  ('2026_06_15_044356_add_due_date_to_orders_table',              2);

SET FOREIGN_KEY_CHECKS = 1;

-- ── Verificação final ─────────────────────────────────────────────────────────
SELECT 'Patch aplicado com sucesso!' AS resultado;
SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES
  WHERE TABLE_SCHEMA = DATABASE()
  ORDER BY TABLE_NAME;
