public List <ContentProductGroup> GetListOfContentProductGroupsToInsert(Dictionary <int, List <Content> > listOfContents, List <ContentProductGroup> listOfCurrentContentProductGroups) { List <ContentProductGroup> listOfContentProductGroupsToInsert = new List <ContentProductGroup>(); listOfContents.ForEach(productGroup => { int productGroupID = productGroup.Key; List <Content> listOfContentPerProductGroup = productGroup.Value; List <Content> listOfContentPerProductGroupToInsert = ( from c in listOfContentPerProductGroup join cpr in listOfCurrentContentProductGroups.Where(x => x.MasterGroupMappingID == productGroupID) on c.ProductID equals cpr.ProductID into notExistContents from nec in notExistContents.DefaultIfEmpty() where nec == null select c ).ToList(); listOfContentPerProductGroupToInsert.ForEach(content => { ContentProductGroup contentProductGroup = new ContentProductGroup() { ConnectorID = content.ConnectorID, MasterGroupMappingID = productGroupID, ProductID = content.ProductID, ProductGroupMappingID = 1546 // todo: remove this }; listOfContentProductGroupsToInsert.Add(contentProductGroup); }); }); return(listOfContentProductGroupsToInsert); }
public void DeleteContentProductGroup(ContentProductGroup contentProductGroup) { petaPoco.Execute(string.Format(@" DELETE FROM ContentProductGroup WHERE ContentProductGroupID = {0} ", contentProductGroup.ContentProductGroupID)); }
public ContentProductGroup GetContentProductGroupByID(int connectorID, int masterGroupMappingID, int productID) { ContentProductGroup contentProductGroup = petaPoco.SingleOrDefault <ContentProductGroup>(string.Format(@" SELECT * FROM ContentProductGroup WHERE ConnectorID = {0} AND MasterGroupMappingID = {1} AND ProductID = {2} ", connectorID, masterGroupMappingID, productID)); return(contentProductGroup); }
public void InsertContentProductGroup(ContentProductGroup contentProductGroup) { var newRecord = new ContentProductGroup() { ConnectorID = contentProductGroup.ConnectorID, ProductID = contentProductGroup.ProductID, ProductGroupMappingID = contentProductGroup.ProductGroupMappingID, MasterGroupMappingID = contentProductGroup.MasterGroupMappingID, Exists = true, CreationTime = DateTime.Now, CreatedBy = Concentrator.Objects.Web.Client.User.UserID }; petaPoco.Insert(newRecord); }
public void DeleteContentProductGroup(ContentProductGroup contentProductGroup) { contentProductGroupRepo.DeleteContentProductGroup(contentProductGroup); }
public void InsertContentProductGroup(ContentProductGroup contentProductGroup) { contentProductGroupRepo.InsertContentProductGroup(contentProductGroup); }
public void Process() { var connectorID = (_connector.ParentConnectorID.HasValue ? _connector.ParentConnectorID.Value : _connector.ConnectorID); var score = 0; Dictionary <int, bool> existingCPGs = _repoContentProductGroup.GetAll(c => c.ConnectorID == _connector.ConnectorID && c.IsCustom && c.MasterGroupMappingID != null).Select(c => c.ContentProductGroupID).Select(c => new { ContentProductGroupID = c, Active = false }).ToDictionary(c => c.ContentProductGroupID, c => c.Active); List <string> allMasterGroupMappingBackendLabels = _repoMasterGroupMapping.GetAll(c => c.ConnectorID == _connector.ConnectorID && c.BackendMatchingLabel != null).Select(c => c.BackendMatchingLabel).ToList().Where(c => !string.IsNullOrEmpty(c)).ToList(); foreach (var grp in _groups) { var parentMasterGroupMapping = _repoMasterGroupMapping.GetAll(c => c.ConnectorID == connectorID && c.ProductGroupID == _getTheLookGroupID).Where(c => c.MasterGroupMappingParent.ProductGroup.ProductGroupVendors.FirstOrDefault(l => l.VendorID == 1).VendorProductGroupCode1 == grp.TargetGroup).FirstOrDefault(); if (parentMasterGroupMapping == null) { continue; } var label = grp.BackendLabel; var mapping = _repoMasterGroupMapping.GetSingle(c => c.ProductGroupID == _groupID && c.BackendMatchingLabel == label && c.ParentMasterGroupMappingID == parentMasterGroupMapping.MasterGroupMappingID); allMasterGroupMappingBackendLabels.Remove(label); if (mapping == null) { mapping = new MasterGroupMapping() { CustomProductGroupLabel = label, ProductGroupID = _groupID, ConnectorID = connectorID, MasterGroupMappingParent = parentMasterGroupMapping, ParentMasterGroupMappingID = parentMasterGroupMapping.MasterGroupMappingID, BackendMatchingLabel = label, Score = score, MasterGroupMappingProducts = new List <MasterGroupMappingProduct>() }; var magentoProductGroupSetting = new MagentoProductGroupSetting() { MasterGroupMapping = mapping, DisabledMenu = true, ShowInMenu = true }; _repoMasterGroupMapping.Add(mapping); _repoMagentoSetting.Add(magentoProductGroupSetting); } foreach (var prod in grp.Products) { var activeCPG = _repoContentProductGroup.GetSingle(c => c.ProductID == prod && c.ConnectorID == _connector.ConnectorID && c.IsCustom && c.MasterGroupMapping.BackendMatchingLabel == mapping.BackendMatchingLabel && c.MasterGroupMapping.ParentMasterGroupMappingID == mapping.ParentMasterGroupMappingID); if (activeCPG == null) { var content = _repoContent.GetSingle(c => c.ProductID == prod && c.ConnectorID == _connector.ConnectorID); if (content != null) { activeCPG = new ContentProductGroup() { ProductID = prod, ConnectorID = _connector.ConnectorID, IsCustom = true, MasterGroupMapping = mapping, ProductGroupMappingID = 933 //TODO: for now hardcoded, remove when total migration is complete }; _repoContentProductGroup.Add(activeCPG); var masterGroupMappingProduct = mapping.MasterGroupMappingProducts.FirstOrDefault(x => x.ProductID == prod); if (masterGroupMappingProduct == null) { masterGroupMappingProduct = new MasterGroupMappingProduct() { ProductID = prod, IsCustom = true }; mapping.MasterGroupMappingProducts.Add(masterGroupMappingProduct); } } } else { existingCPGs[activeCPG.ContentProductGroupID] = true; } } score++; } foreach (var cp in existingCPGs.Where(c => !c.Value)) { var contentProductGroup = _repoContentProductGroup.GetSingle(c => c.ContentProductGroupID == cp.Key); if (contentProductGroup.CreatedBy == 1) ///quick fix { _repoContentProductGroup.Delete(contentProductGroup); } } }
private void ProcessProductGroups( PetaPoco.Database pDb, Connector connector, List <Content> content, List <ProductGroupMapping> productGroupMappings, FilterInfo filter, ProductGroupMapping parent, List <ContentProductGroup> contentProductGroups, List <ContentProductGroup> newContentProductGroupsToInsertInDb ) { if (filter.Flatten) { if (parent == null) { log.WarnFormat("FlattenHierarchy is not supported on root mappings"); return; } //combine all child groups into this one List <int> childIDList = productGroupMappings.Select(x => x.ProductGroupID).ToList(); //recursive? var groupProducts = content.AsQueryable(); if (parent.FilterByParentGroup) { if (filter.ProductGroupFilter.Count > 0) { foreach (int id in filter.ProductGroupFilter) { groupProducts = groupProducts.Where(x => x.ProductGroupVendors.Contains(id)); } } } //filter all groupProducts = groupProducts.Where(x => x.ProductGroupVendors.Any(y => childIDList.Contains(y))); foreach (var mapping in productGroupMappings) { if (mapping.FilterByParentGroup) { if (filter.ProductGroupFilter.Count > 0) { foreach (int id in filter.ProductGroupFilter) { groupProducts = groupProducts.Where(x => x.ProductGroupVendors.Contains(id)); } } } } foreach (var product in groupProducts) { var currentRecord = contentProductGroups.Where( x => x.ConnectorID == connector.ConnectorID && x.ProductID == product.ProductID && x.ProductGroupMappingID == parent.ProductGroupMappingID).SingleOrDefault(); if (currentRecord == null) { var newRecord = new ContentProductGroup() { ConnectorID = connector.ConnectorID, ProductID = product.ProductID, ProductGroupMappingID = parent.ProductGroupMappingID, Exists = true, CreationTime = DateTime.Now, CreatedBy = Concentrator.Objects.Web.Client.User.UserID }; newContentProductGroupsToInsertInDb.Add(newRecord); contentProductGroups.Add(newRecord); } else { currentRecord.Exists = true; } } //unit.Save(); } else { foreach (var mapping in productGroupMappings) { var childMappings = pDb.Fetch <ProductGroupMapping>("SELECT * FROM ProductGroupMapping WHERE ParentProductGroupMappingID = @0", mapping.ProductGroupMappingID); bool hasChildren = childMappings.Count > 0; if (hasChildren) { var childFilter = new FilterInfo(); // do child groups if (mapping.FilterByParentGroup) { childFilter.ProductGroupFilter.AddRange(filter.ProductGroupFilter); } childFilter.ProductGroupFilter.Add(mapping.ProductGroupID); childFilter.Flatten = mapping.FlattenHierarchy; ProcessProductGroups(pDb, connector, content, childMappings, childFilter, mapping, contentProductGroups, newContentProductGroupsToInsertInDb); } else { var groupProducts = content.Where(c => c.ProductGroupVendors.Contains(mapping.ProductGroupID)).ToList(); if (mapping.FilterByParentGroup) { if (filter.ProductGroupFilter.Count > 0) { foreach (int id in filter.ProductGroupFilter) { groupProducts = groupProducts.Where(x => x.ProductGroupVendors.Contains(id)).ToList(); } } } foreach (var product in groupProducts) { var currentRecord = contentProductGroups.Where( x => x.ConnectorID == connector.ConnectorID && x.ProductID == product.ProductID && x.ProductGroupMappingID == mapping.ProductGroupMappingID).SingleOrDefault(); if (currentRecord == null) { var newRecord = new ContentProductGroup() { ConnectorID = connector.ConnectorID, ProductID = product.ProductID, ProductGroupMappingID = mapping.ProductGroupMappingID, Exists = true, CreationTime = DateTime.Now, CreatedBy = Concentrator.Objects.Web.Client.User.UserID }; newContentProductGroupsToInsertInDb.Add(newRecord); contentProductGroups.Add(newRecord); } else { currentRecord.Exists = true; } } } } } }