ParseDocumentAndGetCharacteristics(HtmlDocument doc)
        {
            HtmlElementCollection tables = doc.GetElementsByTagName("table");

            if (tables.Count < 4)
            {
                throw new OldVehicleNotSupportedException(vin);
            }
            HtmlElement table4 = tables[4];
            HtmlElement table6 = tables[6];
            VehicleCharacteristicsItemsGroup basicCharacteristicsGroup =
                ParseBasicCharacteristics(table4);
            VehicleCharacteristicsItemsGroup extendedCharacteristicsGroup =
                ParseExtendedCharacteristicsGroup(table6);

            if (basicCharacteristicsGroup.Items.Count == 1 ||
                extendedCharacteristicsGroup.Items.Count == 1)
            {
                throw new VinDecodeException("No data for this vin");
            }
            VehicleCharacteristics chars =
                new VehicleCharacteristics(vin);

            chars.Language           = "ru_RU";
            chars.GeneralVehicleInfo = String.Format("OPEL {0}, Engine {1}",
                                                     basicCharacteristicsGroup.Items[0].Value,
                                                     basicCharacteristicsGroup.Items[3].Value);
            chars.ItemsGroups.Add(basicCharacteristicsGroup);
            chars.ItemsGroups.Add(extendedCharacteristicsGroup);
            return(chars);
        }
        public static string GetValueByKey(
            this VehicleCharacteristicsItemsGroup group, string key)
        {
            VehicleCharacteristicsItem item = group.Items.FirstOrDefault(i =>
                                                                         i.Name.ToUpper() == key.ToUpper());

            if (item == null)
            {
                return(String.Empty);
            }
            return(item.Value);
        }
        private void ParseGeneralInfoItemItemNode(HtmlNode node,
                                                  VehicleCharacteristicsItemsGroup itemsGroup)
        {
            VehicleCharacteristicsItem item =
                new VehicleCharacteristicsItem();
            HtmlNode name  = node.SelectSingleNode(@"./td[1]");
            HtmlNode value = node.SelectSingleNode(@"./td[2]");

            item.Name  = Strip(name.InnerText);
            item.Value = Strip(value.InnerText);
            itemsGroup.Items.Add(item);
        }
        private void ParseUsualItemNode(HtmlNode trNode,
                                        VehicleCharacteristicsItemsGroup group)
        {
            VehicleCharacteristicsItem item =
                new VehicleCharacteristicsItem();

            item.Name  = Strip(trNode.SelectSingleNode("./td[1]").InnerText);
            item.Value = Strip(trNode.SelectSingleNode("./td[2]").InnerText);
            // TODO : Parse Code
            //item.Code =
            group.Items.Add(item);
        }
 public VehicleCharacteristicsItemsGroupViewModel(
     VehicleCharacteristicsItemsGroup model)
 {
     if (model == null)
     {
         throw new ArgumentNullException();
     }
     this.model = model;
     foreach (VehicleCharacteristicsItem item in model.Items)
     {
         items.Add(new VehicleCharacteristicsItemViewModel(item));
     }
 }
        public static VehicleCharacteristicsItemsGroup Assemble(
            VehicleCharacteristicsItemsGroupDto dto)
        {
            VehicleCharacteristicsItemsGroup result =
                new VehicleCharacteristicsItemsGroup();

            result.Name = dto.Name;
            foreach (VehicleCharacteristicsItemDto item in dto.Items)
            {
                result.Items.Add(VehicleCharacteristicsItemDtoAssembler.
                                 Assemble(item));
            }
            return(result);
        }
        public static string GetVehicleModelString(
            this VehicleCharacteristics chars)
        {
            string key = LocalizedCharacteristicsStrings.
                         ResolveVehicleModelKey(chars);

            /*string groupKey = LocalizedCharacteristicsStrings.
             *  ResolveVehicleModelGroupKey(chars.Language);*/
            string groupKey = chars.GeneralVehicleInfo;
            VehicleCharacteristicsItemsGroup characteristicsGroup = chars.
                                                                    ItemsGroups.FirstOrDefault(g =>
                                                                                               g.Name.ToUpper().Contains(groupKey.ToUpper()));

            return(characteristicsGroup.GetValueByKey(key));
        }
示例#8
0
        public static VehicleCharacteristicsItemsGroupDto FromDomainObjectToDto(VehicleCharacteristicsItemsGroup source)
        {
            VehicleCharacteristicsItemsGroupDto target =
                new VehicleCharacteristicsItemsGroupDto();

            target.Id = source.Id;
            target.CharacteristicsId = source.CharacteristicsId;
            target.Name = source.Name;
            foreach (VehicleCharacteristicsItem item in source.Items)
            {
                target.Items.Add(VehicleCharacteristicsItemAssembler.
                                 FromDomainObjectToDto(item));
            }
            return(target);
        }
        private void ParseGeneralInfoTable(HtmlNode tableNode,
                                           VehicleCharacteristics result)
        {
            //HtmlNode tbody = tableNode.SelectSingleNode("./tbody");
            VehicleCharacteristicsItemsGroup itemsGroup =
                new VehicleCharacteristicsItemsGroup();

            itemsGroup.Name = result.GeneralVehicleInfo;
            // TODO : Get translation for "general info"
            foreach (HtmlNode node in tableNode.SelectNodes("./tr"))
            {
                ParseGeneralInfoItemItemNode(node, itemsGroup);
            }
            result.ItemsGroups.Add(itemsGroup);
        }
示例#10
0
        public static VehicleCharacteristicsItemsGroupEntity FromDomainObjectToEntity(
            VehicleCharacteristicsItemsGroup source)
        {
            VehicleCharacteristicsItemsGroupEntity target =
                new VehicleCharacteristicsItemsGroupEntity();

            target.Id = source.Id;
            target.VehicleCharacteristicsEntityId = source.CharacteristicsId;
            target.Name = source.Name;
            foreach (VehicleCharacteristicsItem item in source.Items)
            {
                target.VehicleCharacteristicsItem.Add(VehicleCharacteristicsItemAssembler.
                                                      FromDomainObjectToEntity(item));
            }
            return(target);
        }
示例#11
0
        public static VehicleCharacteristicsItemsGroup FromEntityToDomainObject(
            VehicleCharacteristicsItemsGroupEntity source)
        {
            VehicleCharacteristicsItemsGroup target =
                new VehicleCharacteristicsItemsGroup();

            target.Id = source.Id;
            target.CharacteristicsId = source.VehicleCharacteristicsEntityId;
            target.Name = source.Name;
            foreach (VehicleCharacteristicsItemEntity item in
                     source.VehicleCharacteristicsItem)
            {
                target.Items.Add(VehicleCharacteristicsItemAssembler.
                                 FromEntityToDomainObject(item));
            }
            return(target);
        }
示例#12
0
        ParseExtendedCharacteristicsGroup(HtmlElement table6)
        {
            HtmlElementCollection            rows   = table6.GetElementsByTagName("tr");
            VehicleCharacteristicsItemsGroup result = new VehicleCharacteristicsItemsGroup();

            result.Name = "Extended characteristics";
            foreach (HtmlElement row in rows)
            {
                VehicleCharacteristicsItem item = new VehicleCharacteristicsItem();
                HtmlElement td1 = row.GetElementsByTagName("td")[0];
                item.Name = td1.InnerText;
                HtmlElement td2 = row.GetElementsByTagName("td")[1];
                item.Value = td2.InnerText;
                result.Items.Add(item);
            }
            return(result);
        }
        private void ParseUsualTable(HtmlNode tableNode,
                                     VehicleCharacteristics result)
        {
            VehicleCharacteristicsItemsGroup group =
                new VehicleCharacteristicsItemsGroup();
            HtmlNodeCollection trNodes = tableNode.SelectNodes("./tr");
            HtmlNodeCollection tds     = trNodes[0].SelectNodes("./td");

            group.Name = Strip(tds[0].InnerText);
            HtmlNode           subTable    = trNodes[1].SelectSingleNode("./td/table");
            HtmlNodeCollection itemTrNodes = subTable.SelectNodes("./tr");

            for (int i = 1; i < itemTrNodes.Count; i++)
            {
                ParseUsualItemNode(itemTrNodes[i], group);
            }
            result.ItemsGroups.Add(group);
        }
        public int Recognize(VehicleCharacteristics characteristics)
        {
            string itemName = LocalizedCharacteristicsStrings.ResolveProductionDateKey(characteristics.Language);
            VehicleCharacteristicsItemsGroup group =
                characteristics.ItemsGroups.FirstOrDefault(ig =>
                                                           ig.Name.Equals(characteristics.GeneralVehicleInfo,
                                                                          StringComparison.InvariantCultureIgnoreCase));
            VehicleCharacteristicsItem item = group.Items.FirstOrDefault(i =>
                                                                         i.Name.Equals(itemName, StringComparison.InvariantCultureIgnoreCase));
            string date = DateTime.Today.ToShortDateString();

            if (item != null)
            {
                date = item.Value;
            }
            string[] split = date.Split('/');
            return(Int32.Parse(split[2]));
        }
        public static string GetEngineFamilyString(
            this VehicleCharacteristics chars)
        {
            string generalInformationGroupName =
                LocalizedCharacteristicsStrings.
                ResolveGeneralInformationGroupName(chars.Language);
            VehicleCharacteristicsItemsGroup generalInformationGroup =
                chars.ItemsGroups.FirstOrDefault(
                    g => g.Name.Contains(generalInformationGroupName));

            if (generalInformationGroup == null)
            {
                throw new NoInfoForVinException("Insufficient characteristics data");
            }
            string engineFamilyString =
                generalInformationGroup.GetValueByKey(
                    LocalizedCharacteristicsStrings.
                    ResolveEngineFamilyKey(chars.Language));

            return(engineFamilyString);
        }
示例#16
0
        ParseBasicCharacteristics(HtmlElement table4)
        {
            HtmlElementCollection            rows   = table4.GetElementsByTagName("tr");
            VehicleCharacteristicsItemsGroup result = new VehicleCharacteristicsItemsGroup();

            result.Name = "Basic characteristics";
            int detailedDataRowsCount            = rows[0].GetElementsByTagName("tr").Count;
            VehicleCharacteristicsItem firstItem = new VehicleCharacteristicsItem();

            firstItem.Name  = rows[0].GetElementsByTagName("td")[0].InnerText;
            firstItem.Value = rows[0].GetElementsByTagName("td")[2].InnerText;
            result.Items.Add(firstItem);
            for (int i = detailedDataRowsCount + 1; i < rows.Count; i++)
            {
                HtmlElement row = rows[i];
                VehicleCharacteristicsItem item = new VehicleCharacteristicsItem();
                item.Name  = row.GetElementsByTagName("td")[0].InnerText;
                item.Value = row.GetElementsByTagName("td")[2].InnerText;
                result.Items.Add(item);
            }
            return(result);
        }