-- Durcissement V2 SaaS - Juin 2026
-- A importer apres sql/2026-06-saas-tenancy.sql sur une base existante.

SET @demo_company_id = (SELECT id FROM companies WHERE slug='saas-demo' LIMIT 1);

UPDATE companies
SET
  name='SaaS DEMO',
  legal_name='SaaS DEMO Sàrl',
  email='demo@saas-demo.test',
  phone='079 000 00 00',
  address='Rue Démo 1\n1000 Lausanne',
  updated_at=NOW()
WHERE slug='saas-demo';

UPDATE settings
SET value = CASE name
  WHEN 'business_name' THEN 'SaaS DEMO'
  WHEN 'business_email' THEN 'demo@saas-demo.test'
  WHEN 'business_phone' THEN '079 000 00 00'
  WHEN 'business_address' THEN 'Rue Démo 1\n1000 Lausanne'
  ELSE value
END
WHERE company_id=@demo_company_id
  AND name IN ('business_name', 'business_email', 'business_phone', 'business_address');

DELETE FROM blog_posts
WHERE slug IN (
  'nettoyage-regulier-taches-entreprise',
  'erreurs-nettoyage-fin-de-bail-etat-des-lieux',
  'vitres-stores-apres-pollen',
  'menage-regulier-seniors-payerne-broye',
  'frequence-nettoyage-bureaux',
  'preparer-intervention-artisan',
  'devis-clair-travaux-services',
  'planifier-chantier-client'
);

DELETE b FROM bank_accounts b
JOIN companies c ON c.id=b.company_id
WHERE c.slug='saas-demo'
  AND (
    b.label LIKE '%Anais%'
    OR b.holder_name LIKE '%Anais%'
    OR b.holder_name LIKE '%Geisseler%'
  );

INSERT INTO blog_posts (company_id, slug, title, meta_description, h1, excerpt, body, service_slug, status, published_at)
VALUES
(@demo_company_id, 'preparer-nettoyage-fin-de-bail', 'Comment préparer un nettoyage de fin de bail ?', 'Checklist nettoyage fin de bail: pièces, cuisine, sanitaires, vitres, stores, balcon, cave, accès et photos utiles.', 'Comment préparer un nettoyage de fin de bail ?', 'Une demande complète aide l’entreprise à chiffrer juste et à éviter les oublis avant l’état des lieux.', 'Un nettoyage de fin de bail se prépare avec les informations essentielles: nombre de pièces, surface, cuisine, sanitaires, vitres, stores, balcon, cave, garage, accès, étage et délai avant état des lieux.\n\nDes photos permettent de comprendre l’état du logement et les points sensibles. L’entreprise peut ensuite confirmer le périmètre, les options et le planning.\n\nUn devis clair indique ce qui est inclus, les conditions, la validité et les prochaines étapes.', 'nettoyage-fin-de-bail', 'publie', NOW()),
(@demo_company_id, 'devis-clair-nettoyage', 'Devis de nettoyage: les éléments à faire apparaître', 'Les points essentiels d’un devis professionnel de nettoyage: prestation, fréquence, surface, TVA, conditions, validité et options.', 'Devis de nettoyage: les éléments à faire apparaître', 'Un devis lisible rassure le client et limite les malentendus avant l’intervention.', 'Un devis de nettoyage doit présenter le client, le lieu, le type de prestation, la surface, les quantités, les options, la TVA, l’acompte éventuel et les conditions.\n\nLa description doit préciser ce qui est inclus: sols, vitres, sanitaires, cuisine, stores, consommables, accès ou fréquence.\n\nUne fois accepté, le devis peut être converti en passage, contrat récurrent ou facture afin de garder une chaîne commerciale cohérente.', 'nettoyage-regulier', 'publie', NOW()),
(@demo_company_id, 'planifier-passages-nettoyage', 'Planifier les passages de nettoyage sans perdre le suivi client', 'Organisation d’un planning de nettoyage: confirmations, employés assignés, commentaires internes, messages et facturation.', 'Planifier les passages de nettoyage sans perdre le suivi client', 'Le planning devient plus fiable quand les informations commerciales et terrain restent au même endroit.', 'La planification d’un passage de nettoyage ne consiste pas seulement à choisir une date. Il faut assigner les bonnes personnes, garder les commentaires internes, confirmer les horaires au client et suivre l’état de l’intervention.\n\nUn espace client simplifie les échanges: le client retrouve ses devis, factures et messages sans chercher dans ses emails.\n\nPour l’entreprise, les interventions terminées peuvent alimenter les avis, les factures et l’historique client.', 'nettoyage-regulier', 'publie', NOW())
ON DUPLICATE KEY UPDATE
  company_id=VALUES(company_id),
  title=VALUES(title),
  meta_description=VALUES(meta_description),
  h1=VALUES(h1),
  excerpt=VALUES(excerpt),
  body=VALUES(body),
  service_slug=VALUES(service_slug),
  status=VALUES(status),
  updated_at=NOW();

SET @blog_slug_unique_exists = (
  SELECT COUNT(*)
  FROM information_schema.statistics
  WHERE table_schema=DATABASE()
    AND table_name='blog_posts'
    AND index_name='slug'
);
SET @drop_blog_slug_unique = IF(@blog_slug_unique_exists > 0, 'ALTER TABLE blog_posts DROP INDEX slug', 'SELECT 1');
PREPARE drop_blog_slug_unique_stmt FROM @drop_blog_slug_unique;
EXECUTE drop_blog_slug_unique_stmt;
DEALLOCATE PREPARE drop_blog_slug_unique_stmt;

SET @blog_company_slug_unique_exists = (
  SELECT COUNT(*)
  FROM information_schema.statistics
  WHERE table_schema=DATABASE()
    AND table_name='blog_posts'
    AND index_name='uniq_blog_posts_company_slug'
);
SET @add_blog_company_slug_unique = IF(@blog_company_slug_unique_exists = 0, 'ALTER TABLE blog_posts ADD UNIQUE KEY uniq_blog_posts_company_slug (company_id, slug)', 'SELECT 1');
PREPARE add_blog_company_slug_unique_stmt FROM @add_blog_company_slug_unique;
EXECUTE add_blog_company_slug_unique_stmt;
DEALLOCATE PREPARE add_blog_company_slug_unique_stmt;
