from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

import pandas as pd
import time
import urllib.request
import requests
from fake_useragent import UserAgent

options = Options()
# options.add_argument('--headless')
# options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

driver.get("https://admin.wls.eims.co.kr/WattageState/Report")

input_id = driver.find_element(By.CLASS_NAME, 'login-userid')
input_password = driver.find_element(By.CLASS_NAME, 'login-password')
login_button = driver.find_element(By.CSS_SELECTOR, "div.col-sm-7.text-right button")


input_id.clear()
input_password.clear()

input_id.send_keys("wl00002")
input_password.send_keys("2666##")

login_button.click()

did_it_logged_in = EC.presence_of_element_located((By.ID, 'data-select2'))

time.sleep(2)
driver.get("https://admin.wls.eims.co.kr/WattageState/Report")
time.sleep(2)

# ---------- gather the data from the website, by company, time_interval, and date

starting_date_input_box = driver.find_element(By.NAME, "from")
end_date_input_box = driver.find_element(By.NAME, "to")

starting_date_input_box.clear()
end_date_input_box.clear()

starting_date_input_box.send_keys("2023-01-01")
end_date_input_box.send_keys("2023-01-31")



drop_down_customer = driver.find_element(By.XPATH, '//select[@data-placeholder="참여고객명"]')
customer_list = drop_down_customer.text.split("\n")[1:]


drop_down_time_interval = driver.find_element(By.XPATH, '//select[@data-placeholder="검침기종류"]')
time_interval_list = drop_down_time_interval.text.split("\n")[1:3]


select = Select(drop_down_customer)

select.select_by_visible_text(customer_list[5])

df = pd.DataFrame(customer_list)
df.to_csv("customer_list.csv", index=False)
df = pd.DataFrame(time_interval_list)
df.to_csv("time_interval_list.csv", index=False)

select = Select(drop_down_time_interval)

select.select_by_visible_text(time_interval_list[0].replace(' ',''))

the_red_button = driver.find_element(By.XPATH, '//button[@ng-click="ctrl.getContractWattageStatistics(ctrl.req)"]')
the_red_button.click()
the_download_button = driver.find_element(By.XPATH, '//a[@class="btn btn-default btn-outline pull-right btn-sm"]')

# time.sleep(3)
wait = WebDriverWait(driver, 10)
href = wait.until(
    lambda driver: the_download_button.get_attribute('href')
)
the_download_button.click()

time.sleep(10)

# this is an attemp to download files with requests, but did not worked...
# print(href)
# # time.sleep(10)
#
# # urllib.request.urlretrieve(href, "test/test.xlsx")
#
# USER_AGENT = UserAgent()
# # fake_browser = USER_AGENT.firefox
# header = {
#     'User-Agent': USER_AGENT.firefox
# }
#
# with open("test/test.xlsx", "wb") as file:
#     r = requests.get(href, headers=header)
#     file.write(r.content)
#
# time.sleep(10000)

# WebDriverWait(driver, 10).until(lambda d: d.find_element(By.CSS_SELECTOR, "div.span.span.select2-selection select2-selection--single"))



print(driver.title)
# driver.close()