Example #1
0
        private async Task GetDelete()
        {
            try
            {
                if (cls.DayCountForDelete == 0)
                {
                    return;
                }
                var list = await AdvertiseLogBussines.GetAllAsync();

                var day = DateTime.Now.AddDays(-cls.DayCountForDelete);
                list = list.Where(q =>
                                  q.DateM <= day && q.StatusCode != StatusCode.Deleted && q.StatusCode != StatusCode.Expired)
                       .ToList();
                if (list.Count <= 0)
                {
                    return;
                }
                if (FarsiMessegeBox.Show(
                        $"تعداد {list.Count} آگهی وجود دارد که زمان حذف آنها فرارسیده است. آیا مایلید حذف کنید؟",
                        "حذف آگهی ها از سایت", FMessegeBoxButtons.YesNo) == DialogResult.Yes)
                {
                    var divar = await DivarAdv.GetInstance();

                    await divar.DeleteAllAdvFromDivar(list.OrderBy(q => q.DateM).ToList());
                }
            }
            catch (Exception e)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(e);
            }
        }
Example #2
0
        public async Task <AdvertiseLogBussines> GetAsync(string connectionString, string url)
        {
            AdvertiseLogBussines res = null;

            try
            {
                using (var cn = new SqlConnection(connectionString))
                {
                    var cmd = new SqlCommand("sp_AdvertiseLog_GetByUrl", cn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.AddWithValue("@url", url ?? "");

                    await cn.OpenAsync();

                    var dr = await cmd.ExecuteReaderAsync();

                    if (dr.Read())
                    {
                        res = LoadData(dr);
                    }
                    dr.Close();
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }

            return(res);
        }
Example #3
0
        private AdvertiseLogBussines LoadData(SqlDataReader dr)
        {
            var item = new AdvertiseLogBussines();

            try
            {
                item.Guid          = (Guid)dr["Guid"];
                item.SimcardNumber = (long)dr["SimcardNumber"];
                item.DateM         = (DateTime)dr["DateM"];
                item.Category      = dr["Category"].ToString();
                item.SubCategory1  = dr["SubCategory1"].ToString();
                item.SubCategory2  = dr["SubCategory2"].ToString();
                item.City          = dr["City"].ToString();
                item.Region        = dr["Region"].ToString();
                item.Price1        = (decimal)dr["Price1"];
                item.Price2        = (decimal)dr["Price2"];
                item.Title         = dr["Title"].ToString();
                item.Content       = dr["Content"].ToString();
                item.URL           = dr["URL"].ToString();
                item.UpdateDesc    = dr["UpdateDesc"].ToString();
                item.StatusCode    = (StatusCode)dr["StatusCode"];
                item.IP            = dr["IP"].ToString();
                item.LastUpdate    = (DateTime)dr["LastUpdate"];
                item.VisitCount    = (int)dr["VisitCount"];
                item.AdvType       = (AdvertiseType)dr["AdvType"];
                item.State         = dr["State"].ToString();
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
            return(item);
        }
Example #4
0
        //public async Task GetCategory()
        //{
        //    try
        //    {
        //        _driver = Utility.RefreshDriver(_driver, AppSetting.isSilent);
        //        _driver.Navigate().GoToUrl("https://www.sheypoor.com/listing/new");
        //        await Utility.Wait();
        //        _driver.FindElements(By.ClassName("form-select")).FirstOrDefault()?.Click();
        //        await Utility.Wait();
        //        var listCat = _driver.FindElements(By.TagName("ul")).Where(q => !string.IsNullOrEmpty(q.Text))
        //            .ToList();
        //        listCat = listCat[3].FindElements(By.TagName("li")).ToList();
        //        var listAll = await AdvCategoryBusiness.GetAllAsync();
        //        listAll = listAll.Where(q => q.Type == AdvertiseType.Sheypoor).ToList();
        //        if (listAll.Count > 0)
        //            await AdvCategoryBusiness.RemoveAllAsync(listAll);
        //        foreach (var item in listCat)
        //        {
        //            var a = new AdvCategoryBusiness()
        //            {
        //                Guid = Guid.NewGuid(),
        //                Type = AdvertiseType.Sheypoor,
        //                Name = item.Text.Trim().FixString(),
        //                Modified = DateTime.Now,
        //                ParentGuid = Guid.Empty
        //            };
        //            await a.SaveAsync();
        //        }
        //        listAll = await AdvCategoryBusiness.GetAllAsync();
        //        listAll = listAll.Where(q => q.Type == AdvertiseType.Sheypoor).ToList();
        //        if (listAll.Count <= 0) return;
        //        foreach (var element in listAll)
        //        {
        //            _driver.FindElements(By.ClassName("link")).FirstOrDefault(q => q.Text == element.Name)?.Click();
        //            await Utility.Wait();
        //            var listCat2 = _driver.FindElements(By.TagName("ul")).Where(q => !string.IsNullOrEmpty(q.Text))
        //                .ToList();
        //            listCat2 = listCat2[3].FindElements(By.TagName("li")).ToList();
        //            foreach (var item in listCat2)
        //            {
        //                var a = new AdvCategoryBusiness()
        //                {
        //                    Guid = Guid.NewGuid(),
        //                    Type = AdvertiseType.Sheypoor,
        //                    Name = item.Text.Trim().FixString(),
        //                    Modified = DateTime.Now,
        //                    ParentGuid = element.Guid
        //                };
        //                await a.SaveAsync();
        //            }


        //            var newList = await AdvCategoryBusiness.GetAllAsync(element.Guid, AdvertiseType.Sheypoor);
        //            if (newList.Count <= 0) continue;
        //            _driver.FindElements(By.TagName("span")).FirstOrDefault(q => q.Text.Contains("بازگشت"))?.Click();
        //            await Utility.Wait();
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        WebErrorLog.ErrorLogInstance.StartLog(ex);
        //    }
        //}
        public async Task DeleteAllAdvFromSheypoor(int count, long number)
        {
            try
            {
                var log = await Login(number, false);

                if (!log)
                {
                    return;
                }
                _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
                var allPost     = _driver.FindElements(By.ClassName("serp-item"));
                var manageLinks = new List <string>();
                foreach (var post in allPost)
                {
                    var url = post.GetAttribute("data-href");
                    if (!url.Contains("sheypoor.com"))
                    {
                        continue;
                    }
                    manageLinks.Add(url);
                }

                foreach (var item in manageLinks.Take(count))
                {
                    var url = item.Remove(25, 19);
                    var adv = await AdvertiseLogBussines.GetAsync(url);

                    var i = _driver.FindElements(By.ClassName("serp-item"))
                            .FirstOrDefault(q => q.GetAttribute("data-href") == item)
                            ?.FindElement(By.ClassName("icon-trash"));
                    await Utility.Wait();

                    i?.Click();
                    await Utility.Wait();

                    var yes = _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "بله");
                    yes?.Click();
                    if (adv == null)
                    {
                        continue;
                    }
                    adv.AdvType    = AdvertiseType.Sheypoor;
                    adv.UpdateDesc = "حذف شده توسط ربات";
                    adv.StatusCode = StatusCode.Deleted;
                    adv.LastUpdate = DateTime.Now;
                    await adv.SaveAsync();
                }
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
Example #5
0
 private async Task LoadData(long number, short type, string search = "")
 {
     try
     {
         List <AdvertiseLogBussines> list = null;
         list = number == 0
             ? AdvertiseLogBussines.GetAllAsync(type, search)
             : AdvertiseLogBussines.GetAllAsync(number, type, search);
         LogBindingSource.DataSource = list.OrderBy(q => q.DateM);
         lblCounter.Text             = LogBindingSource.Count.ToString();
     }
     catch (Exception e)
     {
         WebErrorLog.ErrorInstence.StartErrorLog(e);
     }
 }
Example #6
0
        public async Task <ReturnedSaveFuncInfo> SaveAsync(AdvertiseLogBussines item, SqlTransaction tr)
        {
            var res = new ReturnedSaveFuncInfo();

            try
            {
                var cmd = new SqlCommand("sp_AdvertiseLog_Save", tr.Connection, tr)
                {
                    CommandType = CommandType.StoredProcedure
                };
                cmd.Parameters.AddWithValue("@guid", item.Guid);
                cmd.Parameters.AddWithValue("@number", item.SimcardNumber);
                cmd.Parameters.AddWithValue("@dateM", item.DateM);
                cmd.Parameters.AddWithValue("@cat", item.Category ?? "");
                cmd.Parameters.AddWithValue("@subCat1", item.SubCategory1 ?? "");
                cmd.Parameters.AddWithValue("@subCat2", item.SubCategory2 ?? "");
                cmd.Parameters.AddWithValue("@city", item.City ?? "");
                cmd.Parameters.AddWithValue("@region", item.Region ?? "");
                cmd.Parameters.AddWithValue("@price1", item.Price1);
                cmd.Parameters.AddWithValue("@price2", item.Price2);
                cmd.Parameters.AddWithValue("@title", item.Title ?? "");
                cmd.Parameters.AddWithValue("@content", item.Content ?? "");
                cmd.Parameters.AddWithValue("@url", item.URL ?? "");
                cmd.Parameters.AddWithValue("@updateDesc", item.UpdateDesc ?? "");
                cmd.Parameters.AddWithValue("@statusCode", (int)item.StatusCode);
                cmd.Parameters.AddWithValue("@cat", item.Category ?? "");
                cmd.Parameters.AddWithValue("@ip", item.IP ?? "");
                cmd.Parameters.AddWithValue("@lastUpdate", item.LastUpdate);
                cmd.Parameters.AddWithValue("@visitCount", item.VisitCount);
                cmd.Parameters.AddWithValue("@type", (short)item.AdvType);
                cmd.Parameters.AddWithValue("@state", item.State ?? "");

                await cmd.ExecuteNonQueryAsync();
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                res.AddReturnedValue(ex);
            }

            return(res);
        }
Example #7
0
        public static async Task <ReturnedSaveFuncInfo> SaveAdv(AdvertiseType type, string fCat, string sCat,
                                                                string thCat, string state, string city, string region, string title, string content, long number,
                                                                decimal price1, decimal price2, string url)
        {
            var res = new ReturnedSaveFuncInfo();

            try
            {
                var log = new AdvertiseLogBussines()
                {
                    Guid          = Guid.NewGuid(),
                    Region        = region,
                    Title         = title,
                    Content       = content,
                    City          = city,
                    State         = state,
                    SimcardNumber = number,
                    Price2        = price2,
                    Price1        = price1,
                    DateM         = DateTime.Now,
                    SubCategory2  = thCat,
                    Category      = fCat,
                    SubCategory1  = sCat,
                    AdvType       = type,
                    IP            = Utilities.GetIp(),
                    LastUpdate    = DateTime.Now,
                    StatusCode    = StatusCode.InPublishQueue,
                    URL           = url,
                    UpdateDesc    = "آگهی در صف انتشار قرارداد",
                    VisitCount    = 0
                };
                res.AddReturnedValue(await log.SaveAsync());
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                res.AddReturnedValue(ex);
            }

            return(res);
        }
Example #8
0
        private async Task <bool> UpdateAllRegisteredAdvOfSimCard(long simCardNumber)
        {
            try
            {
                var log = await Login(simCardNumber, false);

                if (!log)
                {
                    return(false);
                }
                _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
                var allPost     = _driver.FindElements(By.ClassName("serp-item"));
                var manageLinks = new List <string>();
                if (allPost == null || allPost.Count <= 0)
                {
                    return(true);
                }
                foreach (var post in allPost)
                {
                    var url = post.GetAttribute("data-href");
                    if (!url.Contains("sheypoor.com"))
                    {
                        continue;
                    }
                    manageLinks.Add(url);
                }
                foreach (var url in manageLinks)
                {
                    var getUrl = await AdvertiseLogBussines.GetAsync(url);

                    if (!string.IsNullOrEmpty(getUrl?.URL))
                    {
                        continue;
                    }
                    _driver.Navigate().GoToUrl(url);

                    if (getUrl is null) //اگر آگهی قبلا در دیتابیس ثبت نشده باشد
                    {
                        getUrl = new AdvertiseLogBussines()
                        {
                            URL           = url,
                            SimcardNumber = simCardNumber,
                            Category      = "برای کسب و کار",
                            SubCategory1  = "-",
                            SubCategory2  = "-",
                            AdvType       = AdvertiseType.Sheypoor
                        };
                        //dateM
                        await Utility.Wait();

                        var publishDateEl = _driver.FindElement(By.TagName("time"));
                        if (publishDateEl != null)
                        {
                            getUrl.DateM = Utility.GetDateMFromPublishTime(publishDateEl.Text);
                        }
                        //price and city
                        var postFieldElements = _driver.FindElement(By.Id("breadcrumbs")).FindElements(By.TagName("a"))
                                                .ToList();
                        var fieldElements = postFieldElements.ToList();
                        if (!fieldElements.Any())
                        {
                            continue;
                        }
                        for (var i = 0; i < fieldElements.Count(); i++)
                        {
                            if (fieldElements[i].Text == "")
                            {
                                continue;
                            }
                            // if (i == 1) getUrl.State = fieldElements[i].Text.FixString();
                            if (i == 2)
                            {
                                getUrl.City = fieldElements[i].Text.FixString();
                            }
                            if (i == 3 && fieldElements.Count() == 5)
                            {
                                getUrl.SubCategory1 = fieldElements[i].Text.FixString();
                            }
                            if (i == 4 && fieldElements.Count() == 5)
                            {
                                getUrl.SubCategory2 = fieldElements[i].Text.FixString();
                            }
                            if (i == 3 && fieldElements.Count() == 6)
                            {
                                getUrl.Region = fieldElements[i].Text.FixString();
                            }
                            if (i == 4 && fieldElements.Count() == 6)
                            {
                                getUrl.SubCategory1 = fieldElements[i].Text.FixString();
                            }
                            if (i == 5 && fieldElements.Count() == 6)
                            {
                                getUrl.SubCategory2 = fieldElements[i].Text.FixString();
                            }
                        }

                        var price = _driver.FindElement(By.ClassName("item-price"));
                        if (price == null)
                        {
                            continue;
                        }
                        //getUrl.Price = price.Text.FixString().Replace("تومان", "").ParseToDecimal();
                    }

                    //status
                    await Utility.Wait();

                    getUrl.StatusCode = StatusCode.Published;
                    //updateDesc - desc
                    getUrl.UpdateDesc = "آگهی منتشر شده و در لیست آگهی های شیپور قرار گرفته است";

                    //title
                    getUrl.Title = _driver.FindElement(By.ClassName("content")).FindElement(By.TagName("h2")).Text.FixString();

                    //visit Count
                    var visitCountEl = _driver.FindElement(By.ClassName("stat-view"));
                    getUrl.VisitCount = visitCountEl.Text.FixString().ParseToInt();

                    //content
                    var ul = getUrl.URL.Remove(25, 19);
                    _driver.Navigate().GoToUrl(ul);
                    await Utility.Wait();

                    getUrl.Content = _driver.FindElement(By.ClassName("description")).Text.FixString();
                    getUrl.URL     = ul;
                    await getUrl.SaveAsync();
                }
                return(true);
            }
            catch (WebDriverException)
            {
                return(true);
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                return(true);
            }
        }
Example #9
0
        public async Task StartRegisterAdv(AdvertiseLogBussines adv, long number)
        {
            var counter = 0;

            try
            {
                var res__ = await Utilities.PingHostAsync();

                while (res__.HasError)
                {
                    await Utility.Wait(10);

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

                var sim = await SimcardBussines.GetAsync(number);

                if (sim.isSheypoorBlocked)
                {
                    lstMessage.Clear();
                    lstMessage.Add($"نوع آگهی: شیپور");
                    lstMessage.Add($"شماره: {number}");
                    lstMessage.Add($"مالک: {sim.Owner}");
                    lstMessage.Add("بدلیل بلاک بودن، موفق به لاگین نشد");
                    Utility.ShowBalloon("عدم انجام لاگین", lstMessage);
                    sim.NextUseSheypoor = DateTime.Now.AddDays(1);
                    await sim.SaveAsync();

                    return;
                }

                var tt = await Utility.CheckToken(number, AdvertiseType.Sheypoor);

                if (tt.HasError)
                {
                    lstMessage.Clear();
                    lstMessage.Add($"نوع آگهی: شیپور");
                    lstMessage.Add($"شماره: {number}");
                    lstMessage.Add($"مالک: {sim.Owner}");
                    lstMessage.Add("بدلیل توکن نداشتن، موفق به لاگین نشد");
                    Utility.ShowBalloon("عدم انجام لاگین", lstMessage);
                    sim.NextUseSheypoor = DateTime.Now.AddDays(1);
                    await sim.SaveAsync();

                    return;
                }
                if (!await Login(number, false))
                {
                    return;
                }

                await GetChatCount(number);

                var res_ = await RegisterAdv(adv);

                if (res_.HasError)
                {
                    return;
                }

                //تشخیص بلاکی
                _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
                await Utility.Wait(2);

                var el = _driver.FindElements(By.TagName("article")).Any();
                await Utility.Wait();

                if (el)
                {
                    return;
                }
                TelegramSender.GetChatLog_bot().Send($"#گزارش_تشخیص_بلاکی_در_شیپور \r\n" +
                                                     $" سیمکارت {number} " +
                                                     $"\r\n به مالکیت {sim.Owner}" +
                                                     $" \r\n در تاریخ {Calendar.MiladiToShamsi(DateTime.Now)} " +
                                                     $"\r\n و ساعت {DateTime.Now.ToLongTimeString()} " +
                                                     $"\r\n از سوی ربات، بلاک شده تشخیص داده شد");
            }
            catch (WebDriverException) { }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
Example #10
0
        private async Task <ReturnedSaveFuncInfo> RegisterAdv(AdvertiseLogBussines adv)
        {
            var ret = new ReturnedSaveFuncInfo();

            //try
            //{
            //    var counter = 0;
            //    adv.AdvType = AdvertiseType.Sheypoor;
            //    _driver = Utility.RefreshDriver(_driver, clsAdvertise.IsSilent);
            //    _driver.Navigate().GoToUrl("https://www.sheypoor.com/listing/new");
            //    await Utility.Wait();

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

            //    //کلیک روی ساب کتگوری 1
            //    if (string.IsNullOrEmpty(adv.SubCategory1))
            //        adv.SubCategory1 = clsAdvertise.SheypoorSetting?.Category1 ?? "";

            //    if (string.IsNullOrEmpty(adv.SubCategory1))
            //        adv.SubCategory1 = clsAdvertise.SheypoorSetting?.Category1;

            //    _driver.FindElements(By.ClassName("link")).FirstOrDefault(q => q.Text == adv.SubCategory1)?.Click();

            //    await Utility.Wait();

            //    //کلیک روی ساب کتگوری2
            //    if (string.IsNullOrEmpty(adv.SubCategory2))
            //        adv.SubCategory2 = clsAdvertise.SheypoorSetting?.Category2 ?? "";

            //    if (string.IsNullOrEmpty(adv.SubCategory2))
            //        adv.SubCategory2 = clsAdvertise.SheypoorSetting?.Category2;

            //    _driver.FindElements(By.ClassName("link")).FirstOrDefault(q => q.Text == adv.SubCategory2)?.Click();

            //    //درج عکسها
            //    _driver.FindElement(By.ClassName("qq-upload-button-selector")).FindElement(By.TagName("input"))
            //        .SendKeys(adv.ImagesPath);

            //    //درج عنوان آگهی
            //    _driver.FindElement(By.Name("name")).SendKeys("");
            //    _driver.FindElement(By.Name("name")).SendKeys(adv.Title);
            //    //await Wait();
            //    //درج محتوای آگهی
            //    var thread = new Thread(() => Clipboard.SetText(adv.Content.Replace('(', '<').Replace(')', '>')));
            //    thread.SetApartmentState(ApartmentState.STA);
            //    thread.Start();
            //    var t = _driver.FindElement(By.Id("item-form-description"));
            //    t.Click();
            //    await Utility.Wait();
            //    t.SendKeys(OpenQA.Selenium.Keys.Control + "v");
            //    var thread1 = new Thread(Clipboard.Clear);
            //    thread1.SetApartmentState(ApartmentState.STA);
            //    thread1.Start();


            //    //درج قیمت
            //    //var txtPrice = _driver.FindElements(By.Id("item-form-price")).Count;
            //    //if (adv?.Price1 > 0 && txtPrice != 0)
            //    //{
            //    //    line = 30;
            //    //    _driver.FindElement(By.Id("item-form-price"))?.SendKeys("");
            //    //    line = 31;
            //    //    _driver.FindElement(By.Id("item-form-price"))?.SendKeys(adv.Price.ToString());
            //    //}

            //    await Utility.Wait();

            //    //انتخاب شهر
            //    await Utility.Wait();
            //    _driver.FindElements(By.ClassName("form-select")).LastOrDefault()?.Click();
            //    await Utility.Wait();
            //    var a = _driver.FindElements(By.ClassName("mode-district")).Any();
            //    if (a)
            //    {
            //        _driver.FindElement(By.ClassName("mode-district")).FindElement(By.ClassName("link"))?.Click();
            //        await Utility.Wait();
            //        _driver.FindElement(By.ClassName("mode-city")).FindElement(By.ClassName("link"))?.Click();
            //    }

            //    await Utility.Wait();
            //    _driver.FindElements(By.TagName("li"))?.FirstOrDefault(q => q.Text.Contains(adv.State))?.Click();
            //    await Utility.Wait();
            //    var cc = _driver.FindElements(By.TagName("li")).FirstOrDefault(q => q.Text.Contains(adv.City));
            //    cc?.Click();
            //    var cty = await CityBusiness.GetAsync(adv?.City);
            //    var randCity = await CityBusiness.GetNextRandomCityAsync(adv.MasterVisitorGuid, AdvertiseType.Sheypoor);
            //    await Utility.Wait();
            //    var cityGuid = !string.IsNullOrEmpty(adv?.City) ? cty.Guid : randCity.Guid;
            //    var lst = await RegionBusiness.GetAllAsync(cityGuid, AdvertiseType.Sheypoor);
            //    var regionList = lst?.ToList() ?? new List<RegionBusiness>();
            //    if (regionList.Count > 0)
            //    {
            //        var rnd = new Random().Next(0, regionList.Count);
            //        var regName = regionList[rnd].Name;
            //        await Utility.Wait();
            //        _driver.FindElements(By.TagName("li"))?.FirstOrDefault(q => q.Text == regName)
            //            ?.Click();
            //        adv.Region = regName;
            //    }
            //    // await Wait();

            //    //کلیک روی دکمه ثبت آگهی
            //    while (_driver.Url == "https://www.sheypoor.com/listing/new")
            //    {
            //        try
            //        {
            //            _driver.SwitchTo().Alert().Accept();
            //        }
            //        catch { }

            //        counter++;
            //        await Utility.Wait(2);
            //        _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت آگهی")
            //            ?.Click();
            //        await Utility.Wait();
            //        var box = _driver.FindElements(By.ClassName("box")).Any(q => q.Text.Contains("حساب کاربری"));
            //        if (box) return ret;
            //        if (counter < 60) continue;
            //        await Utility.GetScreenShot(_driver);
            //        adv.URL = "---";
            //        adv.UpdateDesc = @"خطای درج";
            //        adv.StatusCode = StatusCode.InsertError;
            //        adv.AdvType = AdvertiseType.Sheypoor;
            //        adv.IP = await Utility.GetLocalIpAddress();
            //        await adv.SaveAsync();
            //        await Utility.Wait();
            //        counter = 0;
            //        _driver.Navigate().GoToUrl("https://www.sheypoor.com");
            //        return ret;
            //    }
            //    //اگر آگهی با موفقیت ثبت شود لینک مدیریت آگهی ذخیره می شود
            //    await Utility.Wait();
            //    counter = 0;
            //    adv.URL = await MakeUrl(_driver.Url);
            //    adv.UpdateDesc = @"در صف انتشار";
            //    adv.StatusCode = StatusCode.InPublishQueue;
            //    adv.AdvType = AdvertiseType.Sheypoor;
            //    adv.IP = await Utility.GetLocalIpAddress();
            //    await adv.SaveAsync();
            //    await Utility.Wait();
            //    var _30days = _driver.FindElements(By.TagName("strong"))
            //        .Any(q => q.Text.Contains("شما به سقف ۳۰ آگهی در دوره‌ی ۳۰ روزه رسیده‌اید"));
            //    if (_30days)
            //        ret.AddReturnedValue(ReturnedState.Error, "پر شدن تعداد آگهی در ماه");


            //    //await Utility.InsertDataInAdvVisitLog(adv, AdvertiseType.Sheypoor);
            //    if (!_driver.Url.Contains(adv.URL))
            //        _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
            //}
            //catch (ElementClickInterceptedException) { }
            //catch (WebDriverException) { }
            //catch (Exception ex)
            //{
            //    WebErrorLog.ErrorInstence.StartErrorLog(ex);
            //    ret.AddReturnedValue(ex);
            //}

            return(ret);
        }
Example #11
0
        public static async Task ManageAdvSend(SettingBussines clsSetting)
        {
            try
            {
                var tokenSource = new CancellationTokenSource();

                SimcardBussines firstSimCardBusiness = null;
                var             list = await SimcardBussines.GetAllAsync();

                list = list.OrderBy(q => q.NextUse).Where(q => q.Status).ToList();
                foreach (var simCard in list)
                {
                    while (!await Utility.PingHost("www.google.com"))
                    {
                        //خطا در برقراری اتصال به اینترنت
                        await Utility.Wait(10);

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

                    if (simCard.isSendPostToTelegram)
                    {
                        var city = DivarCityBussines.GetAsync(simCard.CityForGetPost ?? Guid.Empty)?.Name ?? "مشهد";
                        var cat1 = AdvCategoryBussines.Get(simCard.DivarPostCat1 ?? Guid.Empty)?.Name ?? "خدمات";
                        var cat2 = AdvCategoryBussines.Get(simCard.DivarPostCat2 ?? Guid.Empty)?.Name ??
                                   "آرایشگری و زیبایی";
                        var cat3   = AdvCategoryBussines.Get(simCard.DivarPostCat3 ?? Guid.Empty)?.Name ?? "";
                        var chatID = simCard.ChannelForSendPost ?? "@Test2_2211201";
                        var divar  = await DivarAdv.GetInstance();

                        await divar.GetPost(simCard.Number, cat1, cat2, cat3
                                            , city, simCard.PostCount ?? 5, chatID, simCard.DescriptionForPost ?? "",
                                            simCard.SMS_Description);
                    }

                    if (simCard.IsSendAdv)
                    {
                        try
                        {
                            //کنترل شماره خروجی
                            if (simCard.Number == 0)
                            {
                                lstMessage.Clear();
                                lstMessage.Add("پر شدن تعداد آگهی در IP");
                                Utility.ShowBalloon("پر شدن تعداد آگهی در " + await Utility.FindGateWay(), lstMessage);
                                continue;
                            }

                            //کنترل تعداد آگهی ارسال شده در هر IP
                            while (clsSetting?.CountAdvInIP <=
                                   AdvertiseLogBussines.GetAllAdvInDayFromIP(await Utility.GetLocalIpAddress()))
                            {
                                await Utility.Wait(20);

                                lstMessage.Clear();
                                lstMessage.Add("پر شدن تعداد آگهی");
                                Utility.ShowBalloon("پر شدن تعداد آگهی در " + await Utility.FindGateWay(), lstMessage);
                                await SendChat(clsSetting, simCard);
                            }

                            firstSimCardBusiness = await SimcardBussines.GetAsync(simCard.Number);

                            if (firstSimCardBusiness is null)
                            {
                                continue;
                            }

                            var lastUse = firstSimCardBusiness.NextUse;
                            var startDayOfCurrentMonthOfDateShToMiladi = DateConvertor.StartDayOfPersianMonth();
                            var startDayOfNextMonthOfDateShToMiladi    = DateConvertor.EndDayOfPersianMonth().AddDays(1);
                            //آمار آگهی های ثبت شده برای سیم کارت در ماه جاری
                            var a1 = await AdvertiseLogBussines.GetAllAsync();

                            a1 = a1.Where(p => p.SimCardNumber == simCard.Number &&
                                          (p.StatusCode ==
                                           StatusCode
                                           .Published ||
                                           p.StatusCode ==
                                           StatusCode
                                           .InPublishQueue ||
                                           p.StatusCode ==
                                           StatusCode
                                           .WaitForPayment) &&
                                          p.DateM >=
                                          startDayOfCurrentMonthOfDateShToMiladi).ToList();

                            var registeredAdvCount = a1.Count;
                            if (registeredAdvCount >= clsSetting?.CountAdvInMounth)
                            {
                                //تاریخ روز اول ماه شمسی بعد را تنظیم می کند چون تا سر ماه بعد دیگر نیازی به این سیم کارت نیست
                                firstSimCardBusiness.NextUse = startDayOfNextMonthOfDateShToMiladi;
                                await firstSimCardBusiness.SaveAsync();

                                lstMessage.Clear();
                                lstMessage.Add(
                                    $"سیمکارت {simCard.Number} به دلیل پر بودن آگهی ها در ماه موفق به ارسال آگهی نشد");
                                Utility.ShowBalloon("عدم ارسال آگهی", lstMessage);
                                await SendChat(clsSetting, simCard);

                                continue;
                            }

                            //آمار آگهی های ثبت شده امروز
                            var currentDate = DateTime.Now.Date;
                            var a2          = await AdvertiseLogBussines.GetAllAsync();

                            a2 = a2.Where(p =>
                                          p.SimCardNumber == simCard.Number &&
                                          (p.StatusCode == StatusCode.Published ||
                                           p.StatusCode == StatusCode.InPublishQueue ||
                                           p.StatusCode == StatusCode.WaitForPayment) &&
                                          p.DateM >= currentDate).ToList();
                            registeredAdvCount = a2.Count;
                            if (registeredAdvCount >= clsSetting?.CountAdvInDay)
                            {
                                //تاریخ فردا رو ست می کند چون تا فردا دیگه نیازی به این سیم کارت نیست
                                firstSimCardBusiness.NextUse = DateTime.Today.AddDays(1);
                                await firstSimCardBusiness.SaveAsync();

                                lstMessage.Clear();
                                lstMessage.Add(
                                    $"سیمکارت {simCard.Number} به دلیل پرپودن آگهی ها در روز موفق به ارسال آگهی نشد");
                                Utility.ShowBalloon("عدم ارسال آگهی", lstMessage);
                                await SendChat(clsSetting, simCard);

                                continue;
                            }

                            var divar = await DivarAdv.GetInstance();

                            await divar.StartRegisterAdv(simCard);

                            simCard.NextUse = DateTime.Now.AddMinutes(30);
                            await simCard.SaveAsync();
                            await Wait(2);
                        }
                        catch (Exception e)
                        {
                        }
                    }
                    if (simCard.IsSendAdvSheypoor)
                    {
                        //کنترل شماره خروجی
                        if (simCard.Number == 0)
                        {
                            lstMessage.Clear();
                            lstMessage.Add("پر شدن تعداد آگهی در IP");
                            Utility.ShowBalloon("پر شدن تعداد آگهی در " + await Utility.FindGateWay(), lstMessage);
                            continue;
                        }

                        //کنترل تعداد آگهی ارسال شده در هر IP
                        while (clsSetting?.CountAdvInIP <=
                               AdvertiseLogBussines.GetAllAdvInDayFromIP(await Utility.GetLocalIpAddress()))
                        {
                            await Utility.Wait(20);

                            lstMessage.Clear();
                            lstMessage.Add("پر شدن تعداد آگهی");
                            Utility.ShowBalloon("پر شدن تعداد آگهی در " + await Utility.FindGateWay(), lstMessage);
                            await SendChat(clsSetting, simCard);
                        }

                        firstSimCardBusiness = await SimcardBussines.GetAsync(simCard.Number);

                        if (firstSimCardBusiness is null)
                        {
                            continue;
                        }

                        var lastUse = firstSimCardBusiness.NextUse;
                        var card1   = simCard.Number;
                        var startDayOfCurrentMonthOfDateShToMiladi = DateConvertor.StartDayOfPersianMonth();
                        var startDayOfNextMonthOfDateShToMiladi    = DateConvertor.EndDayOfPersianMonth().AddDays(1);
                        //آمار آگهی های ثبت شده برای سیم کارت در ماه جاری
                        var a1 = await AdvertiseLogBussines.GetAllAsync();

                        a1 = a1.Where(p => p.SimCardNumber == card1 &&
                                      (p.StatusCode ==
                                       StatusCode
                                       .Published ||
                                       p.StatusCode ==
                                       StatusCode
                                       .InPublishQueue ||
                                       p.StatusCode ==
                                       StatusCode
                                       .WaitForPayment) &&
                                      p.DateM >=
                                      startDayOfCurrentMonthOfDateShToMiladi).ToList();

                        var registeredAdvCount = a1.Count;
                        if (registeredAdvCount >= clsSetting?.CountAdvInMounth)
                        {
                            //تاریخ روز اول ماه شمسی بعد را تنظیم می کند چون تا سر ماه بعد دیگر نیازی به این سیم کارت نیست
                            firstSimCardBusiness.NextUse = startDayOfNextMonthOfDateShToMiladi;
                            await firstSimCardBusiness.SaveAsync();

                            lstMessage.Clear();
                            lstMessage.Add(
                                $"سیمکارت {simCard.Number} به دلیل پر بودن آگهی ها در ماه موفق به ارسال آگهی نشد");
                            Utility.ShowBalloon("عدم ارسال آگهی", lstMessage);
                            await SendChat(clsSetting, simCard);

                            continue;
                        }

                        //آمار آگهی های ثبت شده امروز
                        var currentDate = DateTime.Now.Date;
                        var a2          = await AdvertiseLogBussines.GetAllAsync();

                        a2 = a2.Where(p =>
                                      p.SimCardNumber == card1 &&
                                      (p.StatusCode == StatusCode.Published ||
                                       p.StatusCode == StatusCode.InPublishQueue ||
                                       p.StatusCode == StatusCode.WaitForPayment) &&
                                      p.DateM >= currentDate).ToList();
                        registeredAdvCount = a2.Count;
                        if (registeredAdvCount >= clsSetting?.CountAdvInDay)
                        {
                            //تاریخ فردا رو ست می کند چون تا فردا دیگه نیازی به این سیم کارت نیست
                            firstSimCardBusiness.NextUse = DateTime.Today.AddDays(1);
                            await firstSimCardBusiness.SaveAsync();

                            lstMessage.Clear();
                            lstMessage.Add(
                                $"سیمکارت {simCard.Number} به دلیل پرپودن آگهی ها در روز موفق به ارسال آگهی نشد");
                            Utility.ShowBalloon("عدم ارسال آگهی", lstMessage);
                            await SendChat(clsSetting, simCard);

                            continue;
                        }

                        var shey = await SheypoorAdv.GetInstance();

                        await shey.StartRegisterAdv(simCard);

                        simCard.NextUse = DateTime.Now.AddMinutes(30);
                        await simCard.SaveAsync();
                        await Wait(2);
                    }

                    if (simCard.IsSendChat)
                    {
                        await SendChat(clsSetting, simCard);
                    }


                    CloseAllChromeWindows();



                    simCard.NextUse = DateTime.Now.AddHours(1);
                    await simCard.SaveAsync();
                }
                await Utility.Wait(10);

                lstMessage.Clear();
                lstMessage.Add("لیست کاملا پیمایش شد");
                Utility.ShowBalloon("اتمام یک دور کامل از پیمایش سیمکارت ها", lstMessage);
                await UpdateAdvStatus(clsSetting?.DayCountForUpdateState ?? 10);

                CloseAllChromeWindows();
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
Example #12
0
        private async Task FillChart()
        {
            try
            {
                const int dayCount = 7;
                //لیستی از تاریخ های شمسی هفته اخیر
                var lstDate = new List <string>();
                //تعداد کل آگهی ها ارسال شده
                var lstAll = await AdvertiseLogBussines.GetAdvCountInSpecialMounthAsync(dayCount, AdvertiseType.All);

                //تعداد آگهی های ارسال شده در دیوار در هفته اخیر
                var lstAllDivar = await AdvertiseLogBussines.GetAdvCountInSpecialMounthAsync(dayCount, AdvertiseType.Divar);

                //تعداد آگهی های ارسال شده در شیپور در هفته اخیر
                var lstAllSheypoor = await AdvertiseLogBussines.GetAdvCountInSpecialMounthAsync(dayCount, AdvertiseType.Sheypoor);

                //تعداد کل آگهی های منتشر شده
                var lstAllPub = await AdvertiseLogBussines.GetPublishedAdvCountInSpecialMounthAsync(dayCount, AdvertiseType.All);

                //تعداد آگهی های منتشر شده در دیوار
                var lstDivarPublished = await
                                        AdvertiseLogBussines.GetPublishedAdvCountInSpecialMounthAsync(dayCount, AdvertiseType.Divar);

                //تعداد آگهی های منتظر شده در شیپور
                var lstSheypoorPublished = await
                                           AdvertiseLogBussines.GetPublishedAdvCountInSpecialMounthAsync(dayCount, AdvertiseType.Sheypoor);

                var firstDate  = DateTime.Now.AddDays(-dayCount);
                var secondDate = DateTime.Now;
                //پرکردن لیست تاریخ از امروز تا 7 روز پیش به شمسی
                for (var i = firstDate; i <= secondDate; i = i.AddDays(1))
                {
                    var stri = DateConvertor.M2SH(i);
                    lstDate.Add(stri.Substring(5, 5));
                }
                //بدست آوردن درصد آگهی های منتشر شده به کل آگهی های یک روز
                for (var i = 0; i < lstAll.Count; i++)
                {
                    var sub = ((float)lstAllPub[i] / (float)lstAll[i]);
                    var per = 0;
                    if (sub > 0)
                    {
                        per = (int)(sub * 100);
                    }
                    lstDate[i] = lstDate[i] + "  %" + per;
                }


                chart1.Palette = ChartColorPalette.Grayscale;
                chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 0;
                chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 0;
                chart1.Titles.Clear();
                chart1.Series.Clear();
                var divarserieAll = new Series {
                    ChartType = SeriesChartType.Column, Name = "تعداد کل آگهی های دیوار"
                };
                divarserieAll.ChartType = SeriesChartType.Column;
                for (var i = 0; i < lstAllDivar.Count; i++)
                {
                    divarserieAll.Points.AddXY(lstDate[i], lstAllDivar[i]);
                    divarserieAll.IsValueShownAsLabel = true;
                }

                var divarseriePublished = new Series {
                    ChartType = SeriesChartType.Column, Name = "تعداد آگهی های منتشر شده در دیوار"
                };
                divarseriePublished.ChartType = SeriesChartType.RangeColumn;
                for (var i = 0; i < lstAllDivar.Count; i++)
                {
                    divarseriePublished.Points.AddXY(lstDate[i], lstDivarPublished[i]);
                    divarseriePublished.IsValueShownAsLabel = true;
                }


                var sheyserieAll = new Series {
                    ChartType = SeriesChartType.Column, Name = "تعداد کل آگهی های شیپور"
                };
                sheyserieAll.ChartType = SeriesChartType.Column;
                for (var i = 0; i < lstAllSheypoor.Count; i++)
                {
                    sheyserieAll.Points.AddXY(lstDate[i], lstAllSheypoor[i]);
                    sheyserieAll.IsValueShownAsLabel = true;
                }

                var sheyseriePublished = new Series {
                    ChartType = SeriesChartType.Column, Name = "تعداد آگهی های منتشر شده در شیپور"
                };
                sheyseriePublished.ChartType = SeriesChartType.RangeColumn;
                for (var i = 0; i < lstAllSheypoor.Count; i++)
                {
                    sheyseriePublished.Points.AddXY(lstDate[i], lstSheypoorPublished[i]);
                    sheyseriePublished.IsValueShownAsLabel = true;
                }



                chart1.Series.Add(divarserieAll);
                chart1.Series.Add(divarseriePublished);
                chart1.Series.Add(sheyserieAll);
                chart1.Series.Add(sheyseriePublished);
                chart1.ChartAreas[0].BackColor = Color.Transparent;
                chart1.Visible = true;
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }