import sys
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from datetime import datetime
from selenium.webdriver.support.expected_conditions import (
    new_window_is_opened
)
from pathlib import Path
from datetime import timedelta  
import os
import shutil

now = datetime.now()
current_time = now.strftime("%H:%M:%S")
valor = ""

argsv = sys.argv
print(argsv)



#parametros =  "C:\\Users\\renan.dev\\Downloads\\"
parametros = argsv[1]
aPar = parametros.split(";")
pasta_p = aPar[0]
pastaRelatorio_p = aPar[1]
cnpj_p = aPar[2]
data_emissao_ini_p = aPar[3]
data_emissao_fim_p = aPar[4]


def salvaArquivo():
    arquivoDownload = pasta_p + "\\downloading.dat" 
    while os.path.isfile(arquivoDownload):
        print("verificando aquivos pendentes para download")
        time.sleep(1)

    f = open(arquivoDownload, "a")
    f.write("aguardando...")
    f.close()

    #baixar
    baixar = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "6")))
    baixar.click()

    time.sleep(3)

    data_criacao = lambda f: f.stat().st_ctime
    data_modificacao = lambda f: f.stat().st_mtime

    directory = Path(pasta_p)
    files = directory.glob('Boleto*.pdf')
    sorted_files = sorted(files, key=data_modificacao, reverse=True)
    relatorioArquivo = ""
    for f in sorted_files:
        relatorioArquivo = f
        break
  
    current_time = datetime.now()
    time_stamp = current_time.timestamp()
    tempo =  str(time_stamp)
    nomeRelatorioCnpj =  "Boleto_" + cnpj_p + "_" + tempo +  ".pdf"
    print(nomeRelatorioCnpj)
    link = "http://143.0.120.38:8083/api/bot/executa/baixar/"+nomeRelatorioCnpj

    dirName, arquivoName = os.path.split(relatorioArquivo)
    strArquivoRelatorio = dirName+"\\"+nomeRelatorioCnpj
    destino = strArquivoRelatorio
    if os.path.isfile(relatorioArquivo):
        os.rename(relatorioArquivo, destino)

    print(destino)
    shutil.copyfile(destino, pastaRelatorio_p + "\\" + nomeRelatorioCnpj)
    os.remove(arquivoDownload)
    
    return link


#browser = webdriver.Chrome(chrome_options=options)
browser = webdriver.Chrome()
wdw = WebDriverWait(browser,5)

cpf_p ="58557822049"
usuario_p = "Clara"
senha_p = "cbloatra"
dominio_p = "ACV"
browser.get('https://sistema.ssw.inf.br/bin/ssw0422')

dominio = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "f1")))
dominio.clear()
dominio.send_keys(dominio_p)

cpf = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "f2")))
cpf.clear()
cpf.send_keys(cpf_p)
    
usuario = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "f3")))
usuario.clear()
usuario.send_keys(usuario_p)

senha = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "f4")))
senha.clear()
senha.send_keys(senha_p)

entrar = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "5")))
entrar.click()

time.sleep(2)

unidade = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "f2")))
unidade.clear()
unidade.send_keys("MTZ")

menu = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "f3")))
menu.clear()
menu.send_keys("457")

wdw.until(
    new_window_is_opened(browser.window_handles)    
)

browser.switch_to.window(browser.window_handles[-1] )

data = datetime.now() - timedelta(days=30) 
dataInicial_p = data.strftime("%d%m%y")
dataFinal_p  = now.strftime("%d%m%y")

#periodo de pesquisa
periodo_pesquisa_inicial = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "t_data_pes_ini")))
periodo_pesquisa_inicial.clear()
time.sleep(0.5)
periodo_pesquisa_final = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "t_data_pes_fin")))
periodo_pesquisa_final.clear()
time.sleep(0.5)
#cnpj pagador
cnpj_pagador = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "t_cnpj_sacado")))
cnpj_pagador.clear()
cnpj_pagador.send_keys(cnpj_p)
time.sleep(0.5)
#data de emissao
data_emissao_ini = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "t_data_emi_ini1")))
data_emissao_ini.clear()
data_emissao_ini.send_keys(data_emissao_ini_p)
time.sleep(0.5)
data_emissao_fim = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "t_data_emi_fin1")))
data_emissao_fim.clear()
data_emissao_fim.send_keys(data_emissao_fim_p)
time.sleep(0.5)
#selecionar liquidado
selecionar_liquidado = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, "t_liqui1")))
selecionar_liquidado.clear()
time.sleep(0.5)
#play
exec = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "10")))
exec.click()

time.sleep(2)

browser.switch_to.window(browser.window_handles[-1] )

try:
    tabela = WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, "tblsr")) )
    linhas = tabela.find_elements(By.TAG_NAME, "tr")
    jsonFaturas = ""
    for linha in  linhas:
        browser.switch_to.window(browser.window_handles[-1] )
        colunas = linha.find_elements(By.TAG_NAME, "td")
        if (colunas[0].text != "Fatura"):
            jsonFaturas = jsonFaturas + "{"
            numerofatura = colunas[0].text
            print(numerofatura)
            fatura = colunas[0].find_elements(By.TAG_NAME, "a")
            fatura[0].click()
            time.sleep(2)
            browser.switch_to.window(browser.window_handles[-1] )
            numero = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="frm"]/div[2]')))
            vencimento = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="frm"]/div[15]')))
            valor = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="frm"]/div[26]')))
            jsonFaturas = jsonFaturas + '"numero":"' + numero.text + '",'
            jsonFaturas = jsonFaturas + '"vencimento":"' + vencimento.text + '",'
            jsonFaturas = jsonFaturas + '"valor":"' + valor.text + '",'
            jsonFaturas = jsonFaturas + '"link":"' +  salvaArquivo() + '"'
            jsonFaturas = jsonFaturas + "},"
            
        
                
            browser.close()
    jsonFaturas = jsonFaturas[:-1]            
except:
    numero = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="frm"]/div[2]')))
    vencimento = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="frm"]/div[15]')))
    valor = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="frm"]/div[26]')))
    jsonFaturas = ""
    jsonFaturas = jsonFaturas + '{"numero":"' + numero.text + '",'
    jsonFaturas = jsonFaturas + '"vencimento":"' + vencimento.text + '",'
    jsonFaturas = jsonFaturas + '"valor":"' + valor.text + '",'
    jsonFaturas = jsonFaturas + '"link":"' +  salvaArquivo() + '"'
    jsonFaturas = jsonFaturas + "}"
         

json = 'faturas:{"documento":"' + cnpj_p + '",'
json = json + '"faturas":[' + jsonFaturas + ']}'

print(json)
#----------------------------------
#aguardar = input("tecla qualquer coisa!!!")
browser.quit()
sys.exit()

