public static Location GetLocation(string province, string amphur, int pacelNo) { var loc = new Location(); using (var ctx = new FRESContext()) { loc = ctx.Location.Where(x => x.Amphur == amphur && x.Province == province && x.ParcelCode == pacelNo && x.Lat != 0 && x.Lon != 0).FirstOrDefault(); if (loc != null) { return loc; } } return loc; }
public Location GetLocation(string url, string province, string district, string[] parcelNos) { var loc = new Location(); if (parcelNos == null) { return null; } var result = parcelNos.Select(x => GetLocation(url, province, district, x)).Where(x => x.Lat != 0 && x.Lon != 0); if (result != null) { loc = parcelNos.Select(x => GetLocation(url, province, district, x)).ToList().Where(x => x.Lat != 0 && x.Lon != 0).FirstOrDefault(); } return loc; }
public static int InsertLocation(Location loc) { var count = 0; using (var ctx = new FRESContext()) { ctx.Location.Add(loc); count = ctx.SaveChanges(); if (count == 0) throw new Exception("Row affected is 0"); } return count; }
public Location GetLocation(string urlRe, string province, string district, string pacelNo) { var result = new Location(); var parcel = 0; if (string.IsNullOrEmpty(province) || string.IsNullOrEmpty(district) || string.IsNullOrEmpty(pacelNo)) { return result; } if (pacelNo.Contains("-")) { var stat = int.TryParse(pacelNo.Split('-')[0], out parcel); if (!stat) return result; } else { var stat = int.TryParse(pacelNo, out parcel); if (!stat) return result; } var loc = DataHelper.GetLocation(province, district, parcel); if (loc != null) { return loc; } string driverPath = @"D:\MyProjects\FRES\src\FRES.Source.Map\Drivers\"; IWebDriver driver = new OpenQA.Selenium.PhantomJS.PhantomJSDriver(driverPath); //IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(driverPath); try { var url = "http://dolwms.dol.go.th/tvwebp/"; driver.Navigate().GoToUrl(url); var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(TIMEOUT)); Thread.Sleep(DELAY); var ddlProvince = driver.FindSelectElementWhenPopulated(By.Name("ddlProvince"), TIMEOUT); ddlProvince.SelectBySubText(province); Thread.Sleep(DELAY); var ddlAmphur = driver.FindSelectElementWhenPopulated(By.Name("ddlAmphur"), TIMEOUT); ddlAmphur.SelectBySubText(district); Thread.Sleep(DELAY); var txtPacelNo = new WebDriverWait(driver, TimeSpan.FromSeconds(TIMEOUT)).Until(ExpectedConditions.ElementExists(By.Name("txtPacelNo"))); txtPacelNo.SendKeys(pacelNo); Thread.Sleep(DELAY); var btnFind = driver.FindElement(By.Name("btnFind")); IJavaScriptExecutor js = driver as IJavaScriptExecutor; js.ExecuteScript("arguments[0].click();", btnFind); Thread.Sleep(DELAY); //var element = new WebDriverWait(driver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.TextToBePresentInElement(driver.FindElement(By.Id("ddlAmphur")), "01")); //wait.Until(ExpectedConditions.ElementExists(By.CssSelector("div[style=\"transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 107; width: 100%;\"]"))); var isExist = wait.Until((d) => { return driver.PageSource.Contains("createMarker( new Array("); }); if (isExist) { var html = driver.PageSource; html = GetStrBtw(html, "createMarker( new Array(", "));");//.Replace("'", string.Empty); var dtls = html.Split(',').Select(x => x.Replace("'", "")).ToArray(); result = new Location { Amphur = district, Province = province, ParcelCode = parcel, Lat = double.Parse(dtls[7]), Lon = double.Parse(dtls[8]) }; DataHelper.InsertLocation(result); } else { throw new Exception("Can't find location"); } } catch (Exception ex) { lock (sync) File.AppendAllText("D:/RE/M.log", DateTime.Now.ToString("yyyyMMdd HH:mm") + "," + province + "," + district + "," + parcel + "," + urlRe + "," + ex.GetBaseException().Message + "\r\n"); } finally { //Thread.Sleep(3000); driver.Close(); driver.Quit(); driver.Dispose(); } return result; }