-- Migration v75: Ponto Eletrônico

CREATE TABLE IF NOT EXISTS `ponto_registros` (
  `id`            int(11)      NOT NULL AUTO_INCREMENT,
  `clinica_id`    int(11)      NOT NULL,
  `usuario_id`    int(11)      NOT NULL,
  `tipo`          ENUM('entrada','saida_almoco','retorno_almoco','saida') NOT NULL,
  `data_hora`     datetime     NOT NULL,
  `latitude`      decimal(10,7) DEFAULT NULL,
  `longitude`     decimal(10,7) DEFAULT NULL,
  `observacao`    varchar(200) DEFAULT NULL,
  `registrado_por` int(11)     DEFAULT NULL COMMENT 'NULL = auto, preenchido = admin ajustou',
  `created_at`    datetime     DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_ponto_usuario` (`usuario_id`, `clinica_id`),
  KEY `idx_ponto_data`    (`data_hora`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `ponto_justificativas` (
  `id`          int(11)  NOT NULL AUTO_INCREMENT,
  `clinica_id`  int(11)  NOT NULL,
  `usuario_id`  int(11)  NOT NULL,
  `data`        date     NOT NULL,
  `tipo`        ENUM('falta','atraso','saida_antecipada','hora_extra') NOT NULL,
  `justificativa` text   NOT NULL,
  `aprovado`    tinyint(1) DEFAULT NULL COMMENT 'NULL=pendente, 1=aprovado, 0=negado',
  `aprovado_por` int(11) DEFAULT NULL,
  `created_at`  datetime DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_just_usuario` (`usuario_id`, `clinica_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT IGNORE INTO `permissoes` (`chave`, `nome`, `descricao`) VALUES
('ponto_view',     'Ponto Eletrônico — Visualizar',  'Visualizar registros de ponto'),
('ponto_registrar','Ponto Eletrônico — Registrar',   'Bater ponto'),
('ponto_gerenciar','Ponto Eletrônico — Gerenciar',   'Ajustar e aprovar ponto de outros');

INSERT IGNORE INTO `perfil_permissoes` (`perfil_id`, `permissao_id`)
SELECT p.id, pm.id FROM `perfis` p, `permissoes` pm
WHERE p.id IN (1) AND pm.chave IN ('ponto_view','ponto_registrar','ponto_gerenciar');

INSERT IGNORE INTO `perfil_permissoes` (`perfil_id`, `permissao_id`)
SELECT p.id, pm.id FROM `perfis` p, `permissoes` pm
WHERE p.id IN (4,5,7) AND pm.chave IN ('ponto_view','ponto_registrar');
