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);
        }
Example #2
0
        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);
            }
        }
Example #4
0
        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;
                }
            }
        }
Example #6
0
        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();
            }
        }
Example #7
0
 private static bool DoReservation(this IWebDriver driver, DeliveryCriteria deliveryCriteria, bool firstTime = false)
 {
     return(driver.HandleReservation(deliveryCriteria, firstTime));
 }