USE she_chantier;

INSERT INTO roles (slug, label, is_system) VALUES
('super_admin', 'Super administrateur', 1),
('admin', 'Administrateur', 1),
('conducteur_travaux', 'Conducteur de travaux', 0),
('chef_chantier', 'Chef de chantier', 0),
('pointeur', 'Pointeur', 0),
('achats', 'Responsable achats', 0),
('finance', 'Responsable finance', 0),
('maintenance', 'Technicien maintenance', 0),
('viewer', 'Lecture seule', 0);

INSERT INTO permissions (slug, label, module) VALUES
('system.admin', 'Administration complète', 'system'),
('dashboard.view', 'Voir le tableau de bord', 'dashboard'),
('dashboard.alerts', 'Consulter les alertes', 'dashboard'),
('validation.view', 'Voir les validations', 'dashboard'),
('project.view', 'Voir projets', 'chantier'),
('owners.view', 'Voir maîtres d''ouvrage', 'owners'),
('owners.create', 'Créer des maîtres d''ouvrage', 'owners'),
('owners.edit', 'Modifier des maîtres d''ouvrage', 'owners'),
('owners.delete', 'Supprimer des maîtres d''ouvrage', 'owners'),
('projects.view', 'Voir chantiers', 'projects'),
('projects.create', 'Créer des chantiers', 'projects'),
('projects.edit', 'Modifier des chantiers', 'projects'),
('projects.delete', 'Supprimer des chantiers', 'projects'),
('project_contracts.view', 'Voir contrats et OS', 'projects'),
('employees.view', 'Voir employés', 'employees'),
('employees.create', 'Créer employés', 'employees'),
('organizations.view', 'Voir organismes', 'organizations'),
('assets.view', 'Voir engins', 'assets'),
('assets.create', 'Créer engins', 'assets'),
('asset.maintenance.view', 'Voir maintenance', 'assets'),
('timesheet.view', 'Voir pointage personnel', 'timesheets'),
('asset.timesheet.view', 'Voir pointage engins', 'assets'),
('suppliers.view', 'Voir fournisseurs', 'purchases'),
('suppliers.create', 'Créer fournisseurs', 'purchases'),
('purchase_requests.view', 'Voir demandes', 'purchases'),
('purchase_requests.create', 'Créer demandes', 'purchases'),
('supplier_quotes.view', 'Voir devis', 'purchases'),
('supplier_quotes.validate', 'Valider devis', 'purchases'),
('purchase_orders.view', 'Voir bons de commande', 'purchases'),
('deliveries.view', 'Voir livraisons', 'purchases'),
('stock.view', 'Voir stock', 'stock'),
('documents.view', 'Voir documents', 'documents'),
('documents.upload', 'Importer documents', 'documents'),
('cash.view', 'Voir trésorerie', 'cash'),
('cash.create', 'Créer opérations caisse', 'cash'),
('fuel.view', 'Voir gasoil', 'fuel'),
('payments.view', 'Voir règlements', 'finance'),
('treasury.view', 'Voir trésorerie', 'treasury'),
('users.view', 'Voir utilisateurs', 'users'),
('users.create', 'Créer utilisateurs', 'users'),
('roles.view', 'Voir rôles', 'users'),
('roles.edit', 'Gérer permissions', 'users'),
('reference.view', 'Voir référentiels', 'reference'),
('settings.view', 'Voir paramètres', 'settings'),
('system.maintenance', 'Maintenance système', 'system');

INSERT INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id
FROM roles r
JOIN permissions p ON 1 = 1
WHERE r.slug IN ('super_admin', 'admin');

INSERT INTO users (username, full_name, email, password_hash, force_password_change, is_active)
VALUES ('admin', 'Administrateur général', 'admin@local', {{ADMIN_PASSWORD_HASH}}, 1, 1);

SET @admin_id = LAST_INSERT_ID();
INSERT INTO user_role (user_id, role_id)
SELECT @admin_id, id FROM roles WHERE slug IN ('super_admin', 'admin');

INSERT INTO company_settings (`key`, `value`) VALUES
('company_name', 'SHE Chantier'),
('logo_path', ''),
('fiscal_year_start', '2026-01-01'),
('currency', 'MAD'),
('default_locale', 'fr_FR');

INSERT INTO project_statuses (slug, label, position) VALUES
('planifie', 'Planifié', 10),
('en_cours', 'En cours', 20),
('suspendu', 'Suspendu', 30),
('termine', 'Terminé', 40),
('cloture', 'Clôturé', 50);

INSERT INTO organization_types (label, slug) VALUES
('Bureau d''études', 'bureau_etudes'),
('IGT TOPO', 'igt_topo'),
('Laboratoire interne', 'laboratoire_interne'),
('Laboratoire externe', 'laboratoire_externe'),
('Autres intervenants', 'autres_intervenants');

INSERT INTO supplier_categories (label, slug) VALUES
('Matériels', 'materiels'),
('Matériaux', 'materiaux'),
('Service', 'service'),
('Maintenance', 'maintenance'),
('Transport', 'transport');

INSERT INTO document_types (slug, label) VALUES
('contrat_chantier', 'Contrat de chantier'),
('devis_signe', 'Devis signé'),
('bon_commande', 'Bon de commande'),
('bon_livraison', 'Bon de livraison'),
('justificatif_paiement', 'Justificatif de paiement'),
('locataire_engin', 'Justificatif locataire engin'),
('logo', 'Logo'),
('divers', 'Document divers');

INSERT INTO cash_accounts (`name`, `type`, currency, balance) VALUES
('Caisse principale', 'caisse', 'MAD', 0),
('Banque principale', 'banque', 'MAD', 0),
('Compte carburant', 'autre', 'MAD', 0);

INSERT INTO job_functions (label, slug) VALUES
('Chef de chantier', 'chef_chantier'),
('Pointeur', 'pointeur'),
('Conducteur d''engins', 'conducteur_engins'),
('Conducteur de travaux', 'conducteur_travaux'),
('Topographe', 'topographe');
INSERT INTO permissions (slug, label, module) VALUES
('project_contracts.create', 'Créer contrats', 'projects'),
('project_contracts.edit', 'Modifier contrats', 'projects'),
('project_contracts.delete', 'Supprimer contrats', 'projects'),
('project_delay_orders.view', 'Voir ordres de service', 'projects'),
('project_delay_orders.create', 'Créer ordres de service', 'projects'),
('project_delay_orders.edit', 'Modifier ordres de service', 'projects'),
('project_delay_orders.delete', 'Supprimer ordres de service', 'projects'),
('price_items.view', 'Voir bordereau/AVM', 'projects'),
('price_items.create', 'Créer bordereau/AVM', 'projects'),
('price_items.edit', 'Modifier bordereau/AVM', 'projects'),
('price_items.delete', 'Supprimer bordereau/AVM', 'projects'),
('work_progress.view', 'Voir avancement', 'projects'),
('work_progress.create', 'Créer avancement', 'projects'),
('work_progress.edit', 'Modifier avancement', 'projects'),
('work_progress.delete', 'Supprimer avancement', 'projects'),
('project_journals.view', 'Voir journal chantier', 'projects'),
('project_journals.create', 'Créer journal chantier', 'projects'),
('project_journals.edit', 'Modifier journal chantier', 'projects'),
('project_journals.delete', 'Supprimer journal chantier', 'projects');

INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id
FROM roles r
JOIN permissions p ON p.slug IN (
  'project_contracts.create',
  'project_contracts.edit',
  'project_contracts.delete',
  'project_delay_orders.view',
  'project_delay_orders.create',
  'project_delay_orders.edit',
  'project_delay_orders.delete',
  'price_items.view',
  'price_items.create',
  'price_items.edit',
  'price_items.delete',
  'work_progress.view',
  'work_progress.create',
  'work_progress.edit',
  'work_progress.delete',
  'project_journals.view',
  'project_journals.create',
  'project_journals.edit',
  'project_journals.delete'
)
WHERE r.slug IN ('super_admin', 'admin');

INSERT IGNORE INTO permissions (slug, label, module) VALUES
('employees.edit', 'Modifier employÃ©s', 'employees'),
('employees.delete', 'Supprimer employÃ©s', 'employees'),
('organizations.create', 'CrÃ©er organismes', 'organizations'),
('organizations.edit', 'Modifier organismes', 'organizations'),
('organizations.delete', 'Supprimer organismes', 'organizations'),
('assets.edit', 'Modifier engins', 'assets'),
('assets.delete', 'Supprimer engins', 'assets'),
('project_assignments.create', 'Attribuer profil chantier', 'projects'),
('project_assignments.edit', 'Modifier profil chantier', 'projects'),
('project_assignments.delete', 'Supprimer profil chantier', 'projects'),
('asset_renters.view', 'Voir locations d\'engins', 'assets'),
('asset_renters.create', 'CrÃ©er locations d\'engins', 'assets'),
('asset_renters.edit', 'Modifier locations d\'engins', 'assets'),
('asset_renters.delete', 'Supprimer locations d\'engins', 'assets'),
('timesheet.edit', 'Modifier pointage personnel', 'timesheets'),
('timesheet.delete', 'Supprimer pointage personnel', 'timesheets'),
('asset.timesheet.create', 'CrÃ©er pointage engins', 'assets'),
('asset.timesheet.edit', 'Modifier pointage engins', 'assets'),
('asset.timesheet.delete', 'Supprimer pointage engins', 'assets'),
('asset_maintenance.view', 'Voir maintenance engins', 'assets'),
('asset_maintenance.create', 'CrÃ©er maintenance engins', 'assets'),
('asset_maintenance.edit', 'Modifier maintenance engins', 'assets'),
('asset_maintenance.delete', 'Supprimer maintenance engins', 'assets');

INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id
FROM roles r
JOIN permissions p ON p.slug IN (
  'employees.create',
  'employees.edit',
  'employees.delete',
  'job_functions.create',
  'job_functions.edit',
  'job_functions.delete',
  'organizations.create',
  'organizations.edit',
  'organizations.delete',
  'assets.create',
  'assets.edit',
  'assets.delete',
  'project_assignments.view',
  'project_assignments.create',
  'project_assignments.edit',
  'project_assignments.delete',
  'asset_renters.view',
  'asset_renters.create',
  'asset_renters.edit',
  'asset_renters.delete',
  'timesheet.view',
  'timesheet.create',
  'timesheet.edit',
  'timesheet.delete',
  'asset.timesheet.view',
  'asset.timesheet.create',
  'asset.timesheet.edit',
  'asset.timesheet.delete',
  'asset_maintenance.view',
  'asset_maintenance.create',
  'asset_maintenance.edit',
  'asset_maintenance.delete'
)
WHERE r.slug IN ('super_admin', 'admin');
INSERT INTO permissions (slug, label, module) VALUES
('purchase_requests.edit', 'Modifier demandes', 'purchases'),
('purchase_requests.delete', 'Supprimer demandes', 'purchases'),
('suppliers.edit', 'Modifier fournisseurs', 'purchases'),
('suppliers.delete', 'Supprimer fournisseurs', 'purchases'),
('supplier_quotes.create', 'CrÃ©er devis', 'purchases'),
('supplier_quotes.edit', 'Modifier devis', 'purchases'),
('supplier_quotes.delete', 'Supprimer devis', 'purchases'),
('supplier_quotes.submit', 'Soumettre devis', 'purchases'),
('purchase_orders.create', 'CrÃ©er bons de commande', 'purchases'),
('purchase_orders.edit', 'Modifier bons de commande', 'purchases'),
('purchase_orders.delete', 'Supprimer bons de commande', 'purchases'),
('deliveries.create', 'CrÃ©er livraisons', 'purchases'),
('deliveries.edit', 'Modifier livraisons', 'purchases'),
('deliveries.delete', 'Supprimer livraisons', 'purchases'),
('stock.create', 'CrÃ©er Ã©lÃ©ments stock', 'stock'),
('stock.edit', 'Modifier Ã©lÃ©ments stock', 'stock'),
('stock.delete', 'Supprimer Ã©lÃ©ments stock', 'stock'),
('stock_movements.create', 'CrÃ©er mouvement de stock', 'stock');

INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id
FROM roles r
JOIN permissions p ON p.slug IN (
  'purchase_requests.create',
  'purchase_requests.view',
  'purchase_requests.edit',
  'purchase_requests.delete',
  'suppliers.create',
  'suppliers.view',
  'suppliers.edit',
  'suppliers.delete',
  'supplier_quotes.create',
  'supplier_quotes.view',
  'supplier_quotes.edit',
  'supplier_quotes.delete',
  'supplier_quotes.submit',
  'supplier_quotes.validate',
  'purchase_orders.create',
  'purchase_orders.view',
  'purchase_orders.edit',
  'purchase_orders.delete',
  'deliveries.create',
  'deliveries.view',
  'deliveries.edit',
  'deliveries.delete',
  'stock.view',
  'stock.create',
  'stock.edit',
  'stock.delete',
  'stock_movements.create',
  'documents.upload'
)
WHERE r.slug IN ('super_admin', 'admin');
