import os
import sys
import logging
from ftplib import FTP
import psycopg2
import tkinter as tk
from datetime import datetime
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException, WebDriverException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from decimal import Decimal

# webdriver-manager for automatic chromedriver handling
from webdriver_manager.chrome import ChromeDriverManager

# ---------- SETUP LOGGING (PRIMEIRO DE TUDO) ----------
def setup_logging():
    if getattr(sys, 'frozen', False):
        base_dir = os.path.dirname(sys.executable)
    else:
        base_dir = os.path.dirname(os.path.abspath(__file__))

    log_file = os.path.join(base_dir, "monitor.log")

    logging.basicConfig(
        filename=log_file,
        level=logging.INFO,
        format="%(asctime)s - %(levelname)s - %(message)s"
    )

    return log_file

log_file = setup_logging()
logger = logging.getLogger(__name__)
logger.info("Aplicação iniciada")

import funcoes
import config

# ---------- MAIN ----------
def main():
    CHECK_INTERVAL = 5
    driver = None

    funcoes.reset_dsr037()
    
    try:
        while True:
            funcoes.processar_status_3()
            registros = funcoes.conecta_dsr037()

            if not registros:
                logger.info("Nenhum pendente. Aguardando...")
                time.sleep(CHECK_INTERVAL)
                continue

            for registro in registros:
#               registro[""]
                robo = registro["roboxxt037"]
                status = funcoes.pegar_status(robo)
                telefone = funcoes.conecta_dsr035(robo)
                
                logger.warning("%s STATUS", status)  
                logger.warning("%s Telefone", telefone)         
                
                if status == 1:
                    funcoes.calcula_intervalo(
                        registro["datprot037"],
                        registro["horprot037"],
                        registro["roboxxt037"],
                        telefone
                    )
                    logger.info("Telefone: %s", telefone)
                    logger.info("Status: %s", status)
                else:
                    logger.info("Nenhum processo...")

            time.sleep(CHECK_INTERVAL)

    except Exception:
        logger.exception("Erro fatal no main")

    finally:
        if driver:
            driver.quit()

if __name__ == '__main__':
    main()