-- Seeds para o Sistema VEX
-- Execute este script após executar o schema.sql

USE vex_db;

-- Inserir pessoas (usuários)
INSERT INTO people (id, nome, cpf, unidade_id) VALUES
(1, 'Admin Sistema', '000.000.000-01', 1),
(2, 'João Operador', '111.111.111-11', 1),
(3, 'Maria Auditora', '222.222.222-22', 1),
(4, 'Carlos Silva', '333.333.333-33', 1),
(5, 'Ana Santos', '444.444.444-44', 2),
(6, 'Pedro Oliveira', '555.555.555-55', 1),
(7, 'Lucia Costa', '666.666.666-66', 2),
(8, 'Roberto Lima', '777.777.777-77', 3),
(9, 'Fernanda Alves', '888.888.888-88', 1),
(10, 'Marcos Pereira', '999.999.999-99', 2);

-- Inserir itens
INSERT INTO items (sku, nome, categoria, foto_url, ativo, custo_unit) VALUES
('POLO-001', 'Camisa Polo Azul', 'Vestuário', 'https://via.placeholder.com/300x300?text=Polo+Azul', 1, 45.00),
('POLO-002', 'Camisa Polo Branca', 'Vestuário', 'https://via.placeholder.com/300x300?text=Polo+Branca', 1, 45.00),
('CANECA-001', 'Caneca Personalizada', 'Utensílios', 'https://via.placeholder.com/300x300?text=Caneca', 1, 15.00),
('AGENDA-001', 'Agenda 2024', 'Papelaria', 'https://via.placeholder.com/300x300?text=Agenda', 1, 25.00),
('MOUSE-001', 'Mouse Pad Personalizado', 'Informática', 'https://via.placeholder.com/300x300?text=Mouse+Pad', 1, 12.00),
('ECOBAG-001', 'Ecobag Sustentável', 'Acessórios', 'https://via.placeholder.com/300x300?text=Ecobag', 1, 8.00),
('SQUEEZE-001', 'Squeeze 500ml', 'Utensílios', 'https://via.placeholder.com/300x300?text=Squeeze', 1, 18.00),
('BONE-001', 'Boné Personalizado', 'Vestuário', 'https://via.placeholder.com/300x300?text=Bone', 1, 22.00),
('CADERNO-001', 'Caderno Executivo', 'Papelaria', 'https://via.placeholder.com/300x300?text=Caderno', 1, 20.00),
('PENDRIVE-001', 'Pen Drive 16GB', 'Informática', 'https://via.placeholder.com/300x300?text=Pen+Drive', 1, 35.00);

-- Inserir campanhas
INSERT INTO campaigns (nome, inicio_em, fim_em, observacao, ativo) VALUES
('Campanha de Natal 2024', '2024-12-01 00:00:00', '2024-12-31 23:59:59', 'Campanha especial de fim de ano com brindes temáticos', 1),
('Campanha de Aniversário da Empresa', '2024-06-01 00:00:00', '2024-06-30 23:59:59', 'Celebração dos 10 anos da empresa', 1),
('Campanha Volta às Aulas', '2024-01-15 00:00:00', '2024-02-29 23:59:59', 'Itens de papelaria para colaboradores com filhos', 1),
('Campanha Sustentabilidade', '2024-04-01 00:00:00', '2024-04-30 23:59:59', 'Foco em produtos ecológicos e sustentáveis', 1);

-- Inserir regras
INSERT INTO rules (tipo, item_id, campaign_id, pessoa_id, janela, limite_qtd, excecao_permitida) VALUES
-- Regras por item
('por_item', 1, NULL, NULL, 'mes', 2, 1), -- Camisa Polo Azul: 2 por mês
('por_item', 2, NULL, NULL, 'mes', 2, 1), -- Camisa Polo Branca: 2 por mês
('por_item', 3, NULL, NULL, 'mes', 1, 0), -- Caneca: 1 por mês
('por_item', 4, NULL, NULL, 'mes', 1, 1), -- Agenda: 1 por mês
('por_item', 5, NULL, NULL, 'mes', 2, 0), -- Mouse Pad: 2 por mês
('por_item', 6, NULL, NULL, 'mes', 3, 0), -- Ecobag: 3 por mês
('por_item', 7, NULL, NULL, 'mes', 1, 0), -- Squeeze: 1 por mês
('por_item', 8, NULL, NULL, 'mes', 1, 1), -- Boné: 1 por mês
('por_item', 9, NULL, NULL, 'mes', 2, 0), -- Caderno: 2 por mês
('por_item', 10, NULL, NULL, 'mes', 1, 1), -- Pen Drive: 1 por mês

-- Regras por campanha
('por_campanha', NULL, 1, NULL, 'campanha', 5, 1), -- Natal: 5 itens por pessoa
('por_campanha', NULL, 2, NULL, 'campanha', 3, 0), -- Aniversário: 3 itens por pessoa
('por_campanha', NULL, 3, NULL, 'campanha', 2, 0), -- Volta às Aulas: 2 itens por pessoa
('por_campanha', NULL, 4, NULL, 'campanha', 4, 1); -- Sustentabilidade: 4 itens por pessoa

-- Inserir lotes de entrada (batches)
INSERT INTO batches (item_id, fornecedor, lote, qtd_in, unit_cost, expires_at, unidade_id) VALUES
(1, 'Fornecedor A', 'LOTE001', 100, 40.00, '2025-12-31', 1),
(2, 'Fornecedor A', 'LOTE002', 80, 40.00, '2025-12-31', 1),
(3, 'Fornecedor B', 'LOTE003', 200, 12.00, '2026-06-30', 1),
(4, 'Fornecedor C', 'LOTE004', 150, 20.00, '2024-12-31', 1),
(5, 'Fornecedor D', 'LOTE005', 300, 10.00, '2026-12-31', 1),
(6, 'Fornecedor E', 'LOTE006', 500, 6.00, '2025-12-31', 1),
(7, 'Fornecedor B', 'LOTE007', 120, 15.00, '2025-12-31', 1),
(8, 'Fornecedor A', 'LOTE008', 75, 18.00, '2025-12-31', 1),
(9, 'Fornecedor C', 'LOTE009', 200, 16.00, '2025-12-31', 1),
(10, 'Fornecedor F', 'LOTE010', 50, 30.00, '2026-12-31', 1);

-- Inserir movimentações de estoque (entradas)
INSERT INTO stock_moves (item_id, move_type, qty, unidade_id, ref_table, ref_id, created_by) VALUES
(1, 'IN', 100, 1, 'batches', 1, 1),
(2, 'IN', 80, 1, 'batches', 2, 1),
(3, 'IN', 200, 1, 'batches', 3, 1),
(4, 'IN', 150, 1, 'batches', 4, 1),
(5, 'IN', 300, 1, 'batches', 5, 1),
(6, 'IN', 500, 1, 'batches', 6, 1),
(7, 'IN', 120, 1, 'batches', 7, 1),
(8, 'IN', 75, 1, 'batches', 8, 1),
(9, 'IN', 200, 1, 'batches', 9, 1),
(10, 'IN', 50, 1, 'batches', 10, 1);

-- Inserir algumas solicitações de exemplo
INSERT INTO requests (pessoa_id, item_id, campaign_id, qtd, status, created_by, created_at) VALUES
(4, 1, 1, 1, 'aprovado', 4, '2024-12-01 10:00:00'),
(4, 3, NULL, 1, 'pendente', 4, '2024-12-15 14:30:00'),
(5, 2, 1, 1, 'aprovado', 5, '2024-12-02 09:15:00'),
(5, 4, NULL, 1, 'negado', 5, '2024-12-10 16:45:00'),
(6, 6, 4, 2, 'aprovado', 6, '2024-04-05 11:20:00'),
(7, 7, NULL, 1, 'pendente', 7, '2024-12-14 13:10:00'),
(8, 5, NULL, 1, 'aprovado', 8, '2024-12-03 08:30:00'),
(9, 8, 2, 1, 'aprovado', 9, '2024-06-15 15:00:00'),
(10, 9, 3, 1, 'aprovado', 10, '2024-01-20 10:45:00');

-- Inserir algumas entregas de exemplo
INSERT INTO giveaways (request_id, pessoa_id, item_id, campaign_id, qtd, unidade_id, entregue_por, aceite_digital, aceite_ip) VALUES
(1, 4, 1, 1, 1, 1, 2, 1, '192.168.1.100'),
(3, 5, 2, 1, 1, 1, 2, 1, '192.168.1.101'),
(5, 6, 6, 4, 2, 1, 2, 1, '192.168.1.102'),
(7, 8, 5, NULL, 1, 1, 2, 1, '192.168.1.103'),
(8, 9, 8, 2, 1, 1, 2, 1, '192.168.1.104'),
(9, 10, 9, 3, 1, 1, 2, 1, '192.168.1.105');

-- Inserir movimentações de estoque (saídas) correspondentes às entregas
INSERT INTO stock_moves (item_id, move_type, qty, unidade_id, ref_table, ref_id, created_by) VALUES
(1, 'OUT', 1, 1, 'giveaways', 1, 2),
(2, 'OUT', 1, 1, 'giveaways', 2, 2),
(6, 'OUT', 2, 1, 'giveaways', 3, 2),
(5, 'OUT', 1, 1, 'giveaways', 4, 2),
(8, 'OUT', 1, 1, 'giveaways', 5, 2),
(9, 'OUT', 1, 1, 'giveaways', 6, 2);

-- Inserir alguns logs de auditoria de exemplo
INSERT INTO audit_logs (actor_id, entity, entity_id, action, before_json, after_json) VALUES
(1, 'item', 1, 'CREATE', NULL, '{"sku":"POLO-001","nome":"Camisa Polo Azul","categoria":"Vestuário","ativo":1}'),
(1, 'campaign', 1, 'CREATE', NULL, '{"nome":"Campanha de Natal 2024","inicio_em":"2024-12-01","fim_em":"2024-12-31","ativo":1}'),
(2, 'request', 1, 'APPROVAL_APROVADO', NULL, '{"decision":"aprovado","timestamp":"2024-12-01 10:30:00"}'),
(2, 'request', 4, 'APPROVAL_NEGADO', NULL, '{"decision":"negado","reason":"Limite mensal já atingido","timestamp":"2024-12-10 17:00:00"}'),
(2, 'giveaway', 1, 'DELIVERY', NULL, '{"pessoa_id":4,"item_id":1,"quantity":1,"delivery_method":"self_pickup","timestamp":"2024-12-01 11:00:00"}'),
(1, 'stock', 1, 'ADJUSTMENT', NULL, '{"old_stock":99,"new_stock":100,"adjustment":1,"reason":"Correção de inventário","timestamp":"2024-12-05 09:00:00"}');

-- Criar tabela de logs de acesso (para o SecurityService)
CREATE TABLE IF NOT EXISTS `access_logs` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `username` VARCHAR(255) NOT NULL,
  `success` BOOLEAN NOT NULL,
  `ip_address` VARCHAR(45) NOT NULL,
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Inserir alguns logs de acesso de exemplo
INSERT INTO access_logs (username, success, ip_address) VALUES
('000.000.000-01', 1, '192.168.1.100'),
('111.111.111-11', 1, '192.168.1.101'),
('333.333.333-33', 1, '192.168.1.102'),
('444.444.444-44', 1, '192.168.1.103'),
('invalid_user', 0, '192.168.1.200');

-- Comentários sobre os dados inseridos:
-- 
-- PESSOAS:
-- ID 1: Admin Sistema (admin)
-- ID 2: João Operador (operador) 
-- ID 3: Maria Auditora (auditor)
-- ID 4-10: Colaboradores diversos
--
-- ITENS:
-- 10 itens diversos com diferentes categorias e preços
-- Todos ativos e com fotos placeholder
--
-- CAMPANHAS:
-- 4 campanhas temáticas com períodos diferentes
-- 
-- REGRAS:
-- Limites por item (mensais)
-- Limites por campanha
-- Algumas com exceção permitida, outras não
--
-- ESTOQUE:
-- Entradas iniciais para todos os itens
-- Algumas saídas já registradas
-- Saldo atual calculado automaticamente
--
-- SOLICITAÇÕES E ENTREGAS:
-- Exemplos de diferentes status
-- Algumas já entregues, outras pendentes
-- Vinculação com campanhas quando aplicável
--
-- AUDITORIA:
-- Logs de exemplo das principais ações
-- Criação, aprovação, entrega, ajustes

