-- Seeders para dados iniciais

USE saas_barbearia;

-- Inserir empresa de exemplo
INSERT INTO companies (name, slug, domain, email, phone, address, status) VALUES
('Barbearia Exemplo', 'barbearia-exemplo', 'barbearia-exemplo.saas.com', 'contato@barbearia.com', '(11) 99999-9999', 'Rua das Barbearias, 123 - São Paulo/SP', 'active');

-- Inserir configurações da empresa
INSERT INTO company_settings (company_id, setting_key, setting_value) VALUES
(1, 'theme_color', '#1f2937'),
(1, 'business_hours', '{"monday":{"open":"08:00","close":"18:00"},"tuesday":{"open":"08:00","close":"18:00"},"wednesday":{"open":"08:00","close":"18:00"},"thursday":{"open":"08:00","close":"18:00"},"friday":{"open":"08:00","close":"18:00"},"saturday":{"open":"08:00","close":"16:00"},"sunday":{"open":null,"close":null}}'),
(1, 'timezone', 'America/Sao_Paulo'),
(1, 'currency', 'BRL');

-- Inserir permissões do sistema
INSERT INTO permissions (name, display_name, description, module) VALUES
('view_dashboard', 'Ver Dashboard', 'Acesso ao dashboard principal', 'dashboard'),
('manage_users', 'Gerenciar Usuários', 'Criar, editar e excluir usuários', 'users'),
('view_users', 'Ver Usuários', 'Visualizar lista de usuários', 'users'),
('manage_services', 'Gerenciar Serviços', 'Criar, editar e excluir serviços', 'services'),
('view_services', 'Ver Serviços', 'Visualizar lista de serviços', 'services'),
('manage_appointments', 'Gerenciar Agendamentos', 'Criar, editar e excluir agendamentos', 'appointments'),
('view_appointments', 'Ver Agendamentos', 'Visualizar lista de agendamentos', 'appointments'),
('manage_company', 'Gerenciar Empresa', 'Editar configurações da empresa', 'company'),
('view_reports', 'Ver Relatórios', 'Acesso aos relatórios', 'reports'),
('manage_finances', 'Gerenciar Finanças', 'Acesso às finanças', 'finances');

-- Inserir grupos de acesso padrão
INSERT INTO access_groups (company_id, name, description, is_default) VALUES
(1, 'Administrador', 'Acesso total ao sistema', FALSE),
(1, 'Gerente', 'Gerenciamento operacional', FALSE),
(1, 'Funcionário', 'Acesso básico operacional', FALSE),
(1, 'Cliente', 'Acesso limitado ao próprio perfil', TRUE);

-- Inserir permissões para o grupo Administrador
INSERT INTO access_group_permissions (access_group_id, permission_id)
SELECT ag.id, p.id
FROM access_groups ag
CROSS JOIN permissions p
WHERE ag.name = 'Administrador' AND ag.company_id = 1;

-- Inserir permissões para o grupo Gerente
INSERT INTO access_group_permissions (access_group_id, permission_id)
SELECT ag.id, p.id
FROM access_groups ag, permissions p
WHERE ag.name = 'Gerente' AND ag.company_id = 1
AND p.name IN ('view_dashboard', 'manage_users', 'view_users', 'manage_services', 'view_services', 'manage_appointments', 'view_appointments', 'view_reports');

-- Inserir permissões para o grupo Funcionário
INSERT INTO access_group_permissions (access_group_id, permission_id)
SELECT ag.id, p.id
FROM access_groups ag, permissions p
WHERE ag.name = 'Funcionário' AND ag.company_id = 1
AND p.name IN ('view_dashboard', 'view_users', 'view_services', 'manage_appointments', 'view_appointments');

-- Inserir permissões para o grupo Cliente
INSERT INTO access_group_permissions (access_group_id, permission_id)
SELECT ag.id, p.id
FROM access_groups ag, permissions p
WHERE ag.name = 'Cliente' AND ag.company_id = 1
AND p.name IN ('view_dashboard', 'view_appointments');

-- Inserir usuário super admin (acesso a todas as empresas)
INSERT INTO users (company_id, name, email, password, role, status) VALUES
(1, 'Super Administrador', 'superadmin@saas.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'super_admin', 'active');

-- Inserir usuário admin da empresa
INSERT INTO users (company_id, name, email, password, role, status) VALUES
(1, 'Administrador', 'admin@barbearia.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin', 'active');

-- Inserir usuário cliente
INSERT INTO users (company_id, name, email, password, role, status) VALUES
(1, 'João Cliente', 'joao@cliente.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'client', 'active');

-- Vincular usuários aos grupos
INSERT INTO user_group_links (user_id, access_group_id)
SELECT u.id, ag.id
FROM users u, access_groups ag
WHERE u.email = 'admin@barbearia.com' AND ag.name = 'Administrador' AND ag.company_id = 1;

INSERT INTO user_group_links (user_id, access_group_id)
SELECT u.id, ag.id
FROM users u, access_groups ag
WHERE u.email = 'joao@cliente.com' AND ag.name = 'Cliente' AND ag.company_id = 1;

-- Inserir serviços de exemplo
INSERT INTO services (company_id, name, description, price, duration, status) VALUES
(1, 'Corte de Cabelo', 'Corte masculino completo', 25.00, 30, 'active'),
(1, 'Barba', 'Aparação e modelagem da barba', 15.00, 20, 'active'),
(1, 'Corte + Barba', 'Pacote completo', 35.00, 45, 'active'),
(1, 'Manicure', 'Cuidados com as unhas', 20.00, 30, 'active'),
(1, 'Pedicure', 'Cuidados com os pés', 25.00, 45, 'active');