Ejemplo n.º 1
0
        public HttpResponseMessage DeleteConsumer(string id)
        {
            try
            {
                Consumer existingConsumer = financeEntities.Consumers.Find(id);
                if (existingConsumer == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Not Found"));
                }

                CompanyCard consumerCard = financeEntities.CompanyCards.Where(c => c.UserName == id).FirstOrDefault();
                if (consumerCard == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Card Not Found"));
                }

                existingConsumer.IsOpen = false;
                consumerCard.IsOpen     = false;

                financeEntities.SaveChanges();
                return(Request.CreateResponse(HttpStatusCode.Accepted, "Consumer Deleted Successfully"));
            } catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Consumer Could Not Be Deleted"));
            }
        }
Ejemplo n.º 2
0
        public HttpResponseMessage VerifyConsumer(string id)
        {
            try
            {
                Consumer unverifiedConsumer = financeEntities.Consumers.Find(id);
                if (unverifiedConsumer == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.Forbidden, "Consumer Not Found To Be Verified"));
                }

                CompanyCard consumerCard = financeEntities.CompanyCards.Where(c => c.UserName == unverifiedConsumer.UserName).FirstOrDefault();
                if (consumerCard == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Card Not Found"));
                }

                Card card = financeEntities.Cards.Where(c => c.CardTypeNo == unverifiedConsumer.CardTypeNo).FirstOrDefault();
                if (card == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Card Not Found"));
                }

                var remainingBalance = consumerCard.Balance - card.JoiningFee;
                consumerCard.Balance         = remainingBalance;
                unverifiedConsumer.IsPending = false;
                unverifiedConsumer.IsOpen    = true;
                consumerCard.IsOpen          = true;

                financeEntities.SaveChanges();
                return(Request.CreateResponse(HttpStatusCode.Accepted, "Consumer Verified Successfully"));
            } catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Consumer Could Not Be Verified"));
            }
        }
Ejemplo n.º 3
0
        public HttpResponseMessage DeductEmi()
        {
            try
            {
                var currentDate = DateTime.Now;

                foreach (var tran in financeEntities.Transactions)
                {
                    CompanyCard tranCard = financeEntities.CompanyCards.Where(c => c.UserName == tran.UserName).FirstOrDefault();
                    if (tranCard == null)
                    {
                        continue;
                    }

                    var  dayDifference = (currentDate - tran.LastChecked).Days;
                    bool isEmiDate     = (currentDate - tran.PurchaseDate).Days % 30 == 0;

                    if (tranCard.IsOpen && dayDifference > 0 && isEmiDate && tran.RemainingAmount > 0)
                    {
                        var currentRemainingAmount = tran.RemainingAmount - tran.EMIAmount;
                        tran.RemainingAmount = currentRemainingAmount;

                        var currentBalance = tranCard.Balance - tran.EMIAmount;
                        tranCard.Balance = currentBalance;
                    }
                    tran.LastChecked = DateTime.Now;
                }

                financeEntities.SaveChanges();
                return(Request.CreateResponse(HttpStatusCode.OK, "Operation Completed Successfully"));
            } catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Something Went Wrong"));
            }
        }
        public ActionResult RegisterNow(UserCardVM apvm)
        {
            UserCard    userCard    = apvm.UserCard;
            CompanyCard companyCard = apvm.CompanyCard;

            userCard.Password = DantexCrypt.Crypt(userCard.Password); //sifreyi kriptoladık

            if (_usRep.Any(x => x.UserName == userCard.UserName))
            {
                ViewBag.ZatenVar = "Kullanıcı ismi daha önce alınmıs";
                return(View());
            }
            else if (_usRep.Any(x => x.Email == userCard.Email))
            {
                ViewBag.ZatenVar = "Email zaten kayıtlı";
                return(View());
            }

            //Kullanıcı basarılı bir şekilde register işlemini tamamladıysa ona mail gonder...

            string gonderilecekMail = "Tebrikler...Hesabınız olusturulmustur...Hesabınızı aktive etmek icin https://localhost:44392/Register/Activation/" + userCard.ActivationCode + " linkine tıklayabilirsiniz.";

            MailSender.Send(userCard.Email, body: gonderilecekMail, subject: "Hesap aktivasyon!");
            _usRep.Add(userCard); //öncelikle bunu eklemelisiniz...Cünkü AppUser'in ID'si ilk basta olusmalı...Cünkü siz birebir ilişkide AppUser zorunlu olan alan Profile ise opsiyonal alan olarak olusturdunuz... Dolayısıyla ilk basta AppUser'in ID'si SaveChanges ile olusmalı


            if (!string.IsNullOrEmpty(companyCard.CompanyName) || !string.IsNullOrEmpty(companyCard.Phone) || !string.IsNullOrEmpty(companyCard.Address))
            {
                companyCard.ID = userCard.ID;
                _ccRep.Add(companyCard);
            }

            return(View("RegisterOk"));
        }
        public HttpResponseMessage RegisterConsumer([FromBody] Consumer consumer)
        {
            try
            {
                Consumer existingConsumer = db.Consumers.Find(consumer.UserName);
                if (existingConsumer != null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Username Already Exists"));
                }

                Bank newConsumerBank = db.Banks.Find(consumer.IFSC);
                if (newConsumerBank == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid IFSC Code"));
                }

                Consumer newConsumer = new Consumer
                {
                    UserName        = consumer.UserName,
                    Name            = consumer.Name,
                    Email           = consumer.Email,
                    PhoneNumber     = consumer.PhoneNumber,
                    Password        = consumer.Password,
                    AccountNo       = consumer.AccountNo,
                    IFSC            = consumer.IFSC,
                    Address         = consumer.Address,
                    CardTypeNo      = consumer.CardTypeNo,
                    ApplicationDate = DateTime.Now,
                    DateOfBirth     = consumer.DateOfBirth,
                    IsPending       = true,
                    IsOpen          = false
                };

                Card companyCard = db.Cards.Find(consumer.CardTypeNo);
                if (companyCard == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid Card Scheme"));
                }

                CompanyCard newConsumerCard = new CompanyCard()
                {
                    CardNumber = $"{consumer.UserName}{consumer.IFSC}",
                    CardTypeNo = consumer.CardTypeNo,
                    UserName   = consumer.UserName,
                    Validity   = DateTime.Now.AddMonths(24),
                    Balance    = companyCard.CardLimit,
                    IsOpen     = false
                };

                db.Entry(newConsumer).State     = System.Data.Entity.EntityState.Added;
                db.Entry(newConsumerCard).State = System.Data.Entity.EntityState.Added;
                db.SaveChanges();

                return(Request.CreateResponse(HttpStatusCode.Created, "User Registered Successfully And Awaiting Verification"));
            } catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Consumer Could Not Be Registered"));
            }
        }
Ejemplo n.º 6
0
        private static void CreateEmployeeAndPrint(Department department, CompanyCard prototypeCard)
        {
            var employeesNum = 100; // set number of empolyees per department

            for (int i = 0; i < employeesNum; i++)
            {
                var employeeName = "employee" + i;
                var employee     = new Employee(employeeName, department);
                var card         = prototypeCard.Clone();

                card.Name            = employee.Name; // change name from prototype of CompanyCard for each employee
                employee.CompanyCard = card;
                employee.CompanyCard.Print();
            }
        }
Ejemplo n.º 7
0
        public HttpResponseMessage GetCreditDetails(string id)
        {
            try
            {
                CompanyCard consumerCard = financeEntities.CompanyCards.Include("Card").Where(c => c.UserName == id).FirstOrDefault();
                if (consumerCard == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Credit Details Could Not Be Found"));
                }

                var creditDetails = new
                {
                    TotalCredit     = consumerCard.Card.CardLimit,
                    CreditUsed      = consumerCard.Card.CardLimit - consumerCard.Balance,
                    RemainingCredit = consumerCard.Balance
                };

                return(Request.CreateResponse(HttpStatusCode.OK, creditDetails));
            } catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Card Details Could Not Be Fetched"));
            }
        }
Ejemplo n.º 8
0
        public HttpResponseMessage PlaceOrder([FromBody] Order newOrder)
        {
            try
            {
                Consumer consumer = financeEntities.Consumers.Find(newOrder.UserName);
                if (consumer == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Username Is Invalid"));
                }

                Product selectedProduct = financeEntities.Products.Find(newOrder.ProductID);
                if (selectedProduct == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Product Could Not Be Found"));
                }

                EMI scheme = financeEntities.EMIs.Find(newOrder.SchemeNo);
                if (scheme == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "EMI Scheme Could Not Be Found"));
                }

                CompanyCard companyCard = financeEntities.CompanyCards.Where(c => c.UserName == newOrder.UserName).FirstOrDefault();
                if (companyCard == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Conumser Card Balance Could Not Be Fetched"));
                }

                int emiCost     = CalculateMonthlyEMI(selectedProduct, scheme.Months);
                int orderAmount = emiCost * scheme.Months;

                if (orderAmount > companyCard.Balance)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Insufficient Balance To Place Order"));
                }

                if (DateTime.Compare(companyCard.Validity, DateTime.Now) < 0)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Your Card Is Deactivated"));
                }

                Transaction newTransaction = new Transaction()
                {
                    UserName        = consumer.UserName,
                    ProductID       = selectedProduct.ProductID,
                    SchemeNo        = scheme.SchemeNo,
                    PurchaseDate    = DateTime.Now,
                    EMIAmount       = emiCost,
                    RemainingAmount = orderAmount - emiCost,
                    LastChecked     = DateTime.Now
                };
                financeEntities.Entry(newTransaction).State = System.Data.Entity.EntityState.Added;

                var currentBalance = companyCard.Balance - emiCost;
                companyCard.Balance = currentBalance;

                Deduction newAmountDeduction = new Deduction()
                {
                    UserName      = consumer.UserName,
                    DeductionDate = DateTime.Now,
                    EMIAmout      = emiCost,
                    ProductID     = selectedProduct.ProductID
                };
                financeEntities.Entry(newAmountDeduction).State = System.Data.Entity.EntityState.Added;

                financeEntities.SaveChanges();
                return(Request.CreateResponse(HttpStatusCode.Created, "Order Placed Successfully"));
            } catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Order Could Not Be Placed"));
            }
        }
Ejemplo n.º 9
0
        public static void ExecuteFromSearch()
        {
            Parser   parser   = new Parser(CaptchaApi);
            Exporter exporter = new Exporter(ExportedDir);

            AuthCredetials credentials = new AuthCredetials
            {
                UserName = "******",
                Password = "******"
            };
            IWebDriver driver = parser.CreateDriver(ExtDir, credentials);

            FileInfo     searchFI = new FileInfo(ExportedDir + "\\Search.xlsx");
            ExcelPackage excel    = new ExcelPackage(searchFI);

            ExcelWorksheet sheet    = excel.Workbook.Worksheets.FirstOrDefault();
            int            last_row = sheet.Cells.Where(c => c.Start.Column == 2 &&
                                                        c.Value != null).Last().End.Row;

            string search_page_url = "https://www.rusprofile.ru";

            for (int i = 631; i <= last_row; i++)
            {
error_link:
                try
                {
forward_base:
                    if (driver.Url != search_page_url)
                    {
                        driver.Url = "https://www.rusprofile.ru";
                    }
                    if (driver.PageSource.Contains("«Я не робот»."))
                    {
                        parser.SolveCaptcha(driver, driver.Url);

                        goto forward_base;
                    }
                    string searchString = sheet.Cells[i, 2].Value.ToString() + ", " + sheet.Cells[i, 6].Value.ToString();

                    var searchInput = driver.FindElement(By.ClassName("index-search-input"));
                    if (searchInput != null)
                    {
                        searchInput.SendKeys(searchString);
                    }
                    Thread.Sleep(1000);
                    var finded = driver.FindElements(By.XPath("//a[@class='search-drop__item']"));
                    if (finded.Count == 0)
                    {
                        Console.WriteLine(searchString + "- нет результатов поиска");
                        continue;
                    }
                    string finded_URL = finded.FirstOrDefault().GetAttribute("href");

                    CompanyCard card = parser.ParseCard(driver, finded_URL).Result;

                    sheet.Cells[i, 3].Value = card.Phones;
                    sheet.Cells[i, 4].Value = card.Mails;
                    sheet.Cells[i, 5].Value = card.Sites;
                    sheet.Cells[i, 7].Value = card.PrimaryOccupation;
                    sheet.Cells[i, 8].Value = card.OrganizationStatus;
                    excel.Save();
                }
                catch
                {
                    goto error_link;
                }
            }
            Console.WriteLine("Done");
            Console.ReadKey();
        }
Ejemplo n.º 10
0
        public static void ExecuteFromLinks(string[] args)
        {
            Proxy  proxy         = null;
            string LinksFileName = string.Empty;

            foreach (string arg in args)
            {
                if (arg.Contains("Links ="))
                {
                    LinksFileName = arg.Replace("Links = ", string.Empty).Trim();
                }
                if (arg.Contains("Proxy ="))
                {
                    proxy = new Proxy()
                    {
                        HttpProxy = arg.Replace("Proxy = ", string.Empty).Trim()
                    };
                }
            }
            if (string.IsNullOrEmpty(LinksFileName))
            {
                LinksFileName = "Links2.xlsx";
            }
            SoundPlayer player = new SoundPlayer(Environment.CurrentDirectory + "\\Speech On.wav");
            Dictionary <string, string> urls = new Dictionary <string, string>()
            {
                //{"411000", "https://www.rusprofile.ru/codes/411000/sankt-peterburg/" } ,
                //{"412000", "https://www.rusprofile.ru/codes/412000/sankt-peterburg/" } ,
                //{"421100", "https://www.rusprofile.ru/codes/421100/sankt-peterburg/" } ,
                //{"421200", "https://www.rusprofile.ru/codes/421200/sankt-peterburg/" } ,
                //{"421300", "https://www.rusprofile.ru/codes/421300/sankt-peterburg/" } ,
                //{"422100", "https://www.rusprofile.ru/codes/422100/sankt-peterburg/" } ,
                //{"422200", "https://www.rusprofile.ru/codes/422200/sankt-peterburg/" } ,
                //{"422210", "https://www.rusprofile.ru/codes/422210/sankt-peterburg/" } ,
                //{"422220", "https://www.rusprofile.ru/codes/422220/sankt-peterburg/" } ,
                //{"422230", "https://www.rusprofile.ru/codes/422230/sankt-peterburg/" } ,
                //{"429100", "https://www.rusprofile.ru/codes/429100/sankt-peterburg/" } ,
                //{"429110", "https://www.rusprofile.ru/codes/429110/sankt-peterburg/" } ,
                //{"429120", "https://www.rusprofile.ru/codes/429120/sankt-peterburg/" } ,
                //{"429140", "https://www.rusprofile.ru/codes/429140/sankt-peterburg/" } ,
                //{"429150", "https://www.rusprofile.ru/codes/429150/sankt-peterburg/" } ,
                //{"429900", "https://www.rusprofile.ru/codes/429900/sankt-peterburg/" } ,
                //{"431100", "https://www.rusprofile.ru/codes/431100/sankt-peterburg/" } ,
                //{"431200", "https://www.rusprofile.ru/codes/431200/sankt-peterburg/" } ,
                //{"431210", "https://www.rusprofile.ru/codes/431210/sankt-peterburg/" } ,
                //{"431220", "https://www.rusprofile.ru/codes/431220/sankt-peterburg/" } ,
                //{"431230", "https://www.rusprofile.ru/codes/431230/sankt-peterburg/" } ,
                //{"431240", "https://www.rusprofile.ru/codes/431240/sankt-peterburg/" } ,
                //{"431300", "https://www.rusprofile.ru/codes/431300/sankt-peterburg/" } ,
                //{"432000", "https://www.rusprofile.ru/codes/432000/sankt-peterburg/" } ,
                //{"432100", "https://www.rusprofile.ru/codes/432100/sankt-peterburg/" } ,
                //{"432200", "https://www.rusprofile.ru/codes/432200/sankt-peterburg/" } ,
                //{"432900", "https://www.rusprofile.ru/codes/432900/sankt-peterburg/" } ,
                //{"433100", "https://www.rusprofile.ru/codes/433100/sankt-peterburg/" } ,
                //{"433200", "https://www.rusprofile.ru/codes/433200/sankt-peterburg/" } ,
                //{"433210", "https://www.rusprofile.ru/codes/433210/sankt-peterburg/" } ,
                //{"433220", "https://www.rusprofile.ru/codes/433220/sankt-peterburg/" } ,
                //{"433230", "https://www.rusprofile.ru/codes/433230/sankt-peterburg/" } ,
                //{"433300", "https://www.rusprofile.ru/codes/433300/sankt-peterburg/" } ,
                //{"433400", "https://www.rusprofile.ru/codes/433400/sankt-peterburg/" } ,
                //{"433410", "https://www.rusprofile.ru/codes/433410/sankt-peterburg/" } ,
                //{"433420", "https://www.rusprofile.ru/codes/433420/sankt-peterburg/" } ,
                //{"433900", "https://www.rusprofile.ru/codes/433900/sankt-peterburg/" } ,
                //{"439100", "https://www.rusprofile.ru/codes/439100/sankt-peterburg/" } ,
                //{"439900", "https://www.rusprofile.ru/codes/439900/sankt-peterburg/" } ,
                //{"439910", "https://www.rusprofile.ru/codes/439910/sankt-peterburg/" } ,
                //{"439920", "https://www.rusprofile.ru/codes/439920/sankt-peterburg/" } ,
                //{"439930", "https://www.rusprofile.ru/codes/439930/sankt-peterburg/" } ,
                //{"439940", "https://www.rusprofile.ru/codes/439940/sankt-peterburg/" } ,
                //{"439950", "https://www.rusprofile.ru/codes/439950/sankt-peterburg/" } ,
                //{"439960", "https://www.rusprofile.ru/codes/439960/sankt-peterburg/" } ,
                //{"439970", "https://www.rusprofile.ru/codes/439970/sankt-peterburg/" } ,
                //{"439990", "https://www.rusprofile.ru/codes/439990/sankt-peterburg/" } ,
            };

            Parser   parser   = new Parser(CaptchaApi);
            Exporter exporter = new Exporter(ExportedDir);

            AuthCredetials credentials = new AuthCredetials
            {
                UserName = "******",
                Password = "******"
            };
            IWebDriver driver = null;

            if (proxy == null)
            {
                driver = parser.CreateDriver(ExtDir, credentials);
            }
            else
            {
                driver = parser.CreateDriver(ExtDir, credentials, proxy);
            }

            DirectoryInfo profiles = new DirectoryInfo(ExportedDir + "\\Profiles\\");

            FileInfo[] files = profiles.GetFiles();

            FileInfo     links = new FileInfo(ExportedDir + "\\" + LinksFileName);
            ExcelPackage pack  = new ExcelPackage(links);

            for (int sheetNum = 0; sheetNum < pack.Workbook.Worksheets.Count; sheetNum++)
            {
                foreach (ExcelWorksheet sheet in pack.Workbook.Worksheets)
                {
second_trying:
                    ExcelWorksheet linkSheet = sheet;
                    int last_row = linkSheet.Cells.Where(c => c.Start.Column == 1 &&
                                                         !c.Value.ToString().Equals("")).Last().End.Row;
                    int last_profile_row = 0;
                    Console.WriteLine("START PARSING " + linkSheet.Name + "At time: " + DateTime.Now.ToString());
                    ExcelPackage profilePack = null;
                    try
                    {
                        profilePack = new ExcelPackage(files.FirstOrDefault(f => f.Name.Contains(linkSheet.Name)));
                        ExcelWorksheet profileSheet = profilePack.Workbook.Worksheets.FirstOrDefault();
                        last_profile_row = profileSheet.Cells.Where(c => c.Start.Column == 2 &&
                                                                    !c.Value.ToString().Equals("")).Last().End.Row + 1;

                        IEnumerable <ExcelRangeBase> query = from row in linkSheet.Cells["C:XFD"] select row;
                        ExcelRangeBase trying_find_last    = query.ToList().FirstOrDefault(c => c.Value.ToString() == "wait");
                        if (trying_find_last == null)
                        {
                            Console.WriteLine("SKIP  PARSING " + linkSheet.Name + "At time: " + DateTime.Now.ToString());
                            continue;
                        }
                        int last_not_parsed_row = trying_find_last.Start.Row;

                        for (int row_index = last_not_parsed_row; row_index <= last_row; row_index++)
                        {
                            string url = linkSheet.Cells[row_index, 2].Value.ToString();

                            if (linkSheet.Cells[row_index, 3].Value.ToString() == "ok")
                            {
                                continue;
                            }
                            CompanyCard card = parser.ParseCard(driver, url).Result;

                            #region map
                            profileSheet.Cells[last_profile_row, 2].Value = card.ShortName;
                            profileSheet.Cells[last_profile_row, 3].Value = card.FullName;
                            profileSheet.Cells[last_profile_row, 4].Value = card.Phones;
                            profileSheet.Cells[last_profile_row, 5].Value = card.Mails;
                            profileSheet.Cells[last_profile_row, 6].Value = card.Sites;
                            profileSheet.Cells[last_profile_row, 7].Value = card.INN;
                            profileSheet.Cells[last_profile_row, 8].Value = card.PrimaryOccupation;
                            profileSheet.Cells[last_profile_row, 9].Value = card.OrganizationStatus;
                            #endregion
                            last_profile_row++;
                            profilePack.Save();

                            linkSheet.Cells[row_index, 3].Value = "ok";
                        }
                        pack.Save();
                        Console.WriteLine("STOP  PARSING " + linkSheet.Name + "At time: " + DateTime.Now.ToString());
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Error on links page number = " + sheetNum);
                        Console.WriteLine("      last profile row = " + last_profile_row);
                        Console.WriteLine("      executed again");
save_mark:
                        try
                        {
                            pack.Save();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            goto save_mark;
                        }
                        goto second_trying;
                    }
                }
            }
            driver.Close();
            player.Play();
            Console.WriteLine("Done");

            Console.ReadKey();
        }
Ejemplo n.º 11
0
        public async Task <CompanyCard> ParseCard(IWebDriver driver, string URL)
        {
            SoundPlayer player = new SoundPlayer(Environment.CurrentDirectory + "\\Speech On.wav");

forward:
            driver.Url = URL;
            Thread.Sleep(BaseSleepLoading);

            if (driver.PageSource.Contains("«Я не робот»."))
            {
                SolveCaptcha(driver, URL);

                goto forward;
            }

            CompanyCard card = new CompanyCard();

            System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> showHidden = driver.FindElements(By.XPath("(//button[@class='all-text-link js-hidden-text-opener'])"));
            Regex checkMore = new Regex(@"[Еще ]{4}[\d.]");

            try
            {
                foreach (IWebElement elem in showHidden)
                {
                    if (checkMore.IsMatch(elem.Text))
                    {
                        elem.Click();
                        Thread.Sleep(100);
                    }
                }
            }
            catch (Exception)
            {
            }

            card.ShortName = driver.FindElement(By.ClassName("company-header__row")).Text.Trim();

            card.FullName = driver.FindElement(By.ClassName("company-name")).Text.Trim();

            System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> phones = driver.FindElements(By.XPath("//span[contains(@class,'company-info__contact phone')]"));
            foreach (IWebElement phone in phones)
            {
                string editedPhone = phone.Text.Replace("Телефон\r\n", string.Empty);
                card.Phones += editedPhone + Environment.NewLine;
            }
            card.Phones = phones.Count > 0 ? card.Phones.Trim() : "нет данных";

            System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> mails = driver.FindElements(By.XPath("//span[contains(@class,'company-info__contact mail')]"));
            foreach (IWebElement mail in mails)
            {
                string editedMail = mail.Text.Replace("Электронная почта\r\n", string.Empty);
                card.Mails += editedMail + Environment.NewLine;
            }
            card.Mails = mails.Count > 0 ? card.Mails.Trim() : "нет данных";

            System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> sites = driver.FindElements(By.XPath("//span[contains(@class,'company-info__contact site')]"));
            foreach (IWebElement site in sites)
            {
                string editedSite = site.Text.Replace("Сайт\r\n", string.Empty);
                card.Sites += editedSite + Environment.NewLine;
            }
            card.Sites = sites.Count > 0 ? card.Sites.Trim() : "нет данных";

            try
            {
                IWebElement inn = driver.FindElement(By.XPath("(//dd[@class='company-info__text has-copy'])[2]"));
                IWebElement kpp = driver.FindElement(By.XPath("(//dd[@class='company-info__text has-copy'])[3]"));
                card.INN = inn.Text + " / " + kpp.Text;
            }
            catch (NoSuchElementException)
            {
                card.INN = "нет данных";
            }

            System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> primary_occupation = driver.FindElements(By.ClassName("company-info__text"));
            Regex regex = new Regex(@"\D*[(]{1}[\d]*[.]{1}[\d.]*[)]{1}");

            foreach (IWebElement info in primary_occupation)
            {
                if (regex.IsMatch(info.Text.Trim()))
                {
                    card.PrimaryOccupation = info.Text.Trim();
                    break;
                }
            }
            if (card.PrimaryOccupation == null)
            {
                player.Play();
            }

            string organization_status = driver.FindElement(By.ClassName("company-status")).Text;

            card.OrganizationStatus = organization_status;

            return(card);
        }