<?php
require '../conexao/conexao.php';
require_once '../conexao/logs.php';
session_start();

// Recupera os valores enviados via POST
$id_medico = $_POST['id_medico'] ?? null;
$crm_medicos_str = trim($_POST['medicos'] ?? '');
$crm_medicos = explode(',', $crm_medicos_str);
$produto1 = $_POST['codproduto'] ?? null;
$produto2 = $_POST['codproduto_substituto'] ?? null;
$observacao = $_POST['observacao'] ?? null;
$cadastro = $_POST['cadastro'] ?? null;
$tipo_autorizacao = $_POST['autorizacao'] ?? null;
$query_string = $_POST['url'] ?? null;
$data = date('Y-m-d H:i:s');

// Limpa produtos
if ($produto1) $produto1 = explode(' - ', $produto1)[0];
if ($produto2) $produto2 = explode(' - ', $produto2)[0];

foreach ($crm_medicos as $crm_medico) {
    if (empty($id_medico) || $id_medico == 0) {
        // INSERÇÃO
        $stmt = $connectionmysql->prepare(
            "INSERT INTO medicos_autorizacoes 
             (crm_medico, produto_principal, produto_substituto, tipo_autorizacao, observacao, data, cadastro) 
             VALUES (?, ?, ?, ?, ?, ?, ?)"
        );
        if (!$stmt) die('Erro na preparação do INSERT: ' . $connectionmysql->error);

        $stmt->bind_param(
            'siissss',
            $crm_medico,
            $produto1,
            $produto2,
            $tipo_autorizacao,
            $observacao,
            $data,
            $cadastro
        );

        if (!$stmt->execute()) die('Erro ao executar INSERT: ' . $stmt->error);

        $novo_id = $stmt->insert_id;

        // Dados para log de criação
        if (isset($_SESSION['CodUsuario'], $_SESSION['NomeUsuario'])) {
            $dados_depois = [
                'crm_medico' => $crm_medico,
                'produto_principal' => $produto1,
                'produto_substituto' => $produto2,
                'tipo_autorizacao' => $tipo_autorizacao,
                'observacao' => $observacao,
                'data' => $data,
                'cadastro' => $cadastro
            ];
            registrarLogCriacaoDetalhado(65, $_SESSION['CodUsuario'], $_SESSION['NomeUsuario'], json_encode($dados_depois), $novo_id);
        }

        $stmt->close();
    } else {
        // ATUALIZAÇÃO
        // Busca os dados antes da atualização
        $stmt_sel = $connectionmysql->prepare("SELECT * FROM medicos_autorizacoes WHERE id = ?");
        $stmt_sel->bind_param("i", $id_medico);
        $stmt_sel->execute();
        $dados_antes = $stmt_sel->get_result()->fetch_assoc();
        $stmt_sel->close();

        $stmt = $connectionmysql->prepare(
            "UPDATE medicos_autorizacoes 
             SET crm_medico = ?, produto_principal = ?, produto_substituto = ?, tipo_autorizacao = ?, observacao = ?, data = ?, cadastro = ? 
             WHERE id = ?"
        );
        if (!$stmt) die('Erro na preparação do UPDATE: ' . $connectionmysql->error);

        $stmt->bind_param(
            'siissssi',
            $crm_medico,
            $produto1,
            $produto2,
            $tipo_autorizacao,
            $observacao,
            $data,
            $cadastro,
            $id_medico
        );

        if (!$stmt->execute()) die('Erro ao executar UPDATE: ' . $stmt->error);

        // Dados para log de atualização
        if (isset($_SESSION['CodUsuario'], $_SESSION['NomeUsuario'])) {
            $dados_depois = [
                'crm_medico' => $crm_medico,
                'produto_principal' => $produto1,
                'produto_substituto' => $produto2,
                'tipo_autorizacao' => $tipo_autorizacao,
                'observacao' => $observacao,
                'data' => $data,
                'cadastro' => $cadastro
            ];
            registrarLogAtualizacaoInteligente(65, $_SESSION['CodUsuario'], $_SESSION['NomeUsuario'], $dados_antes, $dados_depois, $id_medico);
        }

        $stmt->close();
    }
}

// Redirecionamento
$location = './index.php?status=sucesso';
if (!empty($query_string)) {
    $location .= '&' . $query_string;
}
header("Location: $location");
exit;
