#!/bin/bash

# Configurações
API_URL_EMPRESAS="https://devapi.clicklifee.com/api/empresas/obterporcnpj"
API_URL_COLABORADORES="https://devapi.clicklifee.com/api/empresas/obterporcolaborador"
CSV_INPUT="input.csv"
CSV_OUTPUT="output.csv"

# Configuração do sqlcmd
SQLCMD="sqlcmd -S clicklifeesqlsrvprd.database.windows.net -d clicklifeesqlprd -U adminclicklifee -P 9iVgJeJ4djLj_aAzP3lxiakoGP2p8_j8XWzR -s, -W"

# Função para enviar uma solicitação POST e retornar a resposta
function post_request() {
    local url=$1
    local data=$2
    response=$(curl -s -X POST "$url" -H "Content-Type: application/json" -d "$data")
    echo "$response"
}

# Função para consultar a empresa pelo CNPJ
function get_empresa_id() {
    local cnpj=$1
    echo "Enviando solicitação para CNPJ: $cnpj"
    
    # Cria o corpo da solicitação JSON
    local json="{\"cnpj\": \"$cnpj\"}"
    
    echo "Corpo da solicitação: $json"
    response=$(post_request "$API_URL_EMPRESAS" "$json")
    
    # Depurar a resposta
    echo "Resposta recebida: $response"
    
    # Extrair o ID usando jq
    local empresa_id=$(echo "$response" | jq -r '.data.id')
    
    # Verificar se empresa_id foi extraído corretamente
    if [ "$empresa_id" == "null" ] || [ -z "$empresa_id" ]; then
        echo "Erro: Não foi possível encontrar o ID da empresa na resposta."
    fi

    echo "Empresa ID: $empresa_id"
    echo "$empresa_id"
}

# Função para consultar todos os CPFs da tabela Colaboradores
function get_cpfs_by_empresa_id() {
    local empresa_id=$1
    local query="SELECT Cpf FROM Colaboradores WHERE EmpresaId = '$empresa_id';"
    $SQLCMD -Q "$query" -h -1
}

# Função para consultar detalhes do colaborador pelo CPF
function get_colaborador_details() {
    local cpf=$1
    
    # Cria o corpo da solicitação JSON
    local json="{\"cpf\": \"$cpf\"}"
    
    echo "Enviando solicitação para CPF: $cpf"
    echo "Corpo da solicitação: $json"
    response=$(post_request "$API_URL_COLABORADORES" "$json")
    
    # Depurar a resposta
    echo "Resposta recebida: $response"
    
    # Extrair nome e paciente_id usando jq
    local nome=$(echo "$response" | jq -r '.data.Nome')
    local paciente_id=$(echo "$response" | jq -r '.data.PacienteId')
    
    echo "Nome: $nome, Paciente ID: $paciente_id"
    echo "$nome,$paciente_id"
}

# Função para consultar atendimentos pelo PacienteId
function get_atendimentos_by_paciente_id() {
    local paciente_id=$1
    local query="SELECT Id, DataInicioAtendimento FROM Atendimentos WHERE PacienteId = '$paciente_id';"
    $SQLCMD -Q "$query" -h -1
}

# Limpar arquivo de saída
echo "Cpf,Nome,Atendimento,Data" > "$CSV_OUTPUT"

# Processar o CSV de entrada
while IFS=, read -r cnpj; do
    echo "Consultando CNPJ: $cnpj"
    # Formatar o CNPJ corretamente, se necessário
    empresa_id=$(get_empresa_id "$cnpj")
    
    if [ "$empresa_id" != "null" ] && [ -n "$empresa_id" ]; then
        echo "Empresa ID encontrado: $empresa_id"

        # Obter CPFs relacionados
        cpfs=$(get_cpfs_by_empresa_id "$empresa_id")
        
        while IFS=, read -r cpf; do
            echo "Consultando CPF: $cpf"
            colaborador_details=$(get_colaborador_details "$cpf")
            nome=$(echo "$colaborador_details" | cut -d',' -f1)
            paciente_id=$(echo "$colaborador_details" | cut -d',' -f2)

            if [ "$paciente_id" != "null" ] && [ -n "$paciente_id" ]; then
                echo "Paciente ID encontrado: $paciente_id"

                # Consultar atendimentos
                atendimentos=$(get_atendimentos_by_paciente_id "$paciente_id")

                while IFS=, read -r atendimento_id data_inicio; do
                    echo "$cpf,$nome,$atendimento_id,$data_inicio" >> "$CSV_OUTPUT"
                done <<< "$atendimentos"
            else
                echo "Paciente ID não encontrado para CPF: $cpf"
            fi
        done <<< "$cpfs"
    else
        echo "Empresa ID não encontrado para CNPJ: $cnpj"
    fi
done < "$CSV_INPUT"

echo "Dados exportados com sucesso para $CSV_OUTPUT."
