示例#1
0
 public static async Task RegisterSheypoor()
 {
     var sheypoor = new SheypoorAdv();
     var newAdv   = new AdvertiseLogBusiness
     {
         SimCardNumber  = 9154128712,
         Adv            = "dsfsdf",
         ImagesPathList = new List <string>()
     };
     await sheypoor.RegisterAdv(newAdv);
 }
        private async Task <bool> InsertDataInAdvVisitLog(AdvertiseLogBusiness adv)
        {
            try
            {
                var cls = new AdvVisitLogBusiness
                {
                    Guid       = Guid.NewGuid(),
                    Modified   = DateTime.Now,
                    AdvGuid    = adv.Guid,
                    DateM      = adv.DateM,
                    VisitCount = adv.VisitCount,
                    AdvStatus  = adv.AdvStatus,
                    StatusCode = adv.StatusCode,
                    Type       = AdvertiseType.NiazmandyHa
                };
                var res = await cls.SaveAsync();

                return(!res.HasError);
            }
            catch
            {
                return(false);
            }
        }
示例#3
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();
        }
示例#4
0
        private async Task <AdvertiseLogBusiness> GetNextAdv(long simCardNumber)
        {
            var newAdvertiseLogBusiness = new AdvertiseLogBusiness();
            var monitor = new PerfMonitor();

            try
            {
                newAdvertiseLogBusiness.SimCardNumber = simCardNumber;

                #region find visitor and text replacements
                //پیدا کردن ویزیتور ها و متن جایگزین محتوا برای سیم کارت مورد نظر
                var replacements = await VisitorBusiness.GetMasterSlaveAdvReplacementsAsync(newAdvertiseLogBusiness.SimCardNumber);

                if (replacements?.MasterGuid == null)
                {
                    return(null);
                }

                newAdvertiseLogBusiness.MasterVisitorGuid = (Guid)replacements.MasterGuid;
                if (replacements.SlaveGuid != null)
                {
                    newAdvertiseLogBusiness.SlaveVisitorGuid = (Guid)replacements.SlaveGuid;
                }
                #endregion

                #region find visitorAdvs
                //لیست آگهی های مرتبط با ویزیتور دریافت می شود
                AdvertiseList = await Advertise.GetAllAsync(AdvRootPath, newAdvertiseLogBusiness.MasterVisitorGuid);

                AdvertiseList = AdvertiseList.Where(q => q.PishNevis == false).ToList();

                if (!(AdvertiseList?.Count > 0))
                {
                    return(null);
                }

                #endregion

                #region findNextAdvIndex


                var nextAdvIndex = new Random().Next(AdvertiseList.Count);
                #endregion

                #region GetPath

                string path = null;
                path = Path.Combine(Path.Combine(_cls?.NiazSetting?.PicPath, AdvertiseList[nextAdvIndex].AdvName) ==
                                    AdvertiseList[nextAdvIndex].AdvName
                    ? AdvertiseList[nextAdvIndex].RootPath
                    : _cls?.NiazSetting?.PicPath, AdvertiseList[nextAdvIndex].AdvName);
                newAdvertiseLogBusiness.Adv = path;
                #endregion


                #region FindNextTitle
                //تایتل آگهی دریافت می شود
                if (!(AdvertiseList[nextAdvIndex].Titles?.Count > 0))
                {
                    return(null);
                }

                var nextTitleIndex = new Random(DateTime.Now.Millisecond).Next(AdvertiseList[nextAdvIndex].Titles.Count);
                newAdvertiseLogBusiness.Title = AdvertiseList[nextAdvIndex].Titles[nextTitleIndex];


                if (string.IsNullOrEmpty(newAdvertiseLogBusiness.Content))
                {
                    return(null);
                }
                #endregion

                #region GetContent
                //کانتنت آگهی دریافت می شود

                newAdvertiseLogBusiness.Content = AdvertiseList[nextAdvIndex].Content
                                                  .Replace("<master>", replacements.AdvReplacement1)
                                                  .Replace("<slave>", replacements.AdvReplacement2)
                                                  .Replace("<tell>", replacements.Phone)
                                                  .Replace("(", "<")
                                                  .Replace(")", ">");

                if (string.IsNullOrEmpty(newAdvertiseLogBusiness.Content))
                {
                    return(null);
                }

                #endregion

                #region FindImages
                //عکسهای آگهی دریافت می شود
                newAdvertiseLogBusiness.ImagesPathList = GetNextImages(newAdvertiseLogBusiness.Adv,
                                                                       _cls?.NiazSetting?.PicCountInPerAdv ?? 3);
                #endregion

                //قیمت آگهی دریافت می شود
                newAdvertiseLogBusiness.Price = AdvertiseList[nextAdvIndex].Price;

                #region GetCity

                var city = await CityBusiness.GetNextRandomCityAsync(newAdvertiseLogBusiness.MasterVisitorGuid,
                                                                     AdvertiseType.NiazKade);

                newAdvertiseLogBusiness.City  = city?.CityName ?? "مشهد";
                newAdvertiseLogBusiness.State = city?.State.StateName ?? "خراسان رضوی";
                #endregion

                #region GetCategory
                if (AdvertiseList[nextAdvIndex].NiazKadeCategories != null &&
                    AdvertiseList[nextAdvIndex].NiazKadeCategories.Count > 0)
                {
                    newAdvertiseLogBusiness.SubCategory1 = AdvertiseList[nextAdvIndex]?.NiazKadeCategories[0] ?? "";
                    newAdvertiseLogBusiness.SubCategory2 = AdvertiseList[nextAdvIndex]?.NiazKadeCategories[1] ?? "";
                }
                else
                {
                    newAdvertiseLogBusiness.SubCategory1 = null;
                    newAdvertiseLogBusiness.SubCategory2 = null;
                }
                #endregion

                return(newAdvertiseLogBusiness);
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                return(null);
            }

            finally { monitor.Dispose(); }
        }
示例#5
0
        private async Task RegisterAdv(AdvertiseLogBusiness adv)
        {
            var ret     = new ReturnedSaveFuncInfo();
            var monitor = new PerfMonitor();

            try
            {
                adv.AdvType = AdvertiseType.NiazKade;
                _driver     = RefreshDriver(_driver);
                _driver.Navigate().GoToUrl("http://www.niazkade.com/new");
                await Wait(4);



                //کلیک روی ساب کتگوری 1
                if (string.IsNullOrEmpty(adv.SubCategory1))
                {
                    adv.SubCategory1 = _cls?.NiazSetting?.Category1;
                }
                _driver.FindElements(By.ClassName("category-list")).FirstOrDefault(q => q.Text == adv.SubCategory1)?.Click();

                await Wait(2);



                //کلیک روی ساب کتگوری2
                if (string.IsNullOrEmpty(adv.SubCategory2))
                {
                    adv.SubCategory2 = _cls?.NiazSetting?.Category2;
                }
                _driver.FindElements(By.ClassName("category-list")).FirstOrDefault(q => q.Text == adv.SubCategory2)?.Click();
                await Wait();


                //درج عکسها

                _driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(adv.ImagesPath);



                //درج عنوان آگهی
                _driver.FindElement(By.Id("title")).SendKeys("");
                _driver.FindElement(By.Id("title")).SendKeys(adv.Title);
                await Wait();


                //انتخاب شهر
                _driver.FindElements(By.ClassName("vs__search")).FirstOrDefault()?.SendKeys(adv.State + "\n");
                await Wait(2);

                _driver.FindElements(By.ClassName("vs__search")).LastOrDefault()?.SendKeys(adv.City + "\n");
                //await Wait();



                //درج محتوای آگهی
                _driver.FindElement(By.Id("description"))
                .SendKeys("");
                _driver.FindElement(By.Id("description"))
                .SendKeys(adv.Content.Replace('(', '<').Replace(')', '>'));
                //await Wait();



                //درج قیمت
                _driver.FindElement(By.Id("price"))?.SendKeys("");
                _driver.FindElement(By.Id("price"))?.SendKeys(adv.Price.ToString());

                await Wait();

                _driver.FindElement(By.Id("phone_number"))?.SendKeys("");
                _driver.FindElement(By.Id("phone_number"))?.SendKeys("0" + adv.SimCardNumber.ToString());

                await Wait(2);

                //کلیک روی دکمه ثبت آگهی


                _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت اگهی")
                ?.Click();

                //اگر آگهی با موفقیت ثبت شود لینک مدیریت آگهی ذخیره می شود
                await Wait(2);


                adv.URL        = _driver.Url;
                adv.UpdateDesc = @"در صف انتشار";
                adv.AdvStatus  = @"در صف انتشار";
                adv.StatusCode = (short)StatusCode.InPublishQueue;
                adv.AdvType    = AdvertiseType.NiazKade;
                adv.IP         = await GetLocalIpAddress();

                await adv.SaveAsync();

                var sim = await SimCardBusiness.GetAsync(adv.SimCardNumber);

                sim.DivarModified = DateTime.Now;
                await sim.SaveAsync();

                //بعد از درج آگهی در دیتابیس لاگ می شود
            }
            catch (Exception ex)
            {
                // MessageBox.Show(@"در هنگام ثبت آگهی زیر خطا رخ داد\r\n" + adv.Adv + @"\r\n" + ex.Message);
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                ret.AddReturnedValue(ex);
            }
            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();
            }
        }
        private async Task RegisterAdv(AdvertiseLogBusiness adv)
        {
            var ret     = new ReturnedSaveFuncInfo();
            var monitor = new PerfMonitor();

            try
            {
                adv.AdvType = AdvertiseType.NiazmandyHa;
                _driver     = Utility.RefreshDriver(_driver);
                _driver.Navigate().GoToUrl("https://niazmandyha.ir/newAd");
                await Utility.Wait();

                //درج عکسها
                _driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(adv.ImagesPath);

                //درج عنوان آگهی
                _driver.FindElement(By.Name("title")).SendKeys("");
                _driver.FindElement(By.Name("title")).SendKeys(adv.Title);


                //کلیک کردن روی کتگوری اصلی
                _driver.FindElements(By.Name("category")).FirstOrDefault()?.Click();
                await Utility.Wait();

                //کلیک روی ساب کتگوری 1
                if (string.IsNullOrEmpty(adv.SubCategory1))
                {
                    adv.SubCategory1 = cls?.NiazmandyHaSetting?.Category1;
                }
                _driver.FindElements(By.TagName("option")).FirstOrDefault(q => q.Text == adv.SubCategory1)?.Click();

                await Utility.Wait(1);



                //درج قیمت

                _driver.FindElement(By.Name("cost"))?.SendKeys("");
                _driver.FindElement(By.Name("cost"))?.SendKeys(adv.Price.ToString());

                await Utility.Wait();


                //درج محتوای آگهی
                var thread = new Thread(() => Clipboard.SetText(adv.Content.Replace('(', '<').Replace(')', '>')));
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();

                var t = _driver.FindElement(By.TagName("iframe"));
                t.Click();
                await Utility.Wait(1);

                t.SendKeys(OpenQA.Selenium.Keys.Control + "v");
                var thread1 = new Thread(Clipboard.Clear);
                thread1.SetApartmentState(ApartmentState.STA);
                thread1.Start();


                //انتخاب شهر
                await Utility.Wait();

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

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

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

                var cc = _driver.FindElements(By.TagName("option")).FirstOrDefault(q => q.Text == adv.City) ??
                         _driver.FindElements(By.TagName("option")).LastOrDefault();
                await Utility.Wait();

                cc?.Click();


                //کلیک روی دکمه ثبت آگهی
                await Utility.Wait(2);

                _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت آگهی")
                ?.Click();



                //اگر آگهی با موفقیت ثبت شود لینک مدیریت آگهی ذخیره می شود
                await Utility.Wait();

                await Utility.Wait(2);

                adv.URL = await MakeUrl(_driver.Url);

                adv.UpdateDesc = @"در صف انتشار";
                adv.AdvStatus  = @"در صف انتشار";
                adv.StatusCode = (short)StatusCode.InPublishQueue;
                adv.AdvType    = AdvertiseType.NiazmandyHa;
                adv.IP         = await Utility.GetLocalIpAddress();

                adv.SubCategory2 = "-";
                await adv.SaveAsync();

                var sim = await SimCardBusiness.GetAsync(adv.SimCardNumber);

                sim.NiazmandyHaModified = DateTime.Now;
                await sim.SaveAsync();

                //بعد از درج آگهی در دیتابیس لاگ می شود
            }
            catch (Exception ex)
            {
                // MessageBox.Show(@"در هنگام ثبت آگهی زیر خطا رخ داد\r\n" + adv.Adv + @"\r\n" + ex.Message);
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                ret.AddReturnedValue(ex);
            }
            finally { monitor.Dispose(); }
        }
        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();
        }