public static void ConfigureApplication(DeliveryCriteria deliveryCriteria) { var services = new ServiceCollection(); var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.{environmentName}.json", optional: false, reloadOnChange: true) .AddUserSecrets <SecureSettings>() .AddEnvironmentVariables(); IConfiguration configuration = builder.Build(); var appSettings = configuration.GetSection("AppSettings"); services.Configure <AppSettings>(appSettings); var secureSettings = configuration.GetSection("SecureSettings"); services.Configure <SecureSettings>(secureSettings); services.AddTransient <FriscoResolver>(); var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetService <FriscoResolver>().InitializeDriver(deliveryCriteria); }
public JsonResult GetDeliveryDetails(string DeliveryID) { List <CMSDeliveryDetailWModels> SyncDatas = new List <CMSDeliveryDetailWModels>(); var cmsService = new CMSService(); int Delivery_ID = NumUtil.ParseInteger(DeliveryID); var cri = new DeliveryCriteria(); cri.Delivery_ID = Delivery_ID; var result = cmsService.GetCMSDelivery(cri); if (result.Code == ReturnCode.SUCCESS) { var deliverys = result.Object as List <CMS_Delivery>; if (deliverys != null && deliverys.Count() == 1) { var delivery = deliverys.FirstOrDefault(); foreach (var row in delivery.CMS_Delivery_Detail) { var lrow = new CMSDeliveryDetailWModels(); lrow.CMS_Delivery_Detail_ID = row.CMS_Delivery_Detail_ID; if (!string.IsNullOrEmpty(row.Product_Code)) { lrow.Product_ID = 1; //remove after improve code in mobile lrow.Product_Code = row.Product_Code; lrow.Product_Name = ""; } SyncDatas.Add(lrow); } } } return(Json(SyncDatas, JsonRequestBehavior.AllowGet)); }
public static bool HandleReservation(this IWebDriver driver, DeliveryCriteria deliveryCriteria, bool firstTime) { if (firstTime) { Thread.Sleep(6000); } else { driver.WaitUntilVisible(By.XPath("//*[@id='header']/div/div[1]/div/div[4]")).Click(); } driver.WaitUntilVisible(By.XPath("//*[@id='header']/div/div[1]/div/div[4]")).Click(); Thread.Sleep(1000); driver.FindElement(By.XPath("//*[@id='wrapper']/span/div/div/div/div[2]/div[2]/div[2]"), 10).Click(); if (driver.CheckFirstAvailableDeliveryDate(deliveryCriteria.LastPreferredDate)) { driver.GetCalendar(deliveryCriteria); driver.MakeAReservation(); return(true); } else { driver.FindElement(By.XPath("//*[@id='wrapper']/span/div/div/div/div[2]/div[2]/div[2]/div/div/div[3]/div[2]/div/div[1]")); return(false); } }
public void InitializeDriver(DeliveryCriteria deliveryCriteria) { ChromeOptions options = new ChromeOptions { PageLoadStrategy = PageLoadStrategy.None }; IWebDriver driver = new ChromeDriver($"{Directory.GetCurrentDirectory()}\\ChromeDriver", options) { Url = appSettings.Url }; driver.Manage().Window.Size = new Size(1920, 1080); driver.Manage().Window.Maximize(); driver.SwitchTo().Window(driver.WindowHandles[0]); driver.Begin(deliveryCriteria, secureSettings.Email, secureSettings.Password); }
private static void GetCalendar(this IWebDriver driver, DeliveryCriteria deliveryCriteria) { var html = driver.FindElement(By.XPath("/html/body/div[1]/div/div/span/div/div/div/div[2]/div[2]/div[2]/div/div/div[3]/div[1]/div"), 10).GetAttribute("outerHTML"); var document = new HtmlDocument(); document.LoadHtml(html); var availableReservations = document.DocumentNode.SelectNodes("//div[@class='calendar_column-day available']"); foreach (var(availableReservation, index) in availableReservations.WithIndex()) { document.LoadHtml(availableReservation.InnerHtml); var availableHours = document.DocumentNode.SelectSingleNode("//span[@class='hours']").InnerText; var hoursAndMinutes = availableHours.GetHours(); if (hoursAndMinutes.HourFrom <= deliveryCriteria.FromHour && deliveryCriteria.ToHour >= hoursAndMinutes.HourTo) { var pickedElement = driver.FindElements(By.XPath("//div[@class='calendar_column-day available']"))[index]; driver.PerformClick(pickedElement); return; } } }
public static void Begin(this IWebDriver driver, DeliveryCriteria deliveryCriteria, string email, string password) { try { driver.Login(email, password); bool isReservationCreated = driver.DoReservation(deliveryCriteria, true); while (!isReservationCreated) { Thread.Sleep(new TimeSpan(0, 0, 5)); isReservationCreated = driver.DoReservation(deliveryCriteria); } ; Console.WriteLine("Rezerwacja została utworzona"); } catch (Exception ex) { ConsoleUtilities.DisplayError(ex.Message); } finally { driver.CloseApplication(); } }
private static bool DoReservation(this IWebDriver driver, DeliveryCriteria deliveryCriteria, bool firstTime = false) { return(driver.HandleReservation(deliveryCriteria, firstTime)); }