using System;
using System.Linq;
using OpenQA.Selenium;

namespace wispro.sp.utility
{
    public class IPEasyUtility
    {
        public static void DownloadReport(string strId,string filename)
        {
            string strFileSavePath = ConfigHelper.GetSectionValue("IPEasySetting:DownloadFileSavePath");
            bool isheadless = (ConfigHelper.GetSectionValue("IPEasySetting:isHeadless") == "true");
            string Account = ConfigHelper.GetSectionValue("IPEasySetting:Account");
            string Password = ConfigHelper.GetSectionValue("IPEasySetting:Password");

            OpenQA.Selenium.Chrome.ChromeOptions options = new OpenQA.Selenium.Chrome.ChromeOptions();


            options.AddUserProfilePreference("download.default_directory", strFileSavePath);
            options.AddUserProfilePreference("intl.accept_languages", "nl");
            options.AddUserProfilePreference("disable-popup-blocking", "true");
            if (isheadless)
            {
                options.AddArgument("headless");
            }

            using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(ConfigHelper.GetSectionValue("IPEasySetting:ChormeDriverPath"), options))
            {
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(50);
                driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(500);

                //进入登录界面
                driver.Navigate().GoToUrl("http://47.106.221.167/Login.aspx");

                //输入用户名和密码
                driver.FindElement(By.Id("txtUser")).SendKeys(Account);
                driver.FindElement(By.Id("txtPwd")).SendKeys(Password);

                //点击登录按钮
                driver.FindElement(By.Id("btnLogin")).Click();

                //关闭提示遮罩层
                driver.FindElement(By.Id("jpwClose")).Click();

                //点击顶部菜单栏中的报表管理菜单
                driver.FindElement(By.Name("970d33d5-c728-41b8-a060-4330610706b9")).Click();

                //点击左侧 自定义报表 菜单
                driver.FindElement(By.Name("642fa96f-1e1f-46fd-aaa4-cb461ee8df5b")).Click();

                //切换到自定义报表Frame
                driver.SwitchTo().Frame(1);

                //调用报表导出JS
                ((IJavaScriptExecutor)driver).ExecuteScript($"Report.Export('{strId}');");

                //切换到弹出的导出报表窗口，点击导出按钮
                driver.SwitchTo().DefaultContent();
                var ihg_export = driver.FindElement(By.Name("ihg_export"));
                driver.SwitchTo().Frame(ihg_export);
                driver.FindElement(By.Id("btnSubmit")).Click();

                string strFilePath = System.IO.Path.Combine(strFileSavePath, filename);


                while (true)
                {

                    System.IO.FileInfo file = new System.IO.FileInfo(strFilePath);
                    if (!file.Exists || file.Length == 0) { 
                        System.Threading.Thread.Sleep(5000);
                    }
                    else
                    {
                        break;
                    }
                }

            }
        }
    }
}
