Esempio n. 1
0
        //public static async Task<ReturnedSaveFuncInfo> SendChat(long number)
        //{
        //    var res = new ReturnedSaveFuncInfo();
        //    try
        //    {
        //        res.AddReturnedValue(await CheckToken(number, AdvertiseType.DivarChat));
        //        if (res.HasError) return res;

        //        var sim = await SimCardBusiness.GetAsync(number);
        //        var owner = await OwnerBusiness.GetAsync(sim.OwnerGuid);

        //        res.AddReturnedValue(await SendChat_(number, owner.VisitorGuid));
        //        if (res.HasError) return res;

        //        CloseAllChromeWindows();
        //    }
        //    catch (Exception ex)
        //    {
        //        WebErrorLog.ErrorLogInstance.StartLog(ex);
        //        res.AddReturnedValue(ex);
        //    }

        //    return res;
        //}
        public static async Task <ReturnedSaveFuncInfoWithValue <string> > CheckToken(long number, AdvertiseType type)
        {
            var res = new ReturnedSaveFuncInfoWithValue <string>();

            try
            {
                var tk = await AdvTokenBussines.GetTokenAsync(number, type);

                if (tk == null)
                {
                    res.AddReturnedValue(ReturnedState.Error, "Token is Null");
                    return(res);
                }
                if (string.IsNullOrEmpty(tk.Token))
                {
                    res.AddReturnedValue(ReturnedState.Error, "Token is Empty");
                    return(res);
                }

                res.value = tk.Token;
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                res.AddReturnedValue(ex);
            }

            return(res);
        }
        public async Task <AdvTokenBussines> GetTokenAsync(string _connectionString, long number, AdvertiseType type)
        {
            AdvTokenBussines res = null;

            try
            {
                using (var cn = new SqlConnection(_connectionString))
                {
                    var cmd = new SqlCommand("sp_AdvToken_GetToken", cn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.AddWithValue("@number", number);
                    cmd.Parameters.AddWithValue("@type", (short)type);

                    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);
        }
        public async Task <ReturnedSaveFuncInfo> SaveAsync(AdvTokenBussines item, SqlTransaction tr)
        {
            var res = new ReturnedSaveFuncInfo();

            try
            {
                var cmd = new SqlCommand("sp_AdvToken_Save", tr.Connection, tr)
                {
                    CommandType = CommandType.StoredProcedure
                };
                cmd.Parameters.AddWithValue("@guid", item.Guid);
                cmd.Parameters.AddWithValue("@number", item.Number);
                cmd.Parameters.AddWithValue("@type", (short)item.Type);
                cmd.Parameters.AddWithValue("@token", item.Type);

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

            return(res);
        }
        private AdvTokenBussines LoadData(SqlDataReader dr)
        {
            var item = new AdvTokenBussines();

            try
            {
                item.Guid   = (Guid)dr["Guid"];
                item.Token  = dr["Token"].ToString();
                item.Number = (long)dr["Number"];
                item.Type   = (AdvertiseType)dr["Type"];
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
            }
            return(item);
        }
Esempio n. 5
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);
            }
        }