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);
 }
Exemplo n.º 7
0
        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);
                }
            }
        }
Exemplo n.º 8
0
        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;
                            }
                        }
                    }
                }
            }
        }