-- =====================================================================
-- ARCA Hosting — Migracion Fase 2
-- Multi-tenant completo + roles/permisos granulares + modulo de Servicios.
-- Las tablas ya existian desde el esquema base (schema.sql); esta
-- migracion solo agrega los datos necesarios para activar la Fase 2.
-- Segura de ejecutar sobre una instalacion de Fase 1 ya en uso.
-- =====================================================================

USE arca_hosting;

-- ---------------------------------------------------------------------
-- Catalogo de permisos
-- ---------------------------------------------------------------------
INSERT IGNORE INTO permissions (`key`, label) VALUES
    ('dashboard.view',        'Ver panel principal'),
    ('clients.view',          'Ver clientes'),
    ('clients.manage',        'Crear/editar/eliminar clientes'),
    ('services.view',         'Ver catalogo de servicios'),
    ('services.manage',       'Crear/editar/eliminar servicios del catalogo'),
    ('client_services.manage','Asignar/gestionar servicios contratados por un cliente'),
    ('users.view',            'Ver usuarios de la empresa'),
    ('users.manage',          'Administrar usuarios y roles de la empresa');

-- ---------------------------------------------------------------------
-- Asignacion de permisos a roles
-- (superadmin no necesita mapeo: Auth::can() le concede acceso total)
-- ---------------------------------------------------------------------
INSERT IGNORE INTO role_permission (role_id, permission_id)
SELECT r.id, p.id FROM roles r, permissions p
WHERE r.name = 'admin' AND p.key IN (
    'dashboard.view', 'clients.view', 'clients.manage',
    'services.view', 'services.manage', 'client_services.manage',
    'users.view', 'users.manage'
);

INSERT IGNORE INTO role_permission (role_id, permission_id)
SELECT r.id, p.id FROM roles r, permissions p
WHERE r.name = 'support' AND p.key IN (
    'dashboard.view', 'clients.view', 'services.view', 'client_services.manage'
);

-- Tambien se asigna el catalogo completo a superadmin, por consistencia
-- (aunque Auth::can() lo pase por alto con acceso total).
INSERT IGNORE INTO role_permission (role_id, permission_id)
SELECT r.id, p.id FROM roles r, permissions p WHERE r.name = 'superadmin';

-- ---------------------------------------------------------------------
-- Empresa demo adicional, para probar el selector multi-tenant sin
-- afectar los datos reales de ARCA Hosting (company_id = 1).
-- ---------------------------------------------------------------------
INSERT IGNORE INTO companies (id, name, legal_name, currency, timezone)
VALUES (2, 'ARCA Cloud Demo', 'ARCA Cloud Demo S.A. de C.V.', 'MXN', 'America/Mexico_City');

-- El administrador semilla (id=1) tambien es superadmin en la empresa demo,
-- para poder probar el cambio de empresa de inmediato tras esta migracion.
INSERT IGNORE INTO company_user (company_id, user_id, role_id)
SELECT 2, 1, r.id FROM roles r WHERE r.name = 'superadmin';

-- ---------------------------------------------------------------------
-- Catalogo de ejemplo para la empresa 1 (opcional, ayuda a probar el
-- modulo de Servicios sin capturar datos manualmente).
-- ---------------------------------------------------------------------
INSERT IGNORE INTO service_plans (id, company_id, name, type, price, billing_cycle) VALUES
    (1, 1, 'Hosting Basico',      'hosting', 199.00,  'monthly'),
    (2, 1, 'Hosting Empresarial', 'hosting', 599.00,  'monthly'),
    (3, 1, 'Correo Empresarial (5 cuentas)', 'email', 150.00, 'monthly'),
    (4, 1, 'SSL Wildcard',        'ssl',     899.00,  'annual'),
    (5, 1, 'Mantenimiento Web Mensual', 'maintenance', 350.00, 'monthly');
