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); } }
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); }
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); }
//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); } }
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); } }
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); }
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); }
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); } }
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); } }
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); }
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); } }
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); } }