public async Task <List <NiazmandyHaCityBusiness> > GetAllCityFromNiazMandyHa()
        {
            var cities = new List <NiazmandyHaCityBusiness>();

            try
            {
                var states = await StateBusiness.GetAllAsync();

                states  = states.OrderBy(q => q.StateName).ToList();
                _driver = Utility.RefreshDriver(_driver);
                _driver.Navigate().GoToUrl("https://niazmandyha.ir/panel/ads");
                var a = await AdvTokensBusiness.GetAllAsync();

                var tok = a.FirstOrDefault(q => !string.IsNullOrEmpty(q.Token) && q.Type == AdvertiseType.NiazmandyHa);
                var sim = await SimCardBusiness.GetAsync(tok.Number);

                _driver.FindElement(By.Id("username")).SendKeys(sim.UserName);
                _driver.FindElement(By.Id("password")).SendKeys("0" + sim.Number + "\n");
                var linksElement = _driver.FindElements(By.ClassName("black"))
                                   .FirstOrDefault(q => q.Text == "خروج");
                if (linksElement != null)
                {
                    _driver.Navigate().GoToUrl("https://niazmandyha.ir/panel/ads");
                    _driver.FindElement(By.ClassName("white")).Click();
                    foreach (var item in states)
                    {
                        await Utility.Wait();

                        _driver.FindElement(By.Name("state")).Click();
                        await Utility.Wait();

                        _driver.FindElements(By.TagName("option"))
                        .FirstOrDefault(q => q.Text.Contains(item.StateName))?.Click();
                        await Utility.Wait(1);

                        var tt = _driver.FindElement(By.Name("city")).FindElements(By.TagName("option")).ToList()
                                 .Select(q => q?.Text);

                        cities.AddRange(from t in tt
                                        where t != "انتخاب کنید" && t != "همه شهرها"
                                        select new NiazmandyHaCityBusiness()
                        {
                            Guid = Guid.NewGuid(), Modified = DateTime.Now, CityName = t?.Trim()
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

            return(cities);
        }
示例#2
0
        public async Task StartRegisterAdv(List <long> numbers = null, int count = 0)
        {
            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    DialogResult result;
            //    result = MessageBox.Show("برنامه در حال اجرای فرایندی دیگر می باشد و در صورت تائید فرایند قبلی متوقف خواهد شد." + "\r\nآیا فرایند قبلی متوقف شود؟", "هشدار", MessageBoxButtons.YesNo,
            //        MessageBoxIcon.Question);
            //    if (result == DialogResult.Yes)
            //        _tokenSource?.Cancel();
            //    else return;
            //}
            _tokenSource?.Cancel();
            await _semaphoreSlim.WaitAsync();

            _tokenSource = new CancellationTokenSource();

            var monitor = new PerfMonitor();
            var isLogin = false;
            await Task.Run(async() =>
            {
                try
                {
                    while (await PingHost("185.105.239.1") == false)
                    {
                        await Wait(5);
                        lstMessage.Clear();
                        lstMessage.Add("خطای اتصال به شبکه");
                        ShowBalloon("لطفا اتصال به شبکه را چک نمایید", lstMessage);
                    }

                    while (await PingHost("185.105.239.1"))
                    {
                        SimCardBusiness firstSimCardBusiness = null;
                        //اگر نامبر صفر نباشد یعنی کاربر خواسته روی شماره ای خاص آگهی بزند
                        //اگر صفر باشد روی تمام سیم کارتها داخل حلقه وایل، آگهی ثبت می شود
                        if (numbers != null && numbers.Count == 0)
                        {
                            if (!(_cls?.NiazSetting?.AdvCountInDay > 0))
                            {
                                return;
                            }

                            _driver = RefreshDriver(_driver);

                            //     MessageBox.Show(_driver.WindowHandles.Count.ToString());
                            while (!_tokenSource.IsCancellationRequested)
                            {
                                var currentIp = "";
                                while (_cls?.NiazSetting.CountAdvInIp <= await
                                       AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                 AdvertiseType.NiazKade))
                                {
                                    //ShowBalloon("پر شدن تعداد آگهی در " + await FindGateWay(),
                                    //    "سیستم در حال تعویض IP یا سایت می باشد");
                                    await SetGateway(await GetRandomGeteWay());
                                    currentIp = await GetLocalIpAddress();
                                    if (await FindGateWay() != IP_Store.IP_Mokhaberat.Value ||
                                        !(_cls?.NiazSetting.CountAdvInIp <= await
                                          AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                    AdvertiseType.NiazKade)))
                                    {
                                        continue;
                                    }
                                    if (await GoToNextSite(AdvertiseType.NiazKade, 0))
                                    {
                                        continue;
                                    }
                                    await ChangeIp();
                                    while (await GetLocalIpAddress() == null)
                                    {
                                        await Wait(10);
                                        //ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                                    }
                                    if (await GoToNextSite(AdvertiseType.NiazKade, 1))
                                    {
                                        continue;
                                    }
                                }
                                //var simCard =
                                //    await SimCardBusiness.GetNextSimCardNumberAsync((short)AdvertiseType.NiazKade, (short)_cls.NiazSetting.AdvCountInDay, await GetLocalIpAddress());
                                //if (simCard == 0) break;

                                //firstSimCardBusiness = await SimCardBusiness.GetAsync(simCard);
                                if (firstSimCardBusiness is null)
                                {
                                    break;
                                }
                                var lastUseNiaz = firstSimCardBusiness.NextUseNiazKade;

                                firstSimCardBusiness.NextUseNiazKade = DateTime.Now.AddMinutes(30);
                                await firstSimCardBusiness.SaveAsync();
                                //اگر توکن نداشت سیمکارت عوض بشه
                                //var tt = await AdvTokensBusiness.GetToken(simCard, AdvertiseType.NiazKade);
                                //var hasToken = tt?.Token ?? null;
                                //if (string.IsNullOrEmpty(hasToken)) continue;

                                var startDayOfCurrentMonthOfDateShToMiladi = Calendar.StartDayOfPersianMonth();
                                var startDayOfNextMonthOfDateShToMiladi    = Calendar.EndDayOfPersianMonth().AddDays(1);
                                //آمار آگهی های ثبت شده برای سیم کارت در ماه جاری
                                //var a1 = await AdvertiseLogBusiness.GetAllSpecialAsync(p =>
                                //    p.SimCardNumber == simCard && p.AdvType == AdvertiseType.NiazKade
                                //                               && (p.StatusCode == (short) StatusCode.Published
                                //                                   || p.StatusCode == (short) StatusCode.InPublishQueue)
                                //                               && p.DateM >= startDayOfCurrentMonthOfDateShToMiladi);
                                //var registeredAdvCountInMonth = a1.Count;
                                //if (registeredAdvCountInMonth >= _cls?.NiazSetting?.AdvCountInMonth)
                                //{
                                //    //تاریخ روز اول ماه شمسی بعد را تنظیم می کند چون تا سر ماه بعد دیگر نیازی به این سیم کارت نیست
                                //    firstSimCardBusiness.NextUseNiazKade = startDayOfNextMonthOfDateShToMiladi;
                                //    await firstSimCardBusiness.SaveAsync();
                                //    continue;
                                //}


                                ////آمار آگهی های ثبت شده امروز
                                //var currentDate = DateTime.Now.Date;
                                //var a2 = await AdvertiseLogBusiness.GetAllSpecialAsync(p =>
                                //    p.SimCardNumber == simCard && p.AdvType == AdvertiseType.NiazKade
                                //                               && (p.StatusCode == (short) StatusCode.Published
                                //                                   || p.StatusCode == (short) StatusCode.InPublishQueue
                                //                                   || p.StatusCode == (short) StatusCode.WaitForPayment)
                                //                               && p.DateM >= currentDate);
                                //var registeredAdvCountInDay = a2.Count;

                                //if (registeredAdvCountInDay >= _cls?.NiazSetting?.AdvCountInDay)
                                //{
                                //    //تاریخ فردا رو ست می کند چون تا فردا دیگه نیازی به این سیم کارت نیست
                                //    firstSimCardBusiness.NextUseNiazKade = DateTime.Today.AddDays(1);
                                //    await firstSimCardBusiness.SaveAsync();
                                //    continue;
                                //}

                                //if (await Login(simCard) == false)
                                //{
                                //    firstSimCardBusiness.NextUseNiazKade = lastUseNiaz;
                                //    await firstSimCardBusiness.SaveAsync();
                                //    continue;
                                //}

                                //اینجا به تعداد تنظیم شده در تنظیمات دیوار منهای تعداد ثبت شده قبلی، آگهی درج می کند
                                //for (var i = 0; i < _cls?.NiazSetting?.AdvCountInDay - registeredAdvCountInMonth; i++)
                                //{
                                //    var currentIp1 = "";
                                //    while (_cls?.NiazSetting.CountAdvInIp <= await
                                //               AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                //                   AdvertiseType.NiazKade))
                                //    {
                                //        ShowBalloon("پر شدن تعداد آگهی در " + await FindGateWay(),
                                //            "سیستم در حال تعویض IP یا سایت می باشد");
                                //       await SetGateway(await GetRandomGeteWay());
                                //        currentIp1 = await GetLocalIpAddress();
                                //        var countAdvInIp1 = await
                                //            AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                //                AdvertiseType.NiazKade);
                                //        if (!(_cls?.NiazSetting.CountAdvInIp <= countAdvInIp1)) continue;
                                //        if (await GoToNextSite(AdvertiseType.NiazKade,0)) continue;
                                //        await ChangeIp();
                                //        while (await GetLocalIpAddress() == null)
                                //        {
                                //            await Wait(10);
                                //            ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                                //        }
                                //        if (await GoToNextSite(AdvertiseType.NiazKade, 1)) continue;
                                //    }
                                //    var adv = await GetNextAdv(simCard);
                                //    if (adv == null) continue;
                                //    await RegisterAdv(adv);

                                //}
                            }
                        }
                        //اگر کاربر روی یک سیم کارت خاص می خواهد تعدادی آگهی درج کند
                        else
                        {
                            foreach (var number in numbers)
                            {
                                if (!await Login(number))
                                {
                                    continue;
                                }
                                firstSimCardBusiness = await SimCardBusiness.GetAsync(number);
                                if (firstSimCardBusiness is null)
                                {
                                    return;
                                }
                                var tt       = await AdvTokensBusiness.GetToken(number, AdvertiseType.NiazKade);
                                var hasToken = tt?.Token ?? null;
                                if (string.IsNullOrEmpty(hasToken))
                                {
                                    return;
                                }
                                firstSimCardBusiness.NextUseNiazKade = DateTime.Now.AddMinutes(30);
                                await firstSimCardBusiness.SaveAsync();
                                //اینجا به تعداد آگهی های درج شده قبلی کاری ندارد و مستیم به تعدادی که کاربر گفته آگهی درج می کند
                                for (var i = 0; i < count; i++)
                                {
                                    var currentIp = "";
                                    while (_cls?.NiazSetting.CountAdvInIp <= await
                                           AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                     AdvertiseType.NiazKade))
                                    {
                                        //ShowBalloon("پر شدن تعداد آگهی در " + await FindGateWay(),
                                        //    "سیستم در حال تعویض IP یا سایت می باشد");
                                        await SetGateway(await GetRandomGeteWay());
                                        currentIp = await GetLocalIpAddress();
                                        if (await FindGateWay() != IP_Store.IP_Mokhaberat.Value ||
                                            !(_cls?.NiazSetting.CountAdvInIp <= await
                                              AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                        AdvertiseType.NiazKade)))
                                        {
                                            continue;
                                        }
                                        await ChangeIp();
                                        while (await GetLocalIpAddress() == null)
                                        {
                                            await Wait(10);
                                            //ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                                        }
                                    }
                                    var adv = await GetNextAdv(number);
                                    if (adv == null)
                                    {
                                        continue;
                                    }
                                    await RegisterAdv(adv);
                                    //var countAdvInIp1 = await
                                    //    AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                    //        AdvertiseType.NiazKade);
                                    //if (!(_cls?.NiazSetting.CountAdvInIp <= countAdvInIp1)) continue;
                                    //await GoToNextSite(AdvertiseType.NiazKade);
                                    //return;
                                }
                            }
                        }


                        _driver.Navigate().GoToUrl("http://www.niazkade.com/panel/myAds");

                        await Wait(5);

                        //ShowBalloon("لطفا اتصال به شبکه را چک نمایید", "خطای اتصال به شبکه");
                        continue;
                    }
                }
                catch (Exception ex)
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                finally
                {
                    monitor.Dispose();
                }
            });

            _semaphoreSlim.Release();
        }
示例#3
0
        public async Task <bool> Login(long simCardNumber)
        {
            var monitor = new PerfMonitor();

            try
            {
                _driver = RefreshDriver(_driver);
                var js          = (IJavaScriptExecutor)_driver;
                var simBusiness = await AdvTokensBusiness.GetToken(simCardNumber, AdvertiseType.NiazKade);

                var token = simBusiness?.Token;

                //   در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                if (!string.IsNullOrEmpty(token))
                {
                    _driver.Navigate().GoToUrl("http://www.niazkade.com/panel/myAds");


                    js.ExecuteScript($"localStorage.setItem('user','{token}');");
                    _driver.Navigate().Refresh();

                    var linksElements = _driver.FindElements(By.ClassName("nav-link"))
                                        .FirstOrDefault(q => q.Text == "خروج");
                    if (linksElements != null)
                    {
                        _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                        await Wait();

                        _driver.SwitchTo().Alert().Accept();
                        return(true);
                    }
                }


                //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه دریافت کد تائید لاگین می شود
                _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0);

                _driver.Navigate().GoToUrl("http://www.niazkade.com/panel/myAds");
                if (_driver.FindElements(By.ClassName("form-control")).Count > 0)
                {
                    _driver.FindElement(By.ClassName("form-control")).SendKeys("0" + simCardNumber + "\n");
                }

                //انتظار برای لاگین شدن
                int repeat = 0;
                //حدود 120 ثانیه فرصت لاگین دارد
                while (repeat < 20)
                {
                    //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود

                    var name = await SimCardBusiness.GetOwnerNameAsync(simCardNumber);

                    var message = $@"مالک: {name} \r\nشماره: {simCardNumber}  \r\nلطفا لاگین نمائید ";
                    _driver.ExecuteJavaScript($"alert('{message}');");
                    //Wait();

                    await Wait(3);

                    try
                    {
                        _driver.SwitchTo().Alert().Accept();
                        await Wait(3);

                        repeat++;
                    }
                    catch
                    {
                        await Wait(15);
                    }
                    var linksElements = _driver.FindElements(By.ClassName("nav-link")).FirstOrDefault(q => q.Text == "خروج");
                    if (linksElements == null)
                    {
                        continue;
                    }

                    token = js.ExecuteScript("return localStorage.getItem('user')").ToString();
                    if (simBusiness != null)
                    {
                        simBusiness.Token = token;
                    }
                    else
                    {
                        simBusiness = new AdvTokensBusiness
                        {
                            Guid     = Guid.NewGuid(),
                            Token    = token,
                            Modified = DateTime.Now,
                            Number   = simCardNumber,
                            Type     = AdvertiseType.NiazKade
                        };
                    }
                    await simBusiness?.SaveAsync();

                    _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                    await Wait();

                    _driver.SwitchTo().Alert().Accept();
                    return(true);
                }

                var linksElements1 =
                    _driver.FindElements(By.ClassName("nav-link")).FirstOrDefault(q => q.Text == "خروج") ??
                    null;
                if (linksElements1 == null)
                {
                    var msg = $@"فرصت لاگین کردن به اتمام رسید. لطفا دقایقی بعد مجددا امتحان نمایید";
                    _driver.ExecuteJavaScript($"alert('{msg}');");
                    _driver.SwitchTo().Alert().Accept();
                    await Wait(3);
                }

                _driver.Navigate().GoToUrl("http://www.niazkade.com");
                await Wait();

                if (simBusiness == null)
                {
                    return(false);
                }
                simBusiness.Token = null;
                await simBusiness.SaveAsync();

                return(false);
            }
            catch (WebException) { return(false); }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                return(false);
            }

            finally { monitor.Dispose(); }
        }
        public async Task <bool> Login(List <long> simCardNumber)
        {
            var monitor = new PerfMonitor();

            try
            {
                foreach (var item in simCardNumber)
                {
                    Utility.CloseAllChromeWindows();
                    await GetInstance();

                    _driver = Utility.RefreshDriver(_driver);
                    var simBusiness = await AdvTokensBusiness.GetToken(item, AdvertiseType.NiazmandyHa);

                    var simcard = await SimCardBusiness.GetAsync(item);

                    var token = simBusiness?.Token;
                    _driver.Navigate().GoToUrl("https://niazmandyha.ir/panel/ads");
                    //   در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                    if (!string.IsNullOrEmpty(token))
                    {
                        var cooc = _driver.Manage().Cookies.AllCookies;
                        if (cooc.Count == 3)
                        {
                            _driver.Manage().Cookies.DeleteCookieNamed(CookieStore.NiazmandyHaCookieName.Value);
                        }

                        _driver.Navigate().Refresh();
                        var a = new OpenQA.Selenium.Cookie(CookieStore.NiazmandyHaCookieName.Value, token);
                        _driver.Manage().Cookies.AddCookie(a);
                        _driver.Navigate().Refresh();

                        _driver.Navigate().GoToUrl("https://niazmandyha.ir/panel/ads");

                        var linksElements = _driver.FindElements(By.ClassName("black"))
                                            .FirstOrDefault(q => q.Text == "خروج");
                        if (linksElements != null)
                        {
                            _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                            await Utility.Wait();

                            _driver.SwitchTo().Alert().Accept();
                            continue;
                        }

                        _driver.FindElement(By.Id("username")).SendKeys(simcard.UserName);
                        _driver.FindElement(By.Id("password")).SendKeys("0" + item + '\n');
                        var linksElement = _driver.FindElements(By.ClassName("black"))
                                           .FirstOrDefault(q => q.Text == "خروج");
                        if (linksElement != null)
                        {
                            token             = _driver.Manage().Cookies.AllCookies.LastOrDefault()?.Value ?? null;
                            simBusiness.Token = token;
                            await simBusiness?.SaveAsync();

                            _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                            await Utility.Wait();

                            _driver.SwitchTo().Alert().Accept();
                            continue;
                        }
                    }


                    //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه ثبت نام می شود
                    _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0);

                    _driver.FindElements(By.TagName("span"))
                    .FirstOrDefault(q => q.Text == "عضویت در نیازمندی ها")?.Click();
                    _driver.FindElement(By.Id("name")).SendKeys(simcard.OwnerName);
                    _driver.FindElement(By.Id("tel")).SendKeys("0" + item);
                    _driver.FindElement(By.Id("email")).SendKeys(simcard.UserName + "@Yahoo.com");
                    _driver.FindElement(By.Id("username")).SendKeys(simcard.UserName);
                    _driver.FindElement(By.Id("password")).SendKeys("0" + item);
                    _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت نام")?.Click();
                    await Utility.Wait();

                    var counter = 0;
                    while (_driver.Url == "https://niazmandyha.ir/login" || _driver.Url == "https://niazmandyha.ir/register")
                    {
                        //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود
                        counter++;
                        if (counter >= 60)
                        {
                            break;
                        }
                        var name = await SimCardBusiness.GetOwnerNameAsync(item);

                        var message = $@"مالک: {name} \r\nشماره: {item}  \r\nلطفا لاگین نمائید ";
                        _driver.ExecuteJavaScript($"alert('{message}');");

                        await Utility.Wait(3);

                        try
                        {
                            _driver.SwitchTo().Alert().Accept();
                            await Utility.Wait(3);
                        }
                        catch
                        {
                            await Utility.Wait(15);
                        }


                        var linksElements = _driver.FindElements(By.ClassName("black"))
                                            .FirstOrDefault(q => q.Text == "خروج");
                        if (linksElements == null)
                        {
                            continue;
                        }

                        token = _driver.Manage().Cookies.AllCookies.LastOrDefault()?.Value ?? null;
                        if (string.IsNullOrEmpty(token))
                        {
                            continue;
                        }
                        if (simBusiness != null)
                        {
                            simBusiness.Token = token;
                        }
                        else
                        {
                            simBusiness = new AdvTokensBusiness
                            {
                                Guid     = Guid.NewGuid(),
                                Token    = token,
                                Modified = DateTime.Now,
                                Number   = item,
                                Type     = AdvertiseType.NiazmandyHa
                            };
                        }

                        await simBusiness?.SaveAsync();

                        _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                        await Utility.Wait();

                        _driver.SwitchTo().Alert().Accept();
                        Utility.CloseAllChromeWindows();
                        continue;
                    }


                    if (_driver.Url != "https://niazmandyha.ir/panel")
                    {
                        return(false);
                    }
                    token = _driver.Manage().Cookies.AllCookies.LastOrDefault()?.Value ?? null;
                    if (simBusiness != null)
                    {
                        simBusiness.Token = token;
                    }
                    else
                    {
                        simBusiness = new AdvTokensBusiness
                        {
                            Guid     = Guid.NewGuid(),
                            Token    = token,
                            Modified = DateTime.Now,
                            Number   = item,
                            Type     = AdvertiseType.NiazmandyHa
                        };
                    }
                    await simBusiness?.SaveAsync();

                    _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                    await Utility.Wait();

                    _driver.SwitchTo().Alert().Accept();
                    if (counter < 60)
                    {
                        return(true);
                    }

                    var linksElements1 = _driver?.FindElements(By.ClassName("black"))
                                         .FirstOrDefault(q => q.Text == "خروج") ??
                                         null;
                    if (linksElements1 == null)
                    {
                        var msg = $@"فرصت لاگین کردن به اتمام رسید. لطفا دقایقی بعد مجددا امتحان نمایید";
                        _driver.ExecuteJavaScript($"alert('{msg}');");
                        _driver.SwitchTo().Alert().Accept();
                        await Utility.Wait(3);
                    }

                    _driver.Navigate().GoToUrl("https://niazmandyha.ir");
                    await Utility.Wait();

                    simBusiness.Token = null;
                    await simBusiness.SaveAsync();
                }


                return(false);
            }
            catch (WebException) { return(false); }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                return(false);
            }

            finally { monitor.Dispose(); }
        }
        public async Task <bool> UpdateAllAdvStatus(int dayCount = 0)
        {
            if (SemaphoreSlim.CurrentCount == 0)
            {
                DialogResult result;
                result = MessageBox.Show("برنامه در حال اجرای فرایندی دیگر می باشد و در صورت تائید فرایند قبلی متوقف خواهد شد." + "\r\nآیا فرایند قبلی متوقف شود؟", "هشدار", MessageBoxButtons.YesNo,
                                         MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    _tokenSource?.Cancel();
                }
                else
                {
                    return(false);
                }
            }

            await SemaphoreSlim.WaitAsync();

            _tokenSource = new CancellationTokenSource();
            try
            {
                _driver = Utility.RefreshDriver(_driver);
                if (dayCount == 0)
                {
                    dayCount = cls.NiazmandyHaSetting?.DayCountForUpdateState ?? 10;
                }
                var lastWeek = DateTime.Now.AddDays(-dayCount);
                var lst      = await AdvertiseLogBusiness.GetAllSpecialAsync(p =>
                                                                             p.DateM > lastWeek && p.AdvType == AdvertiseType.NiazmandyHa);

                var allAdvertiseLog = lst.OrderBy(q => q.SimCardNumber).ThenBy(p => p.DateSh)
                                      .ThenBy(p => p.priorityOfUpdateSt).ThenBy(p => p.rnd).ToList();
                if (allAdvertiseLog.Count <= 0)
                {
                    return(true);
                }
                var  tryCount = 0;
                long mobile   = 0;
                foreach (var adv in allAdvertiseLog)
                {
                    if (_tokenSource.IsCancellationRequested)
                    {
                        break;
                    }
                    if (tryCount >= 3)
                    {
                        continue;
                    }
                    try
                    {
                        //var sim = await SimCardBusiness.GetAsync(adv.SimCardNumber);
                        if (mobile != adv.SimCardNumber)
                        {
                            var lstNum = new List <long>();
                            lstNum.Add(adv.SimCardNumber);
                            var li = await AdvTokensBusiness.GetToken(adv.SimCardNumber, AdvertiseType.NiazmandyHa);

                            var tok = li.Token;
                            if (string.IsNullOrEmpty(tok))
                            {
                                continue;
                            }
                            mobile = adv.SimCardNumber;
                            var log = await Login(lstNum);

                            if (!log)
                            {
                                mobile = 0;
                                continue;
                            }

                            lstNum.Clear();
                        }
                        if (adv.URL == "---")
                        {
                            continue;
                        }
                        var code = adv.URL.Remove(0, 27) ?? null;
                        await Utility.Wait();

                        var element1 = _driver.FindElements(By.ClassName("text-center")).Any(q => q.Text == code);
                        await Utility.Wait();

                        if (!element1 || string.IsNullOrEmpty(code))
                        {
                            var el = _driver.FindElements(By.ClassName("page-link")).Any();
                            if (!el)
                            {
                                adv.AdvStatus  = "رد شده";
                                adv.UpdateDesc = "در انتظار تایید ادمین/ رد شده/ حذف شده";
                                adv.StatusCode = (short)StatusCode.Failed;
                                await adv.SaveAsync();
                                await InsertDataInAdvVisitLog(adv);

                                _driver.Navigate().Back();
                                continue;
                            }

                            _driver.FindElements(By.ClassName("page-link")).FirstOrDefault(q => q.Text.Contains("›"))?.Click();
                            var element11 = _driver.FindElements(By.ClassName("text-center")).Any(q => q.Text == code);
                            await Utility.Wait();

                            if (!element1)
                            {
                                adv.AdvStatus  = "رد شده";
                                adv.UpdateDesc = "در انتظار تایید ادمین/ رد شده/ حذف شده";
                                adv.StatusCode = (short)StatusCode.Failed;
                                await adv.SaveAsync();
                                await InsertDataInAdvVisitLog(adv);

                                _driver.Navigate().Back();
                                continue;
                            }
                            await Utility.Wait();

                            adv.AdvStatus  = "منتشر شده";
                            adv.UpdateDesc = "آگهی منتشر شده و در لیست آگهی های نیازمندی ها قرار گرفته است";

                            //var counter = _driver.FindElement(By.ClassName("stat-view"))?.Text.FixString() ?? "0";
                            //adv.VisitCount = counter.ParseToInt();
                            adv.StatusCode = (short)StatusCode.Published;
                            adv.AdvType    = AdvertiseType.NiazmandyHa;
                            await adv.SaveAsync();
                            await InsertDataInAdvVisitLog(adv);

                            tryCount = 0;
                            _driver.Navigate().Back();
                            await Utility.Wait();

                            continue;
                        }


                        await Utility.Wait();

                        adv.AdvStatus  = "منتشر شده";
                        adv.UpdateDesc = "آگهی منتشر شده و در لیست آگهی های نیازمندی ها قرار گرفته است";

                        //var counter = _driver.FindElement(By.ClassName("stat-view"))?.Text.FixString() ?? "0";
                        //adv.VisitCount = counter.ParseToInt();
                        adv.StatusCode = (short)StatusCode.Published;
                        adv.AdvType    = AdvertiseType.NiazmandyHa;
                        await adv.SaveAsync();
                        await InsertDataInAdvVisitLog(adv);

                        tryCount = 0;
                        //_driver.Navigate().Back();
                        await Utility.Wait();
                    }
                    catch (Exception ex)
                    {
                        if (ex.Source != "WebDriver" && !_tokenSource.IsCancellationRequested)
                        {
                            WebErrorLog.ErrorLogInstance.StartLog(ex);
                        }
                        await Utility.Wait();

                        tryCount++;
                    }
                }



                return(true);
            }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                return(false);
            }
            finally
            {
                SemaphoreSlim.Release();
            }
        }
        public async Task StartRegisterAdv(List <long> numbers = null, int count = 0)
        {
            //if (SemaphoreSlim.CurrentCount == 0)
            //{
            //    DialogResult result;
            //    result = MessageBox.Show("برنامه در حال اجرای فرایندی دیگر می باشد و در صورت تائید فرایند قبلی متوقف خواهد شد." + "\r\nآیا فرایند قبلی متوقف شود؟", "هشدار", MessageBoxButtons.YesNo,
            //        MessageBoxIcon.Question);
            //    if (result == DialogResult.Yes)
            //        _tokenSource?.Cancel();
            //    else return;
            //}
            _tokenSource?.Cancel();
            //await SemaphoreSlim.WaitAsync();
            _tokenSource = new CancellationTokenSource();
            var counter = 0;
            var monitor = new PerfMonitor();
            var isLogin = false;

            try
            {
                while (await Utility.PingHost("185.105.239.1") == false)
                {
                    if (counter == 30)
                    {
                        await Utility.SetGateway(await Utility.GetRandomGeteWay());
                    }
                    await Utility.Wait(10);

                    lstMessage.Clear();
                    lstMessage.Add("خطای اتصال به شبکه");
                    Utility.ShowBalloon("لطفا اتصال به شبکه را چک نمایید", lstMessage);
                    counter++;
                }


                foreach (var t in numbers)
                {
                    //while (await Utility.PingHost("185.105.239.1"))
                    //{
                    var lstNum = new List <long> {
                        t
                    };
                    var tt = await AdvTokensBusiness.GetToken(t, AdvertiseType.NiazmandyHa);

                    var hasToken = tt?.Token ?? null;
                    if (string.IsNullOrEmpty(hasToken))
                    {
                        return;
                    }
                    if (!await Login(lstNum))
                    {
                        continue;
                    }
                    //اینجا به تعداد آگهی های درج شده قبلی کاری ندارد و مستیم به تعدادی که کاربر گفته آگهی درج می کند
                    for (var i = 0; i < count; i++)
                    {
                        //while (cls?.NiazmandyHaSetting.CountAdvInIp <= await
                        //           AdvertiseLogBusiness.GetAllAdvInDayFromIP(
                        //               await Utility.GetLocalIpAddress(),
                        //               AdvertiseType.NiazmandyHa))
                        //{
                        //    Utility.ShowBalloon("پر شدن تعداد آگهی در " + await Utility.FindGateWay(),
                        //        "سیستم در حال تعویض IP یا سایت می باشد");
                        //    await Utility.SetGateway(await Utility.GetRandomGeteWay());
                        //    var currentIp1 = await Utility.GetLocalIpAddress();
                        //    if (await Utility.FindGateWay() != IP_Store.IP_Mokhaberat.Value ||
                        //        !(cls?.NiazmandyHaSetting.CountAdvInIp <= await
                        //              AdvertiseLogBusiness.GetAllAdvInDayFromIP(
                        //                  await Utility.GetLocalIpAddress(),
                        //                  AdvertiseType.NiazmandyHa))) continue;
                        //    await Utility.ChangeIp();

                        //    while (await Utility.GetLocalIpAddress() == null)
                        //    {
                        //        if (counter == 30)
                        //            await Utility.SetGateway(await Utility.GetRandomGeteWay());
                        //        await Utility.Wait(10);
                        //        Utility.ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                        //        counter++;
                        //    }
                        //}

                        var adv = await GetNextAdv(t);

                        if (adv == null)
                        {
                            continue;
                        }
                        await RegisterAdv(adv);

                        var title = await Utility.FindGateWay();

                        var co = await AdvertiseLogBusiness.GetAllAdvInDayFromIP(await Utility.GetLocalIpAddress(),
                                                                                 AdvertiseType.NiazmandyHa);

                        lstMessage.Clear();
                        lstMessage.Add($"نوع آگهی: نیازمندیها");
                        lstMessage.Add($"IP اینترنتی: {await Utility.GetLocalIpAddress()}");
                        lstMessage.Add($"GateWay: {await Utility.FindGateWay()}");
                        lstMessage.Add($"تعداد آگهی ارسال شده: {co}");

                        Utility.ShowBalloon(title, lstMessage);
                    }

                    lstNum.Clear();
                    //}
                }
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
            }
            finally
            {
                monitor.Dispose();
            }

            SemaphoreSlim.Release();
        }