import requests
import json
import logging
from datetime import datetime

# Configuração de log
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def get_token():
    # Aqui você deve incluir o código para recuperar o token
    return "seu_token_aqui"

def fetch_data_from_api(ini_date, fin_date, page=0, size=50):
    token = get_token()  # Assumindo que o token é recuperado aqui
    url = "https://api.example.com/Datashare/RevenueManagement/OccupationInventory"
    headers = {
        "X-API-VERSION": "1",
        "X-API-TENANT-NAME": "thecoralbeachresort",
        "X-API-PROPERTY-CODE": "1",
        "X-API-PARTNER-USERID": "0",
        "X-API-LANGUAGE-CODE": "pt-br",
        "X-Client-Id": "THECORALBR",
        "Authorization": f"Bearer {token}"
    }

    params = {
        "IniDate": ini_date,
        "FinDate": fin_date,
        "Page": page,
        "Size": size
    }

    response = requests.get(url, headers=headers, params=params)

    if response.status_code == 200:
        data = response.json()
        logging.info(f"Dados recuperados com sucesso: Página {page}, {len(data)} registros.")
        return data
    else:
        logging.error(f"Erro ao buscar dados: {response.status_code}, {response.text}")
        return []

def save_data_to_file(data):
    with open('occupation_inventory_full.json', 'w', encoding='utf-8') as file:
        json.dump(data, file, ensure_ascii=False, indent=4)
    logging.info("Arquivo occupation_inventory_full.json salvo com sucesso.")

def fetch_all_data(ini_date, fin_date):
    page = 0
    all_data = []

    while True:
        data = fetch_data_from_api(ini_date, fin_date, page)
        if not data:
            break
        all_data.extend(data)
        page += 1

    save_data_to_file(all_data)
    logging.info(f"Total de dados coletados: {len(all_data)} registros.")

if __name__ == '__main__':
    ini_date = "2024-01-01T00:00:00"
    fin_date = "2025-12-31T23:59:59"
    fetch_all_data(ini_date, fin_date)
