/// <summary>
        /// Upload hình lấy thông tin từ file Excel
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpdateAll_Click(object sender, EventArgs e)
        {
            //Check data
            if (dtDataTemp.Rows.Count == 0)
            {
                XtraMessageBox.Show("Not found data!", "Message");
                return;
            }
            //Check data
            if (dtDataTempColor.Rows.Count == 0)
            {
                XtraMessageBox.Show("No themes selected!", "Message");
                return;
            }
            panelControlAction.Enabled = false;
            Thread t = new Thread(new ThreadStart(() =>
            {
                foreach (DataRow dr in dtDataTemp.Rows)
                {
                    try
                    {
                        CoreLibary.writeLogThread(lsBoxLog, "Uploading " + dr["Title"].ToString(), 3);
                        UploadAndDownload(dr);
                        CoreLibary.writeLogThread(lsBoxLog, "Uploaded " + dr["Title"].ToString(), 1);
                    }
                    catch (Exception ex)
                    {
                        CoreLibary.writeLogThread(lsBoxLog, "Upload Error: " + ex.Message, 2);
                    }
                }
                panelControlAction.Invoke((MethodInvoker) delegate { panelControlAction.Enabled = true; });
            }));

            t.Start();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //Tạo folder save file sau khi upload thành công
            if (!Directory.Exists(dirSaveImageSunUploaded))
            {
                Directory.CreateDirectory(dirSaveImageSunUploaded);
            }
            if (!Directory.Exists(dirSaveImageUploaded))
            {
                Directory.CreateDirectory(dirSaveImageUploaded);
            }
            //clearContent();
            //Khởi tạo dtDataTempColor
            dtDataTempColor = new DataTable();
            dtDataTempColor.Columns.AddRange(new DataColumn[] {
                new DataColumn("Id"), new DataColumn("Name"), new DataColumn("Price")
                , new DataColumn("Color1"), new DataColumn("Color2")
                , new DataColumn("Color3"), new DataColumn("Color4")
                , new DataColumn("Color5")
            });
            //Khởi tạo dtDataTemp
            dtDataTemp = new DataTable();
            dtDataTemp.Columns.AddRange(new DataColumn[] {
                new DataColumn("FrontBack"), new DataColumn("Image")
                , new DataColumn("Title"), new DataColumn("Category")
                , new DataColumn("Description"), new DataColumn("Keyword")
                , new DataColumn("Collection"), new DataColumn("Status")
            });

            lsCategory        = objCategory.getListCategory();
            lsCategoryProduct = objCategory.getListCategoryProduct();

            info_cbbCategory.Properties.DataSource    = lsCategoryProduct;
            info_cbbCategory.Properties.DisplayMember = "Name";
            info_cbbCategory.Properties.ValueMember   = "Id";

            cbbCategory.Properties.DataSource    = lsCategory;
            cbbCategory.Properties.DisplayMember = "Name";
            cbbCategory.Properties.ValueMember   = "Id";

            cbbCategory.ItemIndex      = 0;
            info_cbbCategory.ItemIndex = 0;

            cookieContainer = new CookieContainer();
            if (cookieContainer.Count == 0)
            {
                CoreLibary.writeLog(lsBoxLog, "Your session has expired and you are no longer logged in.", 1);
                groupControlInfo.Enabled = groupControlSelectTheme.Enabled = groupControlTheme.Enabled = panelControlAction.Enabled = false;
            }
        }
 /// <summary>
 /// Chuyển hình đã upload lên Sunfrog vào folder khác
 /// </summary>
 /// <param name="fileName">đường dẫn hình hiện tại</param>
 private void moveImageUploaded(string fileName)
 {
     try
     {
         if (File.Exists(fileName))
         {
             string newFileName = dirSaveImageUploaded + Path.GetFileName(fileName);
             File.Move(fileName, newFileName);
         }
     }
     catch (Exception ex)
     {
         CoreLibary.writeLogThread(lsBoxLog, ex.Message, 2);
     }
 }
 /// <summary>
 /// Chọn file Excel chứa dữ liệu cần upload
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnOpenFileExcel_Click(object sender, EventArgs e)
 {
     try
     {
         OpenFileDialog op = new OpenFileDialog();
         op.Filter = "Excel .xlsx|*.xlsx|Excel .xls|*.xls";
         if (DialogResult.OK == op.ShowDialog())
         {
             txtPath.Text = op.FileName;
             dtDataTemp   = new DataTable();
             dtDataTemp   = CoreLibary.getDataExcelFromFileToDataTable(op.FileName);
             CoreLibary.writeLog(lsBoxLog, "Success " + dtDataTemp.Rows.Count + " record(s) is opened", 1);
         }
     }
     catch (Exception ex)
     {
         XtraMessageBox.Show("Error: " + ex.Message);
     }
 }
        /// <summary>
        /// Lấy chuỗi json màu sắc và danh mục
        /// </summary>
        /// <returns>Chuỗi json các màu sắc và category đã chọn</returns>
        private string getListTheme()
        {
            //  themes = "{\"id\":8,\"name\":\"Guys Tee\",\"price\":19,\"colors\":[\"Orange\",\"Yellow\"]}";
            string result = "[";

            foreach (DataRow drTheme in dtDataTempColor.Rows)
            {
                var color = "";
                result += "{\"id\": " + drTheme["Id"] + ", \"name\": \"" + drTheme["Name"] + "\", \"price\": " + drTheme["Price"] + ",";
                result += "\"colors\":[";
                if (!string.IsNullOrEmpty(drTheme["Color1"].ToString()))
                {
                    color += drTheme["Color1"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color2"].ToString()))
                {
                    color += drTheme["Color2"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color3"].ToString()))
                {
                    color += drTheme["Color3"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color4"].ToString()))
                {
                    color += drTheme["Color4"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color5"].ToString()))
                {
                    color += drTheme["Color5"].ToString() + ",";
                }
                result += CoreLibary.convertStringToJson(color);
                result += "]";
                result += "},";
            }
            result  = result.TrimEnd(',');
            result += "]";
            return(result);
        }
        /// <summary>
        /// Lấy chuỗi json màu sắc và danh mục
        /// </summary>
        /// <returns>Chuỗi json các màu sắc và category đã chọn</returns>
        private List <string> getListThemeObject()
        {
            List <string> data = new List <string>();

            //  themes = "{\"id\":8,\"name\":\"Guys Tee\",\"price\":19,\"colors\":[\"Orange\",\"Yellow\"]}";
            foreach (DataRow drTheme in dtDataTempColor.Rows)
            {
                var result = "";
                var color  = "";
                result += "{\"id\": " + drTheme["Id"] + ", \"name\": \"" + drTheme["Name"] + "\", \"price\": " + drTheme["Price"] + ",";
                result += "\"colors\":[";
                if (!string.IsNullOrEmpty(drTheme["Color1"].ToString()))
                {
                    color += drTheme["Color1"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color2"].ToString()))
                {
                    color += drTheme["Color2"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color3"].ToString()))
                {
                    color += drTheme["Color3"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color4"].ToString()))
                {
                    color += drTheme["Color4"].ToString() + ",";
                }
                if (!string.IsNullOrEmpty(drTheme["Color5"].ToString()))
                {
                    color += drTheme["Color5"].ToString() + ",";
                }
                result += CoreLibary.convertStringToJson(color);
                result += "]}";
                data.Add(result);
            }
            return(data);
        }
        /// <summary>
        /// Upload file to Sunfrog
        /// </summary>
        /// <param name="dr">Nội dụng dữ liệu cần upload</param>
        private void UploadAndDownload(DataRow dr)
        {
            //Config Data
            var frontbackImage = dr["FrontBack"].ToString().Trim();
            var pathImage      = dr["Image"].ToString().Trim();
            var title          = dr["Title"].ToString().Trim();
            var category       = getIDCategory(dr["Category"].ToString().Trim());
            var description    = dr["Description"].ToString().Trim();
            var keyword        = CoreLibary.convertStringToJson(dr["Keyword"].ToString().Trim());
            var collection     = dr["Collection"].ToString().Trim();
            var themes         = getListTheme();
            var imgBase64      = CoreLibary.ConvertImageToBase64(pathImage);

            //themes = "{\"id\":8,\"name\":\"Guys Tee\",\"price\":19,\"colors\":[\"Orange\",\"Yellow\"]}";
            //themes += ",{\"id\":19,\"name\":\"Hoodie\",\"price\":34,\"colors\":[\"White\",\"Green\"]}";
            //2. Upload Image
            var strBack  = "";
            var strFront = "";

            if (frontbackImage == "B")
            {
                strBack = "";// Resources.ImageBack;
            }
            else
            {
                strFront = "";// Resources.ImageFront;
            }
            var dataToSend = "";

            dataToSend  = "{";
            dataToSend += "\"ArtOwnerID\":\"0\",\"IAgree\":\"true\"";
            dataToSend += ",\"Title\":\"" + title + "\"";
            dataToSend += ",\"Category\":\"" + category + "\"";
            dataToSend += ",\"Description\":\"" + description + "\"";
            dataToSend += ",\"Collections\":\"" + collection + "\"";
            dataToSend += ",\"Keywords\": [" + keyword + "]";
            dataToSend += ",\"imageFront\":\"" + strFront + "\"";
            dataToSend += ",\"imageBack\":\"" + strBack + "\"";
            dataToSend += ",\"types\":" + themes;
            dataToSend += ",\"images\":[{\"id\":\"__dataURI: 0__\",\"uri\":\"data:image/png;base64," + imgBase64 + "\"}]";
            dataToSend += "}";

            byte[] postDataBytes2 = Encoding.ASCII.GetBytes(dataToSend);
            string getUrl         = "https://manager.sunfrogshirts.com/Designer/php/upload-handler.cfm";

            HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(getUrl);

            //getRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0";
            //getRequest.Accept = "*/*";
            getRequest.Method = "POST";
            //getRequest.AllowWriteStreamBuffering = true;
            //getRequest.AllowAutoRedirect = true;
            getRequest.Host = "manager.sunfrogshirts.com";
            getRequest.Headers.Add("X-Requested-With", "XMLHttpRequest");
            //getRequest.Headers.Add("Accept-Language", "vi-VN,vi;q=0.8,en-US;q=0.5,en;q=0.3");
            //getRequest.Headers.Add("Accept-Encoding", "gzip, deflate, br");
            getRequest.ContentType     = "application/json; charset=UTF-8";
            getRequest.Referer         = "https://manager.sunfrogshirts.com/Designer/";
            getRequest.CookieContainer = cookieContainer;
            getRequest.ContentLength   = postDataBytes2.Length;
            getRequest.Headers.Add("Origin", "https://sunfrogshirts.com");
            getRequest.KeepAlive = true;

            using (Stream sr = getRequest.GetRequestStream())
            {
                //sr.Write(dataToSend);
                sr.Write(postDataBytes2, 0, postDataBytes2.Length);
                sr.Flush();
                sr.Close();
            }
            HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
            string          sourceCode  = "";

            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                sourceCode = sr.ReadToEnd();
            }

            //Dictionary<string, object> dataUpload = PostDataAPI(getRequest, dataToSend);
            //if (int.Parse(dataUpload["status"].ToString()) == -1)
            //{
            //    CoreLibary.writeLogThread(lsBoxLog, "Step 2: " + dataUpload["data"].ToString(), 1);
            //}
            //sourceCode = dataUpload["data"].ToString();
            var obj = JObject.Parse(sourceCode);

            if (int.Parse(obj["result"].ToString()) == 0)
            {
                CoreLibary.writeLogThread(lsBoxLog, "Collection:" + obj["collectionName"].ToString() + " - " + obj["description"].ToString(), 2);
            }
            else
            {
                CoreLibary.writeLogThread(lsBoxLog, "Uploaded " + obj["description"].ToString(), 1);
            }
            //Chuyển hình sang folder Uploaded
            //moveImageUploaded(pathImage);
        }
        /// <summary>
        /// Upload 1 hình
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (dtDataTempColor.Rows.Count == 0)
            {
                XtraMessageBox.Show("No themes selected!", "Message");
                return;
            }
            var title       = info_txtTitle.Text.Trim();
            var obj         = info_cbbCategory.GetSelectedDataRow();
            var category    = ((SunfrogShirts.Category)obj).Name;
            var description = info_txtDescription.Text.Trim();
            var keyword     = info_txtKeyWord.Text.Trim();
            var collection  = info_txtCollection.Text.Trim();

            if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(description) ||
                string.IsNullOrEmpty(keyword) || string.IsNullOrEmpty(collection) ||
                string.IsNullOrEmpty(currentImageUploadOne))
            {
                XtraMessageBox.Show("Title, Description, Keyword, Collection and Image is not empty.", "Message");
                return;
            }
            panelControlAction.Enabled = false;
            Thread t = new Thread(new ThreadStart(() =>
            {
                try
                {
                    dtDataTemp.Rows.Clear();
                    DataRow dr = dtDataTemp.NewRow();
                    //Load Data
                    if (info_ckFront.Checked)
                    {
                        dr["FrontBack"] = "F";
                    }
                    else
                    {
                        dr["FrontBack"] = "B";
                    }
                    dr["Image"]       = currentImageUploadOne;
                    dr["Title"]       = title;
                    dr["Category"]    = category;
                    dr["Description"] = description;
                    dr["Keyword"]     = keyword;
                    dr["Collection"]  = collection;
                    dtDataTemp.Rows.Add(dr);
                    DataRow drItem = dtDataTemp.Rows[0];

                    CoreLibary.writeLogThread(lsBoxLog, "Uploading Item " + drItem[2].ToString(), 3);
                    UploadAndDownload(drItem);
                    CoreLibary.writeLogThread(lsBoxLog, "Uploaded Item " + drItem[2].ToString(), 1);
                }
                catch (Exception ex)
                {
                    CoreLibary.writeLogThread(lsBoxLog, "Uploaded image to Sunfrog", 2);
                    CoreLibary.writeLogThread(lsBoxLog, ex.Message, 2);
                    XtraMessageBox.Show("Upload failed.\n" + ex.Message, "Message");
                }
                panelControlAction.Invoke((MethodInvoker) delegate { panelControlAction.Enabled = true; });
            }));

            t.Start();
        }
        /// <summary>
        /// Đăng nhập vào chương trình
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            frmWait frm = new frmWait();

            frm.SetCaption("Connecting To Server");
            frm.SetDescription("Please wait...");
            Thread t = new Thread(new ThreadStart(() =>
            {
                HttpWebRequest wRequest1 = (HttpWebRequest)WebRequest.Create("https://manager.sunfrogshirts.com/");
                //wRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0";
                //wRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                //wRequest.Referer = "https://manager.sunfrogshirts.com/";
                wRequest1.Method = "GET";
                //wRequest.KeepAlive = true;lo
                wRequest1.CookieContainer = cookieContainer;
                var cookieHeader1         = "";
                WebResponse resp1         = wRequest1.GetResponse();
                cookieHeader1             = resp1.Headers["Set-cookie"];

                foreach (Cookie cookie in ((HttpWebResponse)resp1).Cookies)
                {
                    cookieContainer.Add(cookie);
                }


                var userName = sys_txtAccount.Text;
                var password = sys_txtPassword.Text;
                //data
                //username=lchoang1995%40gmail.com&password=Omega%40111&login=Login
                ASCIIEncoding encoding = new ASCIIEncoding();
                var enUserName         = HttpUtility.UrlEncode(userName);
                var enPassword         = HttpUtility.UrlEncode(password);
                string data            = "username="******"&password="******"&login=Login";
                byte[] postDataBytes   = encoding.GetBytes(data);

                HttpWebRequest wRequest = (HttpWebRequest)WebRequest.Create("https://manager.sunfrogshirts.com/");
                //wRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0";
                //wRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                //wRequest.Referer = "https://manager.sunfrogshirts.com/";
                wRequest.Method        = "POST";
                wRequest.ContentType   = "application/x-www-form-urlencoded";
                wRequest.ContentLength = postDataBytes.Length;
                //wRequest.KeepAlive = true;lo
                wRequest.CookieContainer = cookieContainer;

                using (Stream sr = wRequest.GetRequestStream())
                {
                    sr.Write(postDataBytes, 0, postDataBytes.Length);
                }
                var cookieHeader = "";
                WebResponse resp = wRequest.GetResponse();
                cookieHeader     = resp.Headers["Set-cookie"];
                //cookieContainer = new CookieContainer();
                //foreach (Cookie cookie in ((HttpWebResponse)resp).Cookies)
                //{
                //    cookieContainer.Add(cookie);
                //}

                var pageSource = "";
                using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
                {
                    pageSource = sr.ReadToEnd();
                }
                //<strong style="font-size:1.5em; line-height:15px; padding-bottom:0px;" class="clearfix">(.*?)</strong>
                var regex = "<strong style=\"font-size:1.5em; line-height:15px; padding-bottom:0px;\" class=\"clearfix\">(?<myId>.*?)</strong>";
                MatchCollection matchCollection = Regex.Matches(pageSource, regex);

                if (matchCollection.Count == 0)
                {
                    XtraMessageBox.Show("Login is disabled, and the password is incorrect!", "Message");
                    frm.Invoke((MethodInvoker) delegate { frm.Close(); });
                    imgLogo.Invoke((MethodInvoker) delegate { imgLogo.Visible = false; });
                    CoreLibary.writeLogThread(lsBoxLog, "User Login", 2);
                    return;
                }
                foreach (Match match in matchCollection)
                {
                    this.Invoke((MethodInvoker) delegate { this.Text += " - [Your Seller ID: " + match.Groups["myId"].Value + "]"; });
                }
                frm.Invoke((MethodInvoker) delegate { frm.Close(); });
                imgLogo.Invoke((MethodInvoker) delegate { imgLogo.Visible = true; });
                groupControlInfo.Invoke((MethodInvoker) delegate { groupControlInfo.Enabled = true; });
                groupControlSelectTheme.Invoke((MethodInvoker) delegate { groupControlSelectTheme.Enabled = true; });
                groupControlTheme.Invoke((MethodInvoker) delegate { groupControlTheme.Enabled = true; });
                panelControlAction.Invoke((MethodInvoker) delegate { panelControlAction.Enabled = true; });
                CoreLibary.writeLogThread(lsBoxLog, "User Login", 1);
            }));

            t.Start();
            frm.ShowDialog();
        }
 /// <summary>
 /// Clear log
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnClear_Click(object sender, EventArgs e)
 {
     lsBoxLog.Items.Clear();
     CoreLibary.writeLog(lsBoxLog, "CLEAR", 1);
 }