public frmSimcard(Guid guid, bool isShowMode)
 {
     InitializeComponent();
     cls = SimcardBussines.Get(guid);
     grpAccount.Enabled = !isShowMode;
     btnFinish.Enabled  = !isShowMode;
 }
        private async void mnuDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (DGrid.RowCount == 0)
                {
                    return;
                }
                if (DGrid.CurrentRow == null)
                {
                    return;
                }
                var accGuid = (Guid)DGrid[dgGuid.Index, DGrid.CurrentRow.Index].Value;
                var Acc     = SimcardBussines.GetAsync(accGuid);
                var message = "آیا از حذف سیمکارت " + Acc.Number + " " + "اطمینان دارید؟";

                if (FarsiMessegeBox.Show(message, "حذف", FMessegeBoxButtons.YesNo, FMessegeBoxIcons.Question) !=
                    DialogResult.Yes)
                {
                    return;
                }
                Acc = SimcardBussines.Change_Status(accGuid, false);
                await Acc.SaveAsync();
                await LoadData(txtSearch.Text);
            }
            catch (Exception exception)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(exception);
            }
        }
        public async Task <SimcardBussines> GetAsync(string _connectionString, Guid guid)
        {
            var obj = new SimcardBussines();

            try
            {
                using (var cn = new SqlConnection(_connectionString))
                {
                    var cmd = new SqlCommand("sp_Simcard_Get", cn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.AddWithValue("@guid", guid);
                    await cn.OpenAsync();

                    var dr = await cmd.ExecuteReaderAsync();

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

            return(obj);
        }
        public async Task <ReturnedSaveFuncInfo> SaveAsync(SimcardBussines item, SqlTransaction tr)
        {
            var res = new ReturnedSaveFuncInfo();

            try
            {
                var cmd = new SqlCommand("sp_Simcard_Save", tr.Connection, tr)
                {
                    CommandType = CommandType.StoredProcedure
                };
                cmd.Parameters.AddWithValue("@guid", item.Guid);
                cmd.Parameters.AddWithValue("@st", item.Status);
                cmd.Parameters.AddWithValue("@number", item.Number);
                cmd.Parameters.AddWithValue("@owner", item.Owner ?? "");
                cmd.Parameters.AddWithValue("@operator", item.Operator ?? "");
                cmd.Parameters.AddWithValue("@shBlock", item.isSheypoorBlocked);
                cmd.Parameters.AddWithValue("@nextUseSh", item.NextUseSheypoor);
                cmd.Parameters.AddWithValue("@nextUseD", item.NextUseDivar);

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

            return(res);
        }
Example #5
0
        private async void mnuDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (DGrid.RowCount <= 0)
                {
                    return;
                }
                if (DGrid.CurrentRow == null)
                {
                    return;
                }
                var guid = (Guid)DGrid[dgGuid.Index, DGrid.CurrentRow.Index].Value;
                if (MessageBox.Show($@"آیا از حذف شماره {DGrid[dgNumber.Index, DGrid.CurrentRow.Index].Value} اطمینان دارید؟", "حذف", MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }
                var sim = await SimcardBussines.GetAsync(guid);

                var res = await sim.RemoveAsync();

                if (res.HasError)
                {
                    frmNotification.PublicInfo.ShowMessage(res.ErrorMessage);
                    return;
                }
                frmLoading.PublicInfo.ShowForm();
                await LoadData(txtSearch.Text);
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
 public frmSimcardMain(Guid guid, bool isShowMode)
 {
     InitializeComponent();
     cls                 = SimcardBussines.Get(guid);
     ucHeader.Text       = !isShowMode ? $"ویرایش سیمکارت {cls.Number}" : $"مشاهده سیمکارت {cls.Number}";
     ucHeader.IsModified = true;
     grp.Enabled         = !isShowMode;
     btnFinish.Enabled   = !isShowMode;
 }
Example #7
0
 public frmSimcard_Main()
 {
     InitializeComponent();
     cmAds.Renderer      = new ToolStripProfessionalRenderer(new ContextMenuSetter());
     cmCity.Renderer     = new ToolStripProfessionalRenderer(new ContextMenuSetter());
     cmSheypoor.Renderer = new ToolStripProfessionalRenderer(new ContextMenuSetter());
     cls            = new SimcardBussines();
     lblHeader.Text = "افزودن سیمکارت جدید";
 }
Example #8
0
 public frmSimcard_Main(Guid guid)
 {
     InitializeComponent();
     cmAds.Renderer      = new ToolStripProfessionalRenderer(new ContextMenuSetter());
     cmCity.Renderer     = new ToolStripProfessionalRenderer(new ContextMenuSetter());
     cmSheypoor.Renderer = new ToolStripProfessionalRenderer(new ContextMenuSetter());
     cls            = SimcardBussines.GetAsync(guid);
     lblHeader.Text = "ویرایش سیمکارت";
 }
        private async void btnFinish_Click(object sender, EventArgs e)
        {
            try
            {
                if (cls.Guid == Guid.Empty)
                {
                    cls.Guid = Guid.NewGuid();
                }

                if (string.IsNullOrEmpty(txtName.Text))
                {
                    frmNotification.PublicInfo.ShowMessage("مالک نمی تواند خالی باشد");
                    txtName.Focus();
                    return;
                }

                if (string.IsNullOrEmpty(txtNumber.Text))
                {
                    frmNotification.PublicInfo.ShowMessage("شماره نمی تواند خالی باشد");
                    txtNumber.Focus();
                    return;
                }
                if (!await SimcardBussines.CheckNumber(cls.Guid, txtNumber.Text.ParseToLong()))
                {
                    frmNotification.PublicInfo.ShowMessage("شماره وارد شده تکراری است");
                    txtName.Focus();
                    return;
                }

                cls.OwnerName = txtName.Text.Trim();
                cls.Number    = txtNumber.Text.ParseToLong();
                cls.AdvCat1   = (Guid?)cmbAdv1.SelectedValue;
                cls.AdvCat2   = (Guid?)cmbAdv2.SelectedValue;
                cls.AdvCat3   = (Guid?)cmbAdv3.SelectedValue;
                cls.ChatCat1  = (Guid?)cmbChat1.SelectedValue;
                cls.ChatCat2  = (Guid?)cmbChat2.SelectedValue;
                cls.ChatCat3  = (Guid?)cmbChat3.SelectedValue;
                var res = await cls.SaveAsync();

                if (res.HasError)
                {
                    frmNotification.PublicInfo.ShowMessage(res.ErrorMessage);
                    return;
                }
                DialogResult = DialogResult.OK;
                frmLoading.PublicInfo.ShowForm();
                Close();
            }
            catch (Exception exception)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(exception);
            }
        }
Example #10
0
        private async Task LoadData(string search = null)
        {
            try
            {
                var liat = await SimcardBussines.GetAllAsync(search);

                SimcardBindingSource.DataSource = liat.OrderBy(q => q.OwnerName).ToSortableBindingList();
            }
            catch (Exception e)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(e);
            }
        }
Example #11
0
        private async void Form1_Load(object sender, EventArgs e)
        {
            //Fill Number ComboBox
            var list1 = await SimcardBussines.GetAllAsync();
            SimcardBindingSource.DataSource = list1;

            //Fill Ads To Grid
            //var list2 = await Advertise.GetAllAsync("D:\\DivarTest");
            //SimcardAdvBindingSource.DataSource = list2;

            //Fill Divar City To Grid
            var list3 = await DivarCityBussines.GetAllAsync();
            divarCityBussinesBindingSource.DataSource = list3.ToList();
        }
        private async Task LoadData(string search = "")
        {
            try
            {
                var list = await SimcardBussines.GetAllAsync(search);

                LogInBindingSource.DataSource = list.Where(q => q.Status).ToList();
                lblCounter.Text = LogInBindingSource.Count.ToString();
            }
            catch (Exception e)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(e);
            }
        }
        private async Task LoadDataAsync(bool status, string search = "")
        {
            try
            {
                var list = await SimcardBussines.GetAllAsync(search);

                Invoke(new MethodInvoker(() => simBindingSource.DataSource =
                                             list.Where(q => q.Status == status).OrderBy(q => q.Owner).ToSortableBindingList()));
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
        private async Task FillOperatorAsync()
        {
            try
            {
                var list = await SimcardBussines.GetAllAsync();

                cmbOperator.Items.Clear();
                cmbOperator.Items.AddRange(list?.Select(q => q.Operator)?.Distinct().ToArray());
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
Example #15
0
 private async void btnInsSim_Click(object sender, EventArgs e)
 {
     var a = new SimcardBussines
     {
         Guid = Guid.NewGuid(),
         OwnerName = txtOwner.Text,
         DateSabt = DateConvertor.M2SH(DateTime.Now),
         Status = true,
         Number = long.Parse(txtNumber.Text),
         //NextUseDivar = DateTime.Now,
         //NextUseSheypoor = DateTime.Now,
         //NextUseDivarChat = DateTime.Now,
         Operator = txtOperator.Text,
         UserName = txtUserName.Text
     };
     await a.SaveAsync();
 }
Example #16
0
        private void FillComboBox()
        {
            try
            {
                Invoke(new MethodInvoker(async() =>
                {
                    var list = await SimcardBussines.GetAllAsync();
                    var a    = list.Select(q => q.Operator).Distinct().ToList();
                    cmbOperator.DataSource = a;

                    var divarCat1 = await AdvCategoryBussines.GetAllAsync(Guid.Empty, AdvertiseType.Divar);
                    divarCat1     = divarCat1.OrderBy(q => q.Name).ToList();
                    PostCat1BindingSource.DataSource = divarCat1;


                    var dCity = await DivarCityBussines.GetAllAsync();
                    dCity     = dCity.OrderBy(q => q.Name).ToList();
                    DivarCBindingSource.DataSource = dCity;
                    cmbDivarCity.SelectedIndex     = 0;

                    var shCity = await SheypoorCityBussines.GetAllAsync();
                    shCity     = shCity.OrderBy(q => q.Name).ToList();
                    SheypoorCBindingSource.DataSource = shCity;
                    cmbSheypoorCity.SelectedIndex     = 0;

                    var divarChat1 = await AdvCategoryBussines.GetAllAsync(Guid.Empty, AdvertiseType.Divar);
                    divarChat1     = divarChat1.OrderBy(q => q.Name).ToList();
                    DivarChatBindingSource1.DataSource = divarChat1;

                    var sheypoorChat1 = await AdvCategoryBussines.GetAllAsync(Guid.Empty, AdvertiseType.Sheypoor);
                    sheypoorChat1     = sheypoorChat1.OrderBy(q => q.Name).ToList();
                    SheypoorChatBindingSource1.DataSource = sheypoorChat1;

                    var postCity = await DivarCityBussines.GetAllAsync();
                    postCity     = postCity.OrderBy(q => q.Name).ToList();
                    PostCityBindingSource.DataSource = postCity;
                    cmbPostCity.SelectedIndex        = 0;
                }));
            }
            catch (Exception e)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(e);
            }
        }
Example #17
0
        private async Task GetChatCount(long number)
        {
            try
            {
                _driver = Utility.RefreshDriver(clsAdvertise.IsSilent);
                await Utility.Wait();

                var link = _driver.FindElements(By.TagName("span")).Any(q => q.Text == "حساب من");
                if (!link)
                {
                    return;
                }
                await Utility.Wait();

                _driver.FindElements(By.TagName("span")).FirstOrDefault(q => q.Text == "حساب من")?.Click();
                await Utility.Wait();

                var badge = _driver.FindElements(By.ClassName("badge")).Any();
                if (!badge)
                {
                    return;
                }
                await Utility.Wait();

                var newChat = _driver.FindElement(By.ClassName("badge"))?.FindElement(By.TagName("span"))?.Text ?? "";
                if (string.IsNullOrEmpty(newChat))
                {
                    return;
                }
                var sim = await SimcardBussines.GetAsync(number);

                TelegramSender.GetChatLog_bot()
                .Send(
                    $"#چت_شیپور \r\nسیستم مرجع: {await Utilities.GetNetworkIpAddress()} \r\n شماره: {number} \r\n مالک: {sim.Owner} \r\n تعداد چت شیپور: {newChat.FixString()}");
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
        }
Example #18
0
        private void frmSimcard_Main_Load(object sender, EventArgs e)
        {
            Task.Run(async() =>
            {
                FillComboBox();
                Set_Data();
                var sim     = await SimcardBussines.GetAllAsync();
                var _source = new AutoCompleteStringCollection();

                foreach (var item in sim)
                {
                    _source.Add(item.OwnerName);
                }

                Invoke(new MethodInvoker(() =>
                {
                    txtOwner.AutoCompleteMode         = AutoCompleteMode.SuggestAppend;
                    txtOwner.AutoCompleteSource       = AutoCompleteSource.CustomSource;
                    txtOwner.AutoCompleteCustomSource = _source;
                }));
            });
        }
        private SimcardBussines LoadData(SqlDataReader dr)
        {
            var item = new SimcardBussines();

            try
            {
                item.Guid              = (Guid)dr["Guid"];
                item.Status            = (bool)dr["Status"];
                item.Number            = (long)dr["Number"];
                item.Owner             = dr["Owner"].ToString();
                item.Operator          = dr["Operator"].ToString();
                item.isSheypoorBlocked = (bool)dr["isSheypoorBlocked"];
                item.NextUseSheypoor   = (DateTime)dr["NextUseSheypoor"];
                item.NextUseDivar      = (DateTime)dr["NextUseDivar"];
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }

            return(item);
        }
        public async Task <ReturnedSaveFuncInfo> ChangeStatusAsync(SimcardBussines item, bool status, SqlTransaction tr)
        {
            var res = new ReturnedSaveFuncInfo();

            try
            {
                var cmd = new SqlCommand("sp_Simcard_ChangeStatus", tr.Connection, tr)
                {
                    CommandType = CommandType.StoredProcedure
                };
                cmd.Parameters.AddWithValue("@Guid", item.Guid);
                cmd.Parameters.AddWithValue("@st", status);

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

            return(res);
        }
Example #21
0
        public async Task <bool> Login(long simCardNumber, bool isFromSimcard)
        {
            try
            {
                var sim_ = await SimcardBussines.GetAsync(simCardNumber);

                if (isFromSimcard)
                {
                    _driver = Utility.RefreshDriver(clsAdvertise.IsSilent);
                    var simBusiness = await Utility.CheckToken(simCardNumber, AdvertiseType.Sheypoor);

                    //   در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                    if (!simBusiness.HasError)
                    {
                        // token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32);
                        _driver.Navigate().GoToUrl("https://www.sheypoor.com");
                        _driver.Manage().Cookies.DeleteCookieNamed("ts");

                        var newToken = new OpenQA.Selenium.Cookie("ts", simBusiness.value);
                        _driver.Manage().Cookies.AddCookie(newToken);
                        _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
                        var linksElements = _driver.FindElements(By.TagName("a")).ToList();
                        foreach (var link in linksElements)
                        {
                            if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout"))
                            {
                                continue;
                            }
                            _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                            await Utility.Wait();

                            _driver.SwitchTo().Alert().Accept();
                            return(true);
                        }
                    }
                    //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه دریافت کد تائید لاگین می شود
                    _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0);
                    _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
                    //var all = _driver.Manage().Cookies.AllCookies;
                    if (_driver.FindElements(By.Id("username")).Count > 0)
                    {
                        _driver.FindElement(By.Id("username")).SendKeys(simCardNumber + "\n");
                    }

                    //انتظار برای لاگین شدن
                    int repeat = 0;
                    //حدود 120 ثانیه فرصت لاگین دارد
                    while (repeat < 20)
                    {
                        //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود
                        var badGateWay = _driver.FindElements(By.TagName("h1"))
                                         .Any(q => q.Text == "502 Bad Gateway" || q.Text == "Error 503 Service Unavailable");
                        if (badGateWay)
                        {
                            return(false);
                        }

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

                        await Utility.Wait(5);

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

                            repeat++;
                        }
                        catch
                        {
                            await Utility.Wait(15);
                        }

                        var linksElements = _driver?.FindElements(By.TagName("a")).ToList() ?? null;

                        AdvTokenBussines advToken = null;
                        foreach (var link in linksElements)
                        {
                            if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout"))
                            {
                                continue;
                            }
                            advToken = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor);

                            var token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32);
                            if (advToken != null)
                            {
                                advToken.Token = token;
                            }
                            else
                            {
                                advToken = new AdvTokenBussines()
                                {
                                    Type   = AdvertiseType.Sheypoor,
                                    Token  = token,
                                    Number = simCardNumber,
                                    Guid   = Guid.NewGuid(),
                                }
                            };


                            await advToken.SaveAsync();

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

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

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

                    await Utility.Wait();
                }
                else
                {
                    _driver = Utility.RefreshDriver(clsAdvertise.IsSilent);
                    var simBusiness = await Utility.CheckToken(simCardNumber, AdvertiseType.Sheypoor);

                    //   در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                    if (!simBusiness.HasError)
                    {
                        // token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32);
                        _driver.Navigate().GoToUrl("https://www.sheypoor.com");
                        _driver.Manage().Cookies.DeleteCookieNamed("ts");

                        var newToken = new OpenQA.Selenium.Cookie("ts", simBusiness.value);
                        _driver.Manage().Cookies.AddCookie(newToken);
                        _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");
                        var linksElements = _driver.FindElements(By.TagName("a")).ToList();
                        foreach (var link in linksElements)
                        {
                            if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout"))
                            {
                                continue;
                            }
                            _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                            await Utility.Wait();

                            _driver.SwitchTo().Alert().Accept();
                            return(true);
                        }
                    }
                    _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings");

                    //انتظار برای لاگین شدن
                    int repeat = 0;
                    //حدود 120 ثانیه فرصت لاگین دارد
                    while (repeat < 5)
                    {
                        //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود
                        var badGateWay = _driver.FindElements(By.TagName("h1"))
                                         .Any(q => q.Text == "502 Bad Gateway" || q.Text == "Error 503 Service Unavailable");
                        if (!badGateWay)
                        {
                            return(false);
                        }

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

                        await Utility.Wait(2);

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

                            repeat++;
                        }
                        catch
                        {
                            await Utility.Wait(15);
                        }

                        var linksElements = _driver?.FindElements(By.TagName("a")).ToList() ?? null;

                        AdvTokenBussines advToken = null;
                        foreach (var link in linksElements)
                        {
                            if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout"))
                            {
                                continue;
                            }
                            var token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32);
                            advToken = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor);

                            if (advToken != null)
                            {
                                advToken.Token = token;
                            }
                            else
                            {
                                advToken = new AdvTokenBussines()
                                {
                                    Type   = AdvertiseType.Sheypoor,
                                    Token  = token,
                                    Number = simCardNumber,
                                    Guid   = Guid.NewGuid(),
                                }
                            };
                        }

                        await advToken?.SaveAsync();

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

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

                await Utility.Wait();

                TelegramSender.GetChatLog_bot().Send(
                    $"#نداشتن_توکن \r\n سیستم مرجع: {await Utilities.GetNetworkIpAddress()} \r\n شماره {simCardNumber} به مالکیت {sim_.Owner} توکن ارسال آگهی شیپور داشته، اما منقضی شده و موفق به لاگین  نشد " +
                    $"\r\n به همین سبب توکن شیپور این شماره از دیتابیس حذف خواهد شد " +
                    $"\r\n لطفا نسبت به دریافت مجدد توکن اقدام گردد.");
                var advTokens = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor);

                await advTokens?.RemoveAsync();

                return(false);
            }

            catch (WebException) { return(false); }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorInstence.StartErrorLog(ex);
                }
                return(false);
            }
        }
Example #22
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 #23
0
        private async void btnFinish_Click(object sender, EventArgs e)
        {
            try
            {
                btnFinish.Enabled = false;
                if (cls.Guid == Guid.Empty)
                {
                    cls.Guid     = Guid.NewGuid();
                    cls.DateSabt = DateConvertor.M2SH(DateTime.Now);
                }
                if (string.IsNullOrWhiteSpace(txtNumber.Text))
                {
                    WebErrorLog.ErrorInstence.StartErrorLog("لطفا شماره را وارد نمایید", false);
                    txtNumber.Focus();
                    return;
                }
                if (txtNumber.Text.Length < 10 || txtNumber.Text.Length > 12)
                {
                    WebErrorLog.ErrorInstence.StartErrorLog("شماره وارد شده اشتباه است", false);
                    txtNumber.Focus();
                    return;
                }
                if (!SimcardBussines.Check_Number(long.Parse(txtNumber.Text), cls.Guid))
                {
                    WebErrorLog.ErrorInstence.StartErrorLog("شماره وارد شده تکراری است", false);
                    txtNumber.Focus();
                    return;
                }

                if (string.IsNullOrWhiteSpace(txtOwner.Text))
                {
                    WebErrorLog.ErrorInstence.StartErrorLog("لطفا مالک را وارد نمایید", false);
                    txtNumber.Focus();
                    return;
                }

                if (string.IsNullOrWhiteSpace(cmbOperator.Text))
                {
                    WebErrorLog.ErrorInstence.StartErrorLog("لطفا اپراتور را وارد نمایید", false);
                    txtNumber.Focus();
                    return;
                }

                if (!chbIsEnableNumber.Checked && !chbIsEnableChat.Checked)
                {
                    WebErrorLog.ErrorInstence.StartErrorLog(
                        "بنابر قوانین سایت دیوار و شیپور، حداقل یکی از گزینه های نمایش شماره یا ارسال چت باید فعال باشد",
                        false);
                    chbIsEnableNumber.Focus();
                    return;
                }

                var listCity = new List <DivarSimCityBussines>();
                for (int i = 0; i < dgCity.RowCount; i++)
                {
                    if ((bool)dgCity[dg_CityChecked.Index, i].Value)
                    {
                        var a = new DivarSimCityBussines()
                        {
                            Guid        = Guid.NewGuid(),
                            DateSabt    = DateConvertor.M2SH(DateTime.Now),
                            Status      = true,
                            SimcardGuid = cls.Guid,
                            CityGuid    = (Guid)dgCity[dg_CityGuid.Index, i].Value
                        };
                        listCity.Add(a);
                    }
                }


                var listCitySh = new List <SheypoorSimCityBussines>();
                for (int i = 0; i < dgSheypoorCity.RowCount; i++)
                {
                    if ((bool)dgSheypoorCity[dg_SheypoorCityChecked.Index, i].Value)
                    {
                        var a = new SheypoorSimCityBussines()
                        {
                            Guid        = Guid.NewGuid(),
                            DateSabt    = DateConvertor.M2SH(DateTime.Now),
                            Status      = true,
                            SimcardGuid = cls.Guid,
                            CityGuid    = (Guid)dgSheypoorCity[dg_SheypoorCityGuid.Index, i].Value,
                            StateGuid   = (Guid)dgSheypoorCity[dg_StateGuid.Index, i].Value
                        };
                        listCitySh.Add(a);
                    }
                }

                var listAds = new List <SimcardAdsBussines>();
                for (int i = 0; i < dgAds.RowCount; i++)
                {
                    if ((bool)dgAds[dg_AdvChecked.Index, i].Value)
                    {
                        var a = new SimcardAdsBussines()
                        {
                            Guid        = Guid.NewGuid(),
                            DateSabt    = DateConvertor.M2SH(DateTime.Now),
                            Status      = true,
                            SimcardGuid = cls.Guid,
                            Advertise   = (Guid)dgAds[dg_AdvGuid.Index, i].Value
                        };
                        listAds.Add(a);
                    }
                }



                cls.OwnerName            = txtOwner.Text;
                cls.Status               = true;
                cls.Number               = long.Parse(txtNumber.Text);
                cls.NextUse              = DateTime.Now;
                cls.Operator             = cmbOperator.Text;
                cls.UserName             = txtUserName.Text;
                cls.DivarPostCat1        = (Guid?)cmbPostCat1.SelectedValue ?? null;
                cls.DivarPostCat2        = (Guid?)cmbPostCat2.SelectedValue ?? null;
                cls.DivarPostCat3        = (Guid?)cmbPostCat3.SelectedValue ?? null;
                cls.IsEnableChat         = chbIsEnableChat.Checked;
                cls.IsEnableNumber       = chbIsEnableNumber.Checked;
                cls.IsSendAdv            = chbIsSendAdvDivar.Checked;
                cls.IsSendAdvSheypoor    = chbIsSendAdvSheypoor.Checked;
                cls.IsSendChat           = chbIsSendChatDivar.Checked;
                cls.IsSendChatSheypoor   = chbIsSendChatSheypoor.Checked;
                cls.ChatCount            = int.Parse(txtChatCount.Text);
                cls.DivarCityForChat     = (Guid)cmbDivarCity.SelectedValue;
                cls.SheypoorCityForChat  = (Guid)cmbSheypoorCity.SelectedValue;
                cls.DivarChatCat1        = (Guid)cmbDivarChat1.SelectedValue;
                cls.DivarChatCat2        = (Guid)cmbDivarChat2.SelectedValue;
                cls.DivarChatCat3        = (Guid?)cmbDivarChat3.SelectedValue ?? Guid.Empty;
                cls.SheypoorChatCat1     = (Guid)cmbSheypoorChat1.SelectedValue;
                cls.SheypoorChatCat2     = (Guid)cmbSheypoorChat2.SelectedValue;
                cls.isSendPostToTelegram = chbIsSendPostToTelegram.Checked;
                cls.ChannelForSendPost   = txtChannel.Text;
                cls.PostCount            = txtPostCount.Text?.ParseToInt() ?? null;
                cls.CityForGetPost       = (Guid?)cmbPostCity.SelectedValue ?? null;
                cls.DescriptionForPost   = txtPostDescription.Text;
                cls.isSendSecondChat     = chbIsSendSecondText.Checked;
                cls.FirstChatPassage     = txtFirstChatPassage1.Text;
                cls.FirstChatPassage2    = txtFirstChatPassage2.Text;
                cls.FirstChatPassage3    = txtFirstChatPassage3.Text;
                cls.FirstChatPassage4    = txtFirstChatPassage4.Text;
                cls.SecondChatPassage    = txtSecondChatPassage1.Text;
                cls.FirstChatPassage2    = txtFirstChatPassage2.Text;
                cls.FirstChatPassage3    = txtFirstChatPassage3.Text;
                cls.FirstChatPassage4    = txtFirstChatPassage4.Text;
                cls.SMS_Description      = txtSMS.Text;

                await cls.SaveAsync(listCity, listAds, listCitySh);

                DialogResult = DialogResult.OK;
                Close();
            }
            catch (Exception exception)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(exception);
            }
            finally
            {
                btnFinish.Enabled = true;
            }
        }
Example #24
0
        private static async Task SendChat(SettingBussines clsSetting, SimcardBussines simCard)
        {
            try
            {
                var passage1 = new List <string>();
                if (!string.IsNullOrEmpty(simCard.FirstChatPassage))
                {
                    passage1.Add(simCard.FirstChatPassage);
                }
                if (!string.IsNullOrEmpty(simCard.FirstChatPassage2))
                {
                    passage1.Add(simCard.FirstChatPassage2);
                }
                if (!string.IsNullOrEmpty(simCard.FirstChatPassage3))
                {
                    passage1.Add(simCard.FirstChatPassage3);
                }
                if (!string.IsNullOrEmpty(simCard.FirstChatPassage4))
                {
                    passage1.Add(simCard.FirstChatPassage4);
                }
                var passage2 = new List <string>();
                if (!string.IsNullOrEmpty(simCard.SecondChatPassage))
                {
                    passage2.Add(simCard.SecondChatPassage);
                }
                if (!string.IsNullOrEmpty(simCard.SecondChatPassage2))
                {
                    passage2.Add(simCard.SecondChatPassage2);
                }
                if (!string.IsNullOrEmpty(simCard.SecondChatPassage3))
                {
                    passage2.Add(simCard.SecondChatPassage3);
                }
                if (!string.IsNullOrEmpty(simCard.SecondChatPassage4))
                {
                    passage2.Add(simCard.SecondChatPassage4);
                }
                var date = DateConvertor.M2SH(DateTime.Now);
                date = date.Replace("/", "_");
                if (simCard.IsSendChat)
                {
                    var city = DivarCityBussines.GetAsync(simCard.DivarCityForChat);

                    var cat1 = AdvCategoryBussines.Get(simCard.DivarChatCat1)?.Name ?? "";
                    var cat2 = AdvCategoryBussines.Get(simCard.DivarChatCat2)?.Name ?? "";
                    var cat3 = AdvCategoryBussines.Get(simCard.DivarChatCat3)?.Name ?? "";

                    var fileName = $"{cat1}__{cat2}__{cat3}__{date}";
                    fileName = fileName.Replace(" ", "_");
                    var ff    = Path.Combine(clsSetting.Address, fileName + ".txt");
                    var divar = await DivarAdv.GetInstance();

                    await divar.SendChat(passage1, passage2, simCard.ChatCount, city.Name, cat1, cat2, cat3,
                                         ff, simCard);
                }

                //if (simCard.IsSendChatSheypoor)
                //{
                //    var city1 = SheypoorCityBussines.GetAsync(simCard.SheypoorCityForChat);

                //    var cat1 = AdvCategoryBussines.Get(simCard.SheypoorChatCat1)?.Name ?? "";
                //    var cat2 = AdvCategoryBussines.Get(simCard.SheypoorChatCat2)?.Name ?? "";
                //    var fileName = $"{cat1}__{cat2}__{date}";
                //    var ff = Path.Combine(clsSetting.Address, fileName + ".txt");

                //    var shey = await SheypoorAdv.GetInstance();
                //    await shey.SendChat(passage1, passage2, simCard.ChatCount, city1.Name, cat1, cat2, null,
                //        ff, simCard);
                //}

                simCard.NextUse = DateTime.Now.AddMinutes(30);
                await simCard.SaveAsync();
            }
            catch (Exception e)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(e);
            }
        }
Example #25
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 #26
0
        public async Task <bool> Login(long simCardNumber)
        {
            try
            {
                _driver = Utility.RefreshDriver(_driver);
                if (!_driver.Url.Contains("divar.ir"))
                {
                    _driver.Navigate().GoToUrl("https://divar.ir");
                }

                var simBusiness = await SimcardBussines.GetAsync(simCardNumber);

                var tokenInDatabase = simBusiness?.DivarToken ?? null;

                var listLinkItems = _driver.FindElements(By.TagName("a"));
                var isLogined     = listLinkItems.Any(linkItem => linkItem.Text == @"خروج");

                //اگر کاربر لاگین شده فعلی همان کاربر مورد نظر است نیازی به لاگین نیست
                if (isLogined && !string.IsNullOrEmpty(tokenInDatabase))
                {
                    var currentTokenOnDivar = _driver.Manage().Cookies.GetCookieNamed("token").Value;
                    if (!string.IsNullOrEmpty(currentTokenOnDivar) && currentTokenOnDivar == tokenInDatabase)
                    {
                        return(true);
                    }
                }

                //اگر کاربرلاگین شده کاربر مد نظر ما نیست از آن کاربری خارج می شود
                if (isLogined)
                {
                    _driver.Manage().Cookies.DeleteCookieNamed("_gat");
                    _driver.Manage().Cookies.DeleteCookieNamed("token");
                }

                //در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                if (!string.IsNullOrEmpty(tokenInDatabase))
                {
                    var token = new Cookie("token", tokenInDatabase);
                    _driver.Manage().Cookies.AddCookie(token);
                    _driver.Navigate().Refresh();
                }
                //اگر قبلا توکن نداشته وارد صفحه دریافت کد تائید لاگین می شود
                else
                {
                    _driver.Navigate().GoToUrl("https://divar.ir/my-divar/my-posts");
                    //کلیک روی دکمه ورود و ثبت نام
                    await Utility.Wait();

                    _driver.FindElement(By.ClassName("login-message__login-btn")).Click();
                    await Utility.Wait();

                    var currentWindow = _driver.CurrentWindowHandle;
                    _driver.SwitchTo().Window(currentWindow);
                    if (_driver.FindElements(By.Name("mobile")).Count > 0)
                    {
                        _driver.FindElement(By.Name("mobile")).SendKeys("0" + simCardNumber);
                    }
                }

                //انتظار برای لاگین شدن
                int repeat = 0;
                //حدود 120 ثانیه فرصت لاگین دارد
                while (repeat < 20)
                {
                    //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود
                    listLinkItems = _driver.FindElements(By.TagName("a"));
                    if (listLinkItems.Count < 5)
                    {
                        return(false);
                    }

                    var isLogin = listLinkItems.Any(linkItem => linkItem.Text == @"خروج");

                    if (isLogin)
                    {
                        //var all = _driver.Manage().Cookies.AllCookies.ToList();
                        tokenInDatabase = _driver.Manage().Cookies.GetCookieNamed("token").Value;
                        if (simBusiness is null)
                        {
                            simBusiness = new SimcardBussines()
                            {
                                Guid = Guid.NewGuid()
                            }
                        }
                        ;

                        simBusiness.DivarToken = tokenInDatabase;
                        simBusiness.Modified   = DateTime.Now;
                        simBusiness.Number     = simCardNumber;

                        await simBusiness.SaveAsync();

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

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

                    var name = await SimcardBussines.GetAsync(simCardNumber);

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

                    await Utility.Wait(3);

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

                        repeat++;
                    }
                    catch
                    {
                        await Utility.Wait(10);
                    }
                }
                return(false);
            }
            catch (WebException) { return(false); }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorInstence.StartErrorLog(ex);
                }
                return(false);
            }
        }
 public frmSimcard()
 {
     InitializeComponent();
     cls = new SimcardBussines();
 }
Example #28
0
        public async Task SendChat(List <string> msg, List <string> msg2, int count, string city, string cat1, string cat2, string cat3, string fileName, SimcardBussines sim)
        {
            //try
            //{
            //    //توکن چت نداشت برگرد
            //    var log2 = await SimcardBussines.GetAsync(sim.Number);
            //    if (log2.ChatToken != null && string.IsNullOrEmpty(log2.ChatToken)) return;

            //    //ورود به دیوار
            //    var log = await Login(sim.Number);
            //    if (!log) return;
            //    //_driver.Navigate().GoToUrl("https://divar.ir/");
            //    await Utility.Wait();
            //    //انتخاب شهر
            //    _driver.FindElement(By.ClassName("city-selector")).Click();
            //    await Utility.Wait();
            //    _driver.FindElements(By.TagName("a")).LastOrDefault(q => q.Text == city)?.Click();
            //    await Utility.Wait(2);

            //    //انتخاب دسته بندی
            //    if (!string.IsNullOrEmpty(cat1))
            //    {
            //        var p = _driver.FindElements(By.ClassName("category-dropdown__icon")).Any();
            //        if (!p) return;
            //        _driver.FindElements(By.ClassName("category-dropdown__icon")).FirstOrDefault()?.Click();
            //        await Utility.Wait();
            //        _driver.FindElements(By.ClassName("category-button")).FirstOrDefault(q => q.Text == cat1)
            //            ?.Click();
            //        if (string.IsNullOrEmpty(cat2))
            //            return;
            //        if (string.IsNullOrEmpty(cat3))
            //            _driver.FindElements(By.ClassName("category-button")).FirstOrDefault(q => q.Text == cat2)
            //                ?.Click();
            //        else
            //            _driver.FindElements(By.ClassName("category-button")).FirstOrDefault(q => q.Text == cat3)
            //                ?.Click();
            //        await Utility.Wait();
            //    }

            //    var ele = _driver.FindElements(By.ClassName("col-xs-12")).Any();
            //    while (!ele)
            //    {
            //        ele = _driver.FindElements(By.ClassName("col-xs-12")).Any();
            //    }
            //    await Utility.Wait(5);
            //    var j = 0;
            //    //اسکرول تا تعداد مشخص
            //    var counter = _driver.FindElements(By.ClassName("col-xs-12")).ToList();
            //    var total = counter.Count;
            //    var scroll = 0;
            //    while (counter.Count <= count)
            //    {
            //        if (scroll >= 10) break;
            //        ((IJavaScriptExecutor)_driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight)");
            //        await Utility.Wait();
            //        counter = _driver.FindElements(By.ClassName("col-xs-12")).ToList();
            //        if (total == counter.Count) break;
            //        scroll++;
            //    }

            //    if (counter.Count <= count) count = counter.Count - 1;

            //    for (var i = 0; j < count; i++)
            //    {
            //        //انتخاب آگهی
            //        await Utility.Wait();
            //        _driver.FindElements(By.ClassName("col-xs-12"))[i + 1]?.Click();
            //        await Utility.Wait(1);
            //        //دریافت شماره آگهی
            //        await Utility.Wait(5);
            //        _driver.FindElement(By.ClassName("post-actions__get-contact")).Click();
            //        await Utility.Wait();

            //        var a = _driver.FindElements(By.ClassName("primary"))
            //            .FirstOrDefault(q => q.Text == "با قوانین دیوار موافقم");
            //        if (a != null)
            //            _driver.FindElements(By.ClassName("primary"))
            //                .FirstOrDefault(q => q.Text == "با قوانین دیوار موافقم")?.Click();
            //        await Utility.Wait(1);
            //        //چت
            //        var el = _driver.FindElements(By.ClassName("post-actions__chat")).Any();
            //        var txt = _driver.FindElements(By.ClassName("post-fields-item__value")).FirstOrDefault()?.Text;
            //        if (txt == "(پنهان‌شده؛ چت کنید)")
            //        {
            //            //شروع چت
            //            _driver.FindElement(By.ClassName("post-actions__chat")).Click();
            //            var qanoon = _driver.FindElements(By.TagName("button"))
            //                .Where(q => q.Text == "با قوانین دیوار موافقم").ToList();
            //            if (qanoon.Count > 0)
            //                qanoon.FirstOrDefault()?.Click();
            //            var dc = _driver.WindowHandles.Count;
            //            if (dc > 1)
            //                _driver.SwitchTo().Window(_driver.WindowHandles[1]);
            //            await Utility.Wait(2);

            //            var notAllowed = _driver.FindElements(By.TagName("p"))
            //                .Any(q => q.Text == "در حال حاضر امکان ارسال این نوع پیام وجود ندارد.");
            //            if (notAllowed)
            //            {
            //                _driver.Close();
            //                _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //                _driver.Navigate().Back();
            //                return;
            //            }


            //            await Utility.Wait(2);
            //            var notFound = _driver.FindElements(By.ClassName("content")).Any(q => q.Text == "یافت نشد!");
            //            if (notFound)
            //            {
            //                _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "بستن")?.Click();
            //                _driver.Close();
            //                _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //                _driver.Navigate().Back();
            //                continue;
            //            }
            //            var logEl = _driver.FindElements(By.ClassName("auth__input__view")).Any();
            //            if (logEl)
            //            {
            //                var tt = await LoginChat(sim.Number, false);
            //                if (!tt)
            //                {
            //                    _driver.Close();
            //                    _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //                    _driver.Navigate().Back();
            //                    return;
            //                }
            //            }
            //            await Utility.Wait(2);
            //            var chatBox = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //            while (!chatBox)
            //            {
            //                await Utility.Wait(2);
            //                chatBox = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //            }
            //            var rnd = new Random().Next(0, msg.Count);
            //            await Utility.Wait(2);
            //            try
            //            {
            //                //ارسال متن اول
            //                var thread = new Thread(() => Clipboard.SetText(msg[rnd]));
            //                thread.SetApartmentState(ApartmentState.STA);
            //                thread.Start();
            //                var f = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //                while (!f)
            //                {
            //                    f = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //                }
            //                var t = _driver.FindElement(By.ClassName("chat-box__input"));

            //                t.Click();
            //                await Utility.Wait();
            //                t.SendKeys(OpenQA.Selenium.Keys.Control + "v");
            //                t.SendKeys("" + '\n');
            //                var thread1 = new Thread(Clipboard.Clear);
            //                thread1.SetApartmentState(ApartmentState.STA);
            //                thread1.Start();



            //                await Utility.Wait(2);

            //                // ذخیره شماره در جدول که بعدا کسی باهاش چت نکنه
            //                var chatNumbers = new ChatNumberBussines()
            //                {
            //                    Guid = Guid.NewGuid(),
            //                    Number = txt.FixString(),
            //                    DateSabt = DateConvertor.M2SH(DateTime.Now),
            //                    Status = true,
            //                    Type = AdvertiseType.Divar,
            //                    DateM = DateTime.Now,
            //                    City = city,
            //                    Cat = cat1 + "_" + cat2 + "_" + cat3
            //                };
            //                await chatNumbers.SaveAsync();
            //                j++;
            //            }
            //            catch (Exception e)
            //            {
            //                WebErrorLog.ErrorInstence.StartErrorLog(e);
            //            }
            //            _driver.Close();
            //            _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //            _driver.Navigate().Back();
            //            break;
            //        }
            //        else
            //        {
            //            if (!el)
            //            {
            //                //ذخیره شماره

            //                if (File.Exists(fileName))
            //                {
            //                    var numbers = File.ReadAllLines(fileName).ToList();
            //                    numbers.Add(txt.FixString());
            //                    //غیر تکراری بودن شماره
            //                    numbers = numbers.GroupBy(q => q).Where(q => q.Count() == 1).Select(q => q.Key).ToList();
            //                    File.WriteAllLines(fileName, numbers);
            //                }
            //                else
            //                {
            //                    File.WriteAllText(fileName, txt.FixString());
            //                }
            //                _driver.Navigate().Back();
            //                continue;
            //            }
            //            //اگر شماره قبلا چت شده بود چت نکن
            //            var day = DateTime.Now.AddDays(-clsSetting.DayCountForDelete);
            //            var allNumbers = ChatNumberBussines.GetAll(AdvertiseType.Divar).Where(q => q.DateM >= day)
            //                .ToList();

            //            var n = 0;
            //            foreach (var item in allNumbers)
            //            {
            //                if (item == null && string.IsNullOrEmpty(item.Number)) continue;
            //                if (txt.FixString() == item.Number)
            //                    n++;
            //            }

            //            if (n > 0)
            //            {
            //                _driver.Navigate().Back();
            //                continue;
            //            }
            //            //شروع چت
            //            await Utility.Wait(3);
            //            _driver.FindElement(By.ClassName("post-actions__chat")).Click();
            //            var qanoon = _driver.FindElements(By.TagName("button"))
            //                 .Where(q => q.Text == "با قوانین دیوار موافقم").ToList();
            //            if (qanoon.Count > 0)
            //                qanoon.FirstOrDefault()?.Click();
            //            var dc = _driver.WindowHandles.Count;
            //            if (dc > 1)
            //                _driver.SwitchTo().Window(_driver.WindowHandles[1]);
            //            await Utility.Wait(2);

            //            var notAllowed = _driver.FindElements(By.TagName("p"))
            //                .Any(q => q.Text == "در حال حاضر امکان ارسال این نوع پیام وجود ندارد.");
            //            if (notAllowed)
            //            {
            //                _driver.Close();
            //                _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //                _driver.Navigate().Back();
            //                return;
            //            }



            //            var notFound = _driver.FindElements(By.ClassName("content")).Any(q => q.Text == "یافت نشد!");
            //            if (notFound)
            //            {
            //                _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "بستن")?.Click();
            //                _driver.Close();
            //                _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //                _driver.Navigate().Back();
            //                continue;
            //            }
            //            var logEl = _driver.FindElements(By.ClassName("auth__input__view")).Any();
            //            if (logEl)
            //            {
            //                var tt = await LoginChat(sim.Number, false);
            //                if (!tt)
            //                {
            //                    _driver.Close();
            //                    _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //                    _driver.Navigate().Back();
            //                    return;
            //                }
            //            }
            //            await Utility.Wait(2);
            //            var chatBox = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //            while (!chatBox)
            //            {
            //                await Utility.Wait(2);
            //                chatBox = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //            }
            //            var rnd = new Random().Next(0, msg.Count);
            //            await Utility.Wait(2);
            //            try
            //            {
            //                var f = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //                while (!f)
            //                {
            //                    f = _driver.FindElements(By.ClassName("chat-box__input")).Any();
            //                }
            //                //ارسال متن اول
            //                var thread = new Thread(() => Clipboard.SetText(msg[rnd]));
            //                thread.SetApartmentState(ApartmentState.STA);
            //                thread.Start();

            //                var t = _driver.FindElement(By.ClassName("chat-box__input"));
            //                t.Click();
            //                await Utility.Wait();
            //                t.SendKeys(OpenQA.Selenium.Keys.Control + "v");
            //                t.SendKeys("" + '\n');
            //                var thread1 = new Thread(Clipboard.Clear);
            //                thread1.SetApartmentState(ApartmentState.STA);
            //                thread1.Start();



            //                //_driver.FindElement(By.ClassName("chat-box__input")).SendKeys(msg[rnd] + '\n');
            //                await Utility.Wait(2);


            //                //اگر کاربر جواب داده بود، متن دوم رو بفرست
            //                var allChat = _driver.FindElements(By.ClassName("dimmable"))
            //                    .Where(q => q.Text.Contains("پیام جدید") && !q.Text.Contains("پستچی دیوار")).ToList();
            //                await Utility.Wait(1);
            //                if (allChat.Count > 0)
            //                {
            //                    foreach (var element in allChat)
            //                    {
            //                        element.Click();
            //                        var rnd2 = new Random().Next(0, msg2.Count);
            //                        await Utility.Wait(1);


            //                        var thread10 = new Thread(() => Clipboard.SetText(msg2[rnd2]));
            //                        thread10.SetApartmentState(ApartmentState.STA);
            //                        thread10.Start();

            //                        var t2 = _driver.FindElement(By.ClassName("chat-box__input"));
            //                        t2.Click();
            //                        await Utility.Wait();
            //                        t2.SendKeys(OpenQA.Selenium.Keys.Control + "v");
            //                        t2.SendKeys("" + '\n');
            //                        var thread101 = new Thread(Clipboard.Clear);
            //                        thread101.SetApartmentState(ApartmentState.STA);
            //                        thread101.Start();



            //                        //_driver.FindElement(By.ClassName("chat-box__input")).SendKeys(msg2[rnd2] + '\n');
            //                        await Utility.Wait(2);
            //                    }
            //                }

            //                // ذخیره شماره در جدول که بعدا کسی باهاش چت نکنه
            //                var chatNumbers = new ChatNumberBussines()
            //                {
            //                    Guid = Guid.NewGuid(),
            //                    Number = txt.FixString(),
            //                    DateSabt = DateConvertor.M2SH(DateTime.Now),
            //                    Status = true,
            //                    Type = AdvertiseType.Divar,
            //                    DateM = DateTime.Now,
            //                    City = city,
            //                    Cat = cat1 + "_" + cat2 + "_" + cat3
            //                };
            //                await chatNumbers.SaveAsync();
            //                j++;
            //            }
            //            catch (Exception e)
            //            {
            //                WebErrorLog.ErrorInstence.StartErrorLog(e);
            //            }
            //            _driver.Close();
            //            _driver.SwitchTo().Window(_driver.WindowHandles[0]);
            //            _driver.Navigate().Back();
            //        }
            //    }
            //}
            //catch (StaleElementReferenceException) { }
            //catch (Exception ex)
            //{
            //    WebErrorLog.ErrorInstence.StartErrorLog(ex);
            //}
        }
 public frmSimcardMain()
 {
     InitializeComponent();
     cls           = new SimcardBussines();
     ucHeader.Text = "افزودن سیمکارت جدید";
 }