private static void getClassifChildren(ProductDetailAggregate pd, VidalClassification parent,TreeNode node) { IEnumerable<VidalClassification> children = pd.vidalClassifications.Where<VidalClassification>(l => ((l.parentLink != null ? l.parentLink.ToString() : null) == parent.id)); foreach (VidalClassification child in children) { TreeNode childNode = new TreeNode(); childNode.Name = child.id; childNode.Text = child.name; node.Nodes.Add(childNode); getClassifChildren(pd, child, childNode); } }
private static ProductDetailAggregate getProductDetailByFeedItem(SyndicationFeed productFeed) { Product product = getProductByFeedItem(productFeed.Items.SingleOrDefault(l => (l.Categories[0].Name == "PRODUCT"))); IEnumerable<SyndicationItem> molecules = productFeed.Items.Where(l => (l.Categories[0].Name == "MOLECULE")); List<Molecule> moleculeList = new List<Molecule>(); foreach (SyndicationItem item in molecules) { String moleculeName = item.Title.Text; int id = item.ElementExtensions.ReadElementExtensions<int>("id", vidalNameSpace).FirstOrDefault(); Molecule molec = new Molecule(id,moleculeName); moleculeList.Add(molec); } IEnumerable<SyndicationItem> recos = productFeed.Items.Where(l => (l.Categories[0].Name == "RECO")); List<Reco> recoList = getRecosBySyndicationFeed(recos); IEnumerable<SyndicationItem> vidalClassifs = productFeed.Items.Where(l => (l.Categories[0].Name == "VIDAL_CLASSIFICATION")); List<VidalClassification> vidalList = new List<VidalClassification>(); foreach (SyndicationItem item in vidalClassifs) { String classifName = item.Title.Text; String id = item.Id; SyndicationLink parentLink = (item.Links.FirstOrDefault(l => (l.RelationshipType == "inline"))); Uri parentLinkUri = null; if (parentLink != null) { parentLinkUri = parentLink.Uri; } VidalClassification vidalClass = new VidalClassification(id, classifName, parentLinkUri, parentLinkUri); vidalList.Add(vidalClass); } IEnumerable<SyndicationItem> packages = productFeed.Items.Where(l => (l.Categories[0].Name == "PACKAGE")); List<Package> packList = getPackagesBySyndicationFeed(packages); IEnumerable<SyndicationItem> genGroups = productFeed.Items.Where(l => (l.Categories[0].Name == "GENERIC_GROUP")); List<GenericGroup> groups = new List<GenericGroup>(); foreach (SyndicationItem group in genGroups) { int id =group.ElementExtensions.ReadElementExtensions<int>("id", vidalNameSpace).FirstOrDefault(); String name =group.Title.Text ; String type = group.ElementExtensions.ReadElementExtensions<String>("genericType", vidalNameSpace).FirstOrDefault(); SyndicationLink productSyndicationLink = group.Links.FirstOrDefault(l => (l.Title == "GENERIC_GROUP")); Uri productLink = null; if (productSyndicationLink != null) { productLink = productSyndicationLink.Uri; } groups.Add(new GenericGroup(id, name, type, productLink)); } ProductDetailAggregate fullProduct = new ProductDetailAggregate(); fullProduct.product = product; fullProduct.recos = recoList; fullProduct.vidalClassifications = vidalList; fullProduct.packages = packList; fullProduct.molecules = moleculeList; fullProduct.GenericGroups = groups; return fullProduct; }
public static List<VidalClassification> getVidalBySyndicationFeed(IEnumerable<SyndicationItem> vidals) { List<VidalClassification> vidalList = new List<VidalClassification>(); foreach (SyndicationItem item in vidals) { string ractName = item.Title.Text; int id = item.ElementExtensions.ReadElementExtensions<int>("id", vidalNameSpace).FirstOrDefault(); string feedid = item.Id; Uri altLink = null; SyndicationLink altSyndicationLink = item.Links.FirstOrDefault(l => (l.RelationshipType == "inline")); if (altSyndicationLink != null) { altLink = altSyndicationLink.Uri; } SyndicationLink productsLinkFeed = (item.Links.FirstOrDefault(l => (l.Title == "PRODUCTS"))); Uri productsLink = null; if (productsLinkFeed != null) { productsLink = productsLinkFeed.Uri; } VidalClassification vidal = new VidalClassification(feedid, ractName, altLink, productsLink); vidalList.Add(vidal); } return vidalList; }