Esempio n. 1
0
        private void ParseLot(AngleSharp.Html.Dom.IHtmlDocument document, MessageModel descriptionMessage)
        {
            var elems = document.GetElementsByClassName("lotInfo");

            if (elems.Length == 0)
            {
                return;
            }

            var table = elems[0];
            var trs   = table.GetElementsByTagName("tr");

            if (trs.Length > 0)
            {
                int number      = -1;
                int description = -1;
                int startPrice  = -1;
                int step        = -1;
                int deposit     = -1;
                int PriceReductionInformation = -1;
                int PropertyClassification    = -1;

                var header     = trs[0];
                var thsHeaders = header.GetElementsByTagName("th");
                var length     = thsHeaders.Length;
                for (int i = 0; i < length; i++)
                {
                    switch (thsHeaders[i].TextContent)
                    {
                    case "Номер лота":
                        number = i;
                        break;

                    case "Описание":
                        description = i;
                        break;

                    case "Начальная цена, руб":
                        startPrice = i;
                        break;

                    case "Шаг":
                        step = i;
                        break;

                    case "Задаток":
                        deposit = i;
                        break;

                    case "Информация о снижении цены":
                        PriceReductionInformation = i;
                        break;

                    case "Классификация имущества":
                        PropertyClassification = i;
                        break;
                    }
                }
                length = trs.Length;
                for (int i = 1; i < length; i++)
                {
                    var lot = new LotModel();
                    var tds = trs[i].GetElementsByTagName("td");
                    if (number != -1)
                    {
                        int num;
                        if (int.TryParse(tds[number].TextContent, out num))
                        {
                            lot.Number = num;
                        }
                    }
                    if (description != -1)
                    {
                        lot.Description = tds[description].TextContent;
                    }
                    if (startPrice != -1)
                    {
                        double num;
                        if (double.TryParse(tds[startPrice].TextContent, out num))
                        {
                            lot.StartPrice = num;
                        }
                    }
                    if (step != -1)
                    {
                        lot.Step = tds[step].TextContent;
                    }
                    if (deposit != -1)
                    {
                        lot.Deposit = tds[deposit].TextContent;
                    }
                    if (PriceReductionInformation != -1)
                    {
                        lot.PriceReductionInformation = tds[PriceReductionInformation].TextContent;
                    }
                    if (PropertyClassification != -1)
                    {
                        lot.PropertyClassification = tds[PropertyClassification].TextContent;
                    }

                    descriptionMessage.Lots.Add(lot);
                    //Log.Debug($"Add lot - {lot.Number}");
                }
            }

            var regex  = new Regex(@"\d+\.\d+\.\d+&nbsp;\d+\:\d+");
            var regex1 = new Regex(@"\d+\.\d+\.\d+\s+\d+\:\d+");
            var body   = document.GetElementsByTagName("body")[0];
            var ms     = regex1.Matches(body.TextContent);

            if (ms.Count >= 2)
            {
                descriptionMessage.DateStart = DateTime.Parse(ms[0].Value);
                descriptionMessage.DateEnd   = DateTime.Parse(ms[1].Value);
            }
            if (ms.Count == 3)
            {
                descriptionMessage.DateStartBargaining = DateTime.Parse(ms[2].Value);
            }
        }