# -*- coding: utf-8 -*-
"""
Script para baixar Relatório 103 (Coletas) do SSW via Selenium, enviar via FTP
e em seguida acionar importador PHP online
"""
import time
import os
import glob
import shutil
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from ftplib import FTP
import requests   # <<< adicionado

# === CONFIGURAÇÕES DE LOGIN ===
DOMINIO = 'BMO'
CPF = '25594231897'
USUARIO = "fabio"
SENHA = "26200209"
URL_LOGIN = "https://sistema.ssw.inf.br/bin/ssw0422" # login
URL_RELATORIO = "https://sistema.ssw.inf.br/bin/ssw0166" # relatorio de coletas
URL_EXPORTADOR = "https://lvtbhssw.ksoftlog.com.br/send_ftp_ssw_coleta.php"

# Pasta local onde o SSW salva os arquivos (Downloads do Windows)
PASTA_DOWNLOADS = r"C:\Users\kreat\Downloads"

# FTP Config
FTP_HOST = "ftp.ksoftlog.com.br"
FTP_PORT = 21
FTP_USER = "ksoftlogcom"
FTP_PASS = "#$!@2024_KS_TransportWeb"
FTP_REMOTE_PATH = "/lvtbh_bemol_transportes"

# URL do PHP online (ajuste para o endereço real do seu importador)
# URL_PHP_IMPORTADOR = "https://lvtbhsswteste.ksoftlog.com.br/send_ftp_ssw_coleta.php"

# Data de hoje para o relatório
data_hoje = datetime.today().strftime("%d%m%y")

def executar_exportador():
    try:
        print("Chamando integracao_exporta.php ...")
        resposta = requests.get(URL_EXPORTADOR, timeout=300)
        print("Retorno do exportador:")
        print(resposta.text.strip())
    except Exception as e:
        print("Erro ao chamar integracao_exporta.php:", e)

def enviar_ftp(arquivo_local):
    try:
        ftp = FTP()
        ftp.connect(FTP_HOST, FTP_PORT)
        ftp.login(FTP_USER, FTP_PASS)
        ftp.cwd(FTP_REMOTE_PATH)
        with open(arquivo_local, "rb") as f:
            ftp.storbinary(f"STOR {os.path.basename(arquivo_local)}", f)
        ftp.quit()
        print("Upload para o servidor concluído com sucesso.")
    except Exception as e:
        print("Erro ao enviar via FTP:", e)


def baixar_relatorio_103():
    print("=" * 50)
    print("Iniciando processo...")

    # Configurar o Chrome (visível, pode mudar para headless)
    options = Options()
    # Para headless, descomente a linha abaixo:
    # options.add_argument('--headless')
    options.add_argument("--window-size=800,600")

    driver = webdriver.Chrome(
        service=Service(ChromeDriverManager().install()),
        options=options
    )

    try:
        print("Acessando o sistema...")
        driver.get(URL_LOGIN)
        time.sleep(5)

        print("Realizando login...")
        driver.find_element(By.ID, "1").send_keys(DOMINIO)
        driver.find_element(By.ID, "2").send_keys(CPF)
        driver.find_element(By.ID, "3").send_keys(USUARIO)
        driver.find_element(By.ID, "4").send_keys(SENHA)
        driver.find_element(By.ID, "5").click()
        time.sleep(5)

        print("Acessando o relatório 103...")
        driver.get(URL_RELATORIO)
        time.sleep(5)

        # Ajustar campos do formulário
        excel = driver.find_element(By.ID, "17")
        excel.clear()
        driver.execute_script("arguments[0].value='E';", excel)

        # Datas fixas para teste acionar apenas debug
        # data_inicio_valor = "230126"
        # data_fim_valor    = "240126"

        data_inicio = driver.find_element(By.ID, "14")
        data_inicio.clear()
        driver.execute_script(f"arguments[0].value='{data_hoje}';", data_inicio)

        data_fim = driver.find_element(By.ID, "15")
        data_fim.clear()
        driver.execute_script(f"arguments[0].value='{data_hoje}';", data_fim)

        relatorio = driver.find_element(By.ID, "20")
        driver.execute_script("arguments[0].click();", relatorio)

        print("Aguardando download do arquivo...")
        time.sleep(10)  # aguardar download do SSW

        # Identificar arquivo gerado e renomear
        lista_arquivos = glob.glob(os.path.join(PASTA_DOWNLOADS, "CSVssw0166BMO*.sswweb"))
        if not lista_arquivos:
            print("Erro: nenhum arquivo gerado encontrado.")
            return

        arquivo_mais_recente = max(lista_arquivos, key=os.path.getctime)

        # Renomear para nome fixo .csv
        nome_arquivo_csv = f"relatorio_lvtbh_bmo_103_{data_hoje}.csv"
        caminho_arquivo_csv = os.path.join(PASTA_DOWNLOADS, nome_arquivo_csv)
        shutil.move(arquivo_mais_recente, caminho_arquivo_csv)
        print(f"Arquivo renomeado para: {caminho_arquivo_csv}")

        # Enviar via FTP
        enviar_ftp(caminho_arquivo_csv)

        # Executar PHP online
        # executar_php_online()

        # Executar ssw_coleta
        executar_exportador()


    finally:
        print("Fechando navegador...")
        driver.quit()
        print("Processo finalizado.")


# === EXECUÇÃO ÚNICA PARA TESTE ===
baixar_relatorio_103()
