-- ============================================================
-- elink — Script de carga de datos iniciales (seed)
-- Réplica de RolesAndPermissionsSeeder + DatabaseSeeder
-- Motor: MySQL / MariaDB
-- Requisito: haber corrido antes database/elink.sql
-- ============================================================

USE `elink`;

SET @now = '2026-06-14 12:00:00';

-- ============================================================
-- 1. Permisos (15)
-- ============================================================
INSERT INTO `permissions` (`name`, `guard_name`, `created_at`, `updated_at`) VALUES
    ('dashboard.view',     'web', @now, @now),
    ('companies.view',     'web', @now, @now),
    ('companies.create',   'web', @now, @now),
    ('companies.edit',     'web', @now, @now),
    ('companies.delete',   'web', @now, @now),
    ('users.view',         'web', @now, @now),
    ('users.create',       'web', @now, @now),
    ('users.edit',         'web', @now, @now),
    ('users.delete',       'web', @now, @now),
    ('roles.view',         'web', @now, @now),
    ('roles.create',       'web', @now, @now),
    ('roles.edit',         'web', @now, @now),
    ('roles.delete',       'web', @now, @now),
    ('settings.view',      'web', @now, @now),
    ('settings.edit',      'web', @now, @now);

-- ============================================================
-- 2. Roles (3)
-- ============================================================
INSERT INTO `roles` (`name`, `guard_name`, `created_at`, `updated_at`) VALUES
    ('superadmin', 'web', @now, @now),
    ('admin',      'web', @now, @now),
    ('usuario',    'web', @now, @now);

-- ============================================================
-- 3. role_has_permissions
--    admin: dashboard.view, users.*, settings.*
--    usuario: dashboard.view
--    (superadmin recibe todos vía Gate::before, sin filas aquí)
-- ============================================================
INSERT INTO `role_has_permissions` (`permission_id`, `role_id`)
SELECT p.id, r.id
FROM `permissions` p
CROSS JOIN `roles` r
WHERE r.`name` = 'admin'
  AND p.`name` IN (
      'dashboard.view',
      'users.view', 'users.create', 'users.edit', 'users.delete',
      'settings.view', 'settings.edit'
  );

INSERT INTO `role_has_permissions` (`permission_id`, `role_id`)
SELECT p.id, r.id
FROM `permissions` p
CROSS JOIN `roles` r
WHERE r.`name` = 'usuario'
  AND p.`name` = 'dashboard.view';

-- ============================================================
-- 4. Empresa demo
-- ============================================================
INSERT INTO `companies`
    (`name`, `slug`, `email`, `phone`, `address`, `logo_path`, `primary_color`, `is_active`, `created_at`, `updated_at`, `deleted_at`)
VALUES
    ('Empresa Demo', 'empresa-demo', 'contacto@empresademo.com', NULL, NULL, NULL, NULL, 1, @now, @now, NULL);

-- ============================================================
-- 5. Usuarios iniciales
--    Hashes bcrypt (cost 10) generados con password_hash()
-- ============================================================
INSERT INTO `users`
    (`name`, `email`, `email_verified_at`, `password`, `company_id`, `is_active`, `avatar_path`, `last_login_at`, `remember_token`, `created_at`, `updated_at`)
VALUES
    -- Superadmin (sin empresa)
    ('Super Administrador', 'admin@sistema.com',
     @now, '$2y$10$ZJFpsuT0iMcHIEx7Pkk6AOIQUaOhF4HpHv3v2sI7cRhN.vH3xNPES',
     NULL, 1, NULL, NULL, NULL, @now, @now),

    -- Admin de la empresa demo
    ('Admin Demo', 'admin@empresademo.com',
     @now, '$2y$10$ZJFpsuT0iMcHIEx7Pkk6AOIQUaOhF4HpHv3v2sI7cRhN.vH3xNPES',
     1, 1, NULL, NULL, NULL, @now, @now),

    -- Usuario regular de la empresa demo
    ('Usuario Demo', 'usuario@empresademo.com',
     @now, '$2y$10$RtWAXPYGIDKS//PKHPJKVuTrK5TGE3stV.zlfyF523BDlw94986h.',
     1, 1, NULL, NULL, NULL, @now, @now);

-- ============================================================
-- 6. model_has_roles
--    Superadmin, admin demo, usuario demo
-- ============================================================
INSERT INTO `model_has_roles` (`role_id`, `model_type`, `model_id`)
SELECT r.id, 'App\\Models\\User', u.id
FROM `roles` r
JOIN `users` u ON u.`email` IN (
    'admin@sistema.com',
    'admin@empresademo.com',
    'usuario@empresademo.com'
)
WHERE
    (r.`name` = 'superadmin' AND u.`email` = 'admin@sistema.com') OR
    (r.`name` = 'admin'      AND u.`email` = 'admin@empresademo.com') OR
    (r.`name` = 'usuario'    AND u.`email` = 'usuario@empresademo.com');

-- ============================================================
-- 7. Configuración global (settings globales: company_id NULL)
-- ============================================================
INSERT INTO `settings` (`company_id`, `key`, `value`, `created_at`, `updated_at`) VALUES
    (NULL, 'app_name',             'Sistema Base', @now, @now),
    (NULL, 'primary_color',        '#4f46e5',      @now, @now),
    (NULL, 'registration_enabled', '0',            @now, @now),
    (NULL, 'default_role',         'usuario',      @now, @now);

-- ============================================================
-- Credenciales de acceso:
--   superadmin : admin@sistema.com        / Admin123!
--   admin      : admin@empresademo.com    / Admin123!
--   usuario    : usuario@empresademo.com  / Usuario123!
-- ============================================================
