Ejemplo n.º 1
0
        private string GetMasterGroupMappingImage(MasterGroupMapping mapping, Dictionary <int, List <MasterGroupMappingMedia> > mappingMedia, MasterGroupMappingMediaType masterGroupMappingMediaType, int languageID)
        {
            var imageUrl      = ConfigurationManager.AppSettings["ConcentratorImageUrl"];
            var groupImageUrl = ConfigurationManager.AppSettings["FTPMasterGroupMappingMediaPath"];

            if (mappingMedia.ContainsKey(mapping.MasterGroupMappingID))
            {
                var masterGroupMappingMedia = mappingMedia[mapping.MasterGroupMappingID];
                var connectorLanguageMedia  = masterGroupMappingMedia.FirstOrDefault(media => media.ConnectorID == connectorID && media.LanguageID == languageID && media.ImageTypeID == (int)masterGroupMappingMediaType);

                if (connectorLanguageMedia == null)
                {
                    connectorLanguageMedia = masterGroupMappingMedia.FirstOrDefault(media => media.ImageTypeID == (int)masterGroupMappingMediaType);
                }

                var image = connectorLanguageMedia == null ? string.Empty : connectorLanguageMedia.ImagePath;

                if (!string.IsNullOrEmpty(imageUrl) && !string.IsNullOrEmpty(image))
                {
                    imageUrl = new Uri(new Uri(imageUrl), groupImageUrl + "/" + image).ToString();
                }
                else
                {
                    imageUrl = image;
                }
            }
            else
            {
                return(string.Empty);
            }
            return(imageUrl);
        }
        private int CreateNewMasterGroupMapping(string masterGroupMappingName, int?parentMasterGroupMappingID)
        {
            MasterGroupMapping newMasterGroupMapping = new MasterGroupMapping()
            {
                ProductGroupID = -1,
                Score          = 100
            };

            if (parentMasterGroupMappingID.HasValue && parentMasterGroupMappingID.Value > 0)
            {
                newMasterGroupMapping.ParentMasterGroupMappingID = parentMasterGroupMappingID.Value;
            }

            int masterGroupMappingID = masterGroupMappingRepo.InsertMasterGroupMapping(newMasterGroupMapping);

            MasterGroupMappingLanguage newMasterGroupMappingLanguage = new MasterGroupMappingLanguage()
            {
                MasterGroupMappingID = masterGroupMappingID,
                LanguageID           = 2,
                Name = masterGroupMappingName
            };

            masterGroupMappingRepo.InsertMasterGroupMappingLanguage(newMasterGroupMappingLanguage);
            return(masterGroupMappingID);
        }
Ejemplo n.º 3
0
        public bool IsMasterGroupMappingExists(int masterGroupMappingID)
        {
            MasterGroupMapping masterGroupMapping = petaPoco.SingleOrDefault <MasterGroupMapping>(string.Format(@"
        SELECT  *
        FROM    dbo.MasterGroupMapping
        WHERE   MasterGroupMappingID = {0}
      ", masterGroupMappingID));

            return(masterGroupMapping != null);
        }
Ejemplo n.º 4
0
        public MasterGroupMapping GetMasterGroupMappingByMasterGroupMappingID(int masterGroupMappingID)
        {
            MasterGroupMapping masterGroupMapping = petaPoco.SingleOrDefault <MasterGroupMapping>(string.Format(@"
        SELECT  *
        FROM    dbo.MasterGroupMapping
        WHERE   MasterGroupMappingID = {0}
      ", masterGroupMappingID));

            return(masterGroupMapping);
        }
Ejemplo n.º 5
0
        public void UpdateMasterGroupMapping(MasterGroupMapping currentMasterGroupMapping, MasterGroupMapping compareMasterGroupMapping, List <string> ignoreProperties)
        {
            List <string> changes = generateUpdateFields.GetPropertiesForUpdate(compareMasterGroupMapping, currentMasterGroupMapping, ignoreProperties);

            if (changes.Count > 0)
            {
                var updateQuery = string.Join(",", changes);
                petaPoco.Update <MasterGroupMapping>(string.Format(@"
          SET {1}
          WHERE MasterGroupMappingID = {0}
        ", currentMasterGroupMapping.MasterGroupMappingID, updateQuery));
            }
        }
        private void CopyProductGroupsToMasterGroupMapping(int productGroupID, int brandProductGroupID)
        {
            List <ProductGroup> listOfActiveProductGroups = productGroupRepo.GetListOfActiveProductGroups();

            int scoreCounter = 0;

            listOfActiveProductGroups.ForEach(productGroup =>
            {
                var productGroupLanguages = productGroupRepo.GetListOfProductGroupLanguagesByProductGroupID(productGroup.ProductGroupID);
                var vendorProductGroups   = productGroupRepo.GetListOfMappedVendorProductGroupsByProductGroupID(productGroup.ProductGroupID);

                if (productGroupLanguages.Count > 0 && vendorProductGroups.Count > 0)
                {
                    MasterGroupMapping masterGroupMapping = new MasterGroupMapping()
                    {
                        ProductGroupID = productGroup.ProductGroupID,
                        Score          = scoreCounter
                    };

                    if (vendorProductGroups.Where(x => x.BrandCode == null).Count() > 0)
                    {
                        masterGroupMapping.ParentMasterGroupMappingID = productGroupID;
                    }
                    else
                    {
                        masterGroupMapping.ParentMasterGroupMappingID = brandProductGroupID;
                    }

                    int masterGroupMappingID = masterGroupMappingRepo.InsertMasterGroupMapping(masterGroupMapping);

                    productGroupLanguages.ForEach(language =>
                    {
                        MasterGroupMappingLanguage masterGroupMappingLanguage = new MasterGroupMappingLanguage()
                        {
                            MasterGroupMappingID = masterGroupMappingID,
                            LanguageID           = language.LanguageID,
                            Name = language.Name
                        };

                        masterGroupMappingRepo.InsertMasterGroupMappingLanguage(masterGroupMappingLanguage);
                    });

                    vendorProductGroups.ForEach(vendorProductGroup =>
                    {
                        masterGroupMappingRepo.MapVendorProductGroupToMasterGroupMapping(vendorProductGroup.ProductGroupVendorID, masterGroupMappingID);
                    });

                    scoreCounter++;
                }
            });
        }
Ejemplo n.º 7
0
        private void UpdateProductGroupMappingInDestConnector(List <MasterGroupMapping> listOfProductGroupMappingToUpdate, List <MasterGroupMapping> listOfParentProductGroupMapping)
        {
            List <string> ignoreList = generateIgnoreList.GenerateIgnoreProperties(new MasterGroupMapping(),
                                                                                   x => x.MasterGroupMappingID,
                                                                                   x => x.ConnectorID,
                                                                                   x => x.ParentMasterGroupMappingID,
                                                                                   x => x.SourceProductGroupMappingID);

            listOfProductGroupMappingToUpdate.ForEach(productGroupMapping =>
            {
                MasterGroupMapping compareProductGroupMapping = listOfParentProductGroupMapping.SingleOrDefault(x => x.MasterGroupMappingID == productGroupMapping.SourceProductGroupMappingID);
                if (compareProductGroupMapping != null)
                {
                    masterGroupMappingRepo.UpdateMasterGroupMapping(productGroupMapping, compareProductGroupMapping, ignoreList);
                }
            });
        }
        private void AddChild(AssortmentTree tree, MasterGroupMapping current, IEnumerable <MasterGroupMapping> mappings)
        {
            var retainProducts        = false;
            var retainProductsSetting = current.MasterGroupMappingSettingValues.FirstOrDefault(x => x.MasterGroupMappingSetting.Name == "Retain Products");

            if (retainProductsSetting != null)
            {
                bool.TryParse(retainProductsSetting.Value, out retainProducts);
            }

            tree.AddToTree(current.MasterGroupMappingID, current.ParentMasterGroupMappingID, flattenHierarchy: current.FlattenHierarchy, filterByParent: current.FilterByParentGroup, retainProducts: retainProducts);

            foreach (var childMapping in mappings.Where(c => c.ParentMasterGroupMappingID == current.MasterGroupMappingID))
            {
                AddChild(tree, childMapping, mappings);
            }
        }
        private int getProductGroupMappingID(Database db, int connectorID)
        {
            string getProductGroupQuery = "select top 1 * from ProductGroup";

            ProductGroup productGroup = db.Query <ProductGroup>(getProductGroupQuery).FirstOrDefault();

            if (productGroup == null)
            {
                var createProductGroupQuery = @"insert into ProductGroup
                                          values(0, 0, NULL)";

                db.Execute(createProductGroupQuery);

                productGroup = db.Query <ProductGroup>(getProductGroupQuery).FirstOrDefault();
            }

            string getMasterGroupmappingQuery = @"select top 1 * from MasterGroupMapping";

            MasterGroupMapping masterGroupMapping = db.Query <MasterGroupMapping>(getMasterGroupmappingQuery).FirstOrDefault();

            if (masterGroupMapping == null)
            {
                log.AuditError("Cannot create an assortment without a master group mapping", ProcessType);

                throw new Exception();
            }


            string getProductGroupMappingQuery = "select top 1 * from ProductGroupMapping";

            ProductGroupMapping productGroupMapping = db.Query <ProductGroupMapping>(getProductGroupMappingQuery).FirstOrDefault();

            if (productGroupMapping == null)
            {
                var createProductGroupQuery = string.Format(@"insert into ProductGroupMapping( ConnectorID, ProductGroupID, FlattenHierarchy, FilterByParentGroup, MasterGroupMappingID)
                                                      values({0}, {1}, 1, 1, {2} )", connectorID, productGroup.ProductGroupID, masterGroupMapping.MasterGroupMappingID);

                db.Execute(createProductGroupQuery);

                productGroupMapping = db.Query <ProductGroupMapping>(getProductGroupMappingQuery).FirstOrDefault();
            }


            return(productGroupMapping.ProductGroupMappingID);
        }
Ejemplo n.º 10
0
        public void DeleteHierarchy(MasterGroupMapping masterGroupMapping)
        {
            // Delete ContentProductGroup
            petaPoco.Execute(string.Format(@";
        WITH MasterGroupMappingChilds
        AS (
	        SELECT m.MasterGroupMappingID
	        FROM MasterGroupMapping m
	        WHERE m.ParentMasterGroupMappingID = {0}
	
	        UNION ALL
	
	        SELECT m.MasterGroupMappingID
	        FROM MasterGroupMapping m
	        INNER JOIN MasterGroupMappingChilds mc ON m.ParentMasterGroupMappingID = mc.MasterGroupMappingID
	        )
        DELETE cpg
        FROM MasterGroupMappingChilds mc
        INNER JOIN ContentProductGroup cpg ON mc.MasterGroupMappingID = cpg.MasterGroupMappingID      
      ", masterGroupMapping.MasterGroupMappingID));

            // Delete Child MasterGroupMappings
            petaPoco.Execute(string.Format(@";
        WITH MasterGroupMappingChilds
        AS (
	        SELECT m.MasterGroupMappingID
	        FROM MasterGroupMapping m
	        WHERE m.ParentMasterGroupMappingID = {0}
	
	        UNION ALL
	
	        SELECT m.MasterGroupMappingID
	        FROM MasterGroupMapping m
	        INNER JOIN MasterGroupMappingChilds mc ON m.ParentMasterGroupMappingID = mc.MasterGroupMappingID
	        )
        DELETE m
        FROM MasterGroupMapping m
        INNER JOIN MasterGroupMappingChilds mc ON m.MasterGroupMappingID = mc.MasterGroupMappingID
      ", masterGroupMapping.MasterGroupMappingID));

            //Delete MasterGroupMapping
            DeleteMasterGroupMapping(masterGroupMapping);
        }
 public bool IsProductGroupValide(MasterGroupMapping productGroup)
 {
     if (productGroup.ParentMasterGroupMappingID.HasValue && productGroup.ParentMasterGroupMappingID.Value > 0)
     {
         List <Product> productInProductGroup = productRepo.GetListOfMappedProductsByMasterGroupMapping(productGroup.MasterGroupMappingID);
         if (productInProductGroup.Count > 0)
         {
             if (masterGroupMappingRepo.IsMasterGroupMappingExists(productGroup.ParentMasterGroupMappingID.Value))
             {
                 //List<Product> productInParentProductGroup = productRepo.GetListOfMappedProductsByMasterGroupMapping(productGroup.ParentMasterGroupMappingID.Value);
                 //if (productInParentProductGroup.Count > 0)
                 //{
                 //  return true;
                 //}
                 return(true);
             }
         }
     }
     return(false);
 }
Ejemplo n.º 12
0
        public int InsertMasterGroupMapping(MasterGroupMapping newMasterGroupMapping)
        {
            PetaPocoMasterGroupMappingModel newPetaPocoMasterGroupMapping = new PetaPocoMasterGroupMappingModel();

            newPetaPocoMasterGroupMapping.ProductGroupID = newMasterGroupMapping.ProductGroupID;
            if (newMasterGroupMapping.ParentMasterGroupMappingID.HasValue && newMasterGroupMapping.ParentMasterGroupMappingID.Value > 0)
            {
                newPetaPocoMasterGroupMapping.ParentMasterGroupMappingID = newMasterGroupMapping.ParentMasterGroupMappingID;
            }

            if (newMasterGroupMapping.ConnectorID.HasValue && newMasterGroupMapping.ConnectorID.Value > 0)
            {
                newPetaPocoMasterGroupMapping.ConnectorID = newMasterGroupMapping.ConnectorID;
            }

            if (newMasterGroupMapping.SourceMasterGroupMappingID.HasValue && newMasterGroupMapping.SourceMasterGroupMappingID.Value > 0)
            {
                newPetaPocoMasterGroupMapping.SourceMasterGroupMappingID = newMasterGroupMapping.SourceMasterGroupMappingID;
            }

            if (newMasterGroupMapping.SourceProductGroupMappingID.HasValue && newMasterGroupMapping.SourceProductGroupMappingID.Value > 0)
            {
                newPetaPocoMasterGroupMapping.SourceProductGroupMappingID = newMasterGroupMapping.SourceProductGroupMappingID;
            }

            if (newMasterGroupMapping.ExportID.HasValue && newMasterGroupMapping.ExportID.Value > 0)
            {
                newPetaPocoMasterGroupMapping.ExportID = newMasterGroupMapping.ExportID;
            }

            newPetaPocoMasterGroupMapping.Score               = (newMasterGroupMapping.Score.HasValue && newMasterGroupMapping.Score.Value > 0) ? newMasterGroupMapping.Score : 0;
            newPetaPocoMasterGroupMapping.FlattenHierarchy    = newMasterGroupMapping.FlattenHierarchy;
            newPetaPocoMasterGroupMapping.FilterByParentGroup = newMasterGroupMapping.FilterByParentGroup;

            var masterGroupMappingID = petaPoco.Insert("MasterGroupMapping", "MasterGroupMappingID", true, newPetaPocoMasterGroupMapping);

            return(int.Parse(masterGroupMappingID.ToString()));
        }
Ejemplo n.º 13
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);
                }
            }
        }
Ejemplo n.º 14
0
        public void UpdateMasterGroupMapping(MasterGroupMapping masterGroupMapping)
        {
            MasterGroupMapping currentMasterGroupMapping = GetMasterGroupMappingByMasterGroupMappingID(masterGroupMapping.MasterGroupMappingID);

            StringBuilder changes = new StringBuilder();

            List <string> listOfChanges = generateUpdateFields.GetPropertiesForUpdate(masterGroupMapping, currentMasterGroupMapping);

            if (masterGroupMapping.ParentMasterGroupMappingID.HasValue && masterGroupMapping.ParentMasterGroupMappingID.Value > 0)
            {
                if (masterGroupMapping.ParentMasterGroupMappingID != currentMasterGroupMapping.ParentMasterGroupMappingID)
                {
                    changes.Append(string.Format("ParentMasterGroupMappingID = {0}", masterGroupMapping.ParentMasterGroupMappingID));
                }
            }

            if (masterGroupMapping.ConnectorID.HasValue && masterGroupMapping.ConnectorID.Value > 0)
            {
                if (masterGroupMapping.ConnectorID != currentMasterGroupMapping.ConnectorID)
                {
                    if (!string.IsNullOrEmpty(changes.ToString()))
                    {
                        changes.Append(",");
                    }
                    changes.Append(string.Format("ConnectorID = {0}", masterGroupMapping.ConnectorID));
                }
            }

            if (masterGroupMapping.ProductGroupID != currentMasterGroupMapping.ProductGroupID)
            {
                if (!string.IsNullOrEmpty(changes.ToString()))
                {
                    changes.Append(",");
                }
                changes.Append(string.Format("ProductGroupID = {0}", masterGroupMapping.ProductGroupID));
            }

            if (masterGroupMapping.SourceMasterGroupMappingID.HasValue && masterGroupMapping.SourceMasterGroupMappingID.Value > 0)
            {
                if (masterGroupMapping.SourceMasterGroupMappingID != currentMasterGroupMapping.SourceMasterGroupMappingID)
                {
                    if (!string.IsNullOrEmpty(changes.ToString()))
                    {
                        changes.Append(",");
                    }
                    changes.Append(string.Format("SourceMasterGroupMappingID = {0}", masterGroupMapping.SourceMasterGroupMappingID));
                }
            }

            if (masterGroupMapping.Score.HasValue)
            {
                if (masterGroupMapping.Score != currentMasterGroupMapping.Score)
                {
                    if (!string.IsNullOrEmpty(changes.ToString()))
                    {
                        changes.Append(",");
                    }
                    changes.Append(string.Format("Score = {0}", masterGroupMapping.Score));
                }
            }

            if (masterGroupMapping.FlattenHierarchy != currentMasterGroupMapping.FlattenHierarchy)
            {
                if (!string.IsNullOrEmpty(changes.ToString()))
                {
                    changes.Append(",");
                }
                changes.Append(string.Format("FlattenHierarchy = {0}", (masterGroupMapping.FlattenHierarchy ? 1 : 0)));
            }

            if (masterGroupMapping.FilterByParentGroup != currentMasterGroupMapping.FilterByParentGroup)
            {
                if (!string.IsNullOrEmpty(changes.ToString()))
                {
                    changes.Append(",");
                }
                changes.Append(string.Format("FilterByParentGroup = {0}", (masterGroupMapping.FilterByParentGroup ? 1 : 0)));
            }

            if (!string.IsNullOrEmpty(changes.ToString()))
            {
                petaPoco.Update <MasterGroupMapping>(string.Format(@"
          SET {1}
          WHERE MasterGroupMappingID = {0}
        ", masterGroupMapping.MasterGroupMappingID, changes));
            }
        }
Ejemplo n.º 15
0
        private void syncProductGroupMapping(List <MasterGroupMapping> listOfSourceProductGroupMappings, int?sourceParentProductGroupMappingID, int?destParentProductGroupMappingID, Connector destConnector)
        {
            List <MasterGroupMapping> listOfSourceProductGroupMappingsByParentID = new List <MasterGroupMapping>();
            List <MasterGroupMapping> listOfDestProductGroupMappingsByParentID   = new List <MasterGroupMapping>();

            if (sourceParentProductGroupMappingID.HasValue && sourceParentProductGroupMappingID.Value > 0)
            {
                listOfSourceProductGroupMappingsByParentID = listOfSourceProductGroupMappings
                                                             .Where(x => x.ParentMasterGroupMappingID == sourceParentProductGroupMappingID.Value)
                                                             .ToList();
                listOfDestProductGroupMappingsByParentID = masterGroupMappingRepo
                                                           .GetListOfProductGroupsByConnector(destConnector.ConnectorID)
                                                           .Where(x => x.SourceProductGroupMappingID != null && x.ParentMasterGroupMappingID == destParentProductGroupMappingID)
                                                           .ToList();
            }
            else
            {
                listOfSourceProductGroupMappingsByParentID = listOfSourceProductGroupMappings
                                                             .Where(x => x.ParentMasterGroupMappingID == null)
                                                             .ToList();
                listOfDestProductGroupMappingsByParentID = masterGroupMappingRepo
                                                           .GetListOfProductGroupsByConnector(destConnector.ConnectorID)
                                                           .Where(x => x.ParentMasterGroupMappingID == null && x.SourceProductGroupMappingID != null)
                                                           .ToList();
            }

            List <MasterGroupMapping> listOfProductGroupMappingsToInsert =
                (
                    from parentPGM in listOfSourceProductGroupMappingsByParentID
                    join childPGM in listOfDestProductGroupMappingsByParentID on parentPGM.MasterGroupMappingID equals childPGM.SourceProductGroupMappingID into mappedPGM
                    from pgm in mappedPGM.DefaultIfEmpty()
                    where pgm == null
                    select parentPGM
                ).ToList();

            List <MasterGroupMapping> listOfProductGroupMappingsToUpdate =
                (
                    from parentPGM in listOfSourceProductGroupMappingsByParentID
                    join childPGM in listOfDestProductGroupMappingsByParentID on parentPGM.MasterGroupMappingID equals childPGM.SourceProductGroupMappingID
                    where
                    parentPGM.Score != childPGM.Score ||
                    parentPGM.FlattenHierarchy != childPGM.FlattenHierarchy ||
                    parentPGM.FilterByParentGroup != childPGM.FilterByParentGroup ||
                    parentPGM.ExportID != childPGM.ExportID
                    select childPGM
                ).ToList();

            List <MasterGroupMapping> listOfProductGroupMappingsToDelete =
                (
                    from childPGM in listOfDestProductGroupMappingsByParentID
                    join parentPGM in listOfSourceProductGroupMappingsByParentID on childPGM.SourceProductGroupMappingID equals parentPGM.MasterGroupMappingID into mappedPGM
                    from pgm in mappedPGM.DefaultIfEmpty()
                    where pgm == null
                    select childPGM
                ).ToList();

            if (listOfProductGroupMappingsToInsert.Count > 0)
            {
                InsertProductGroupMappingToDestConnector(listOfProductGroupMappingsToInsert, destConnector, (destParentProductGroupMappingID.HasValue && destParentProductGroupMappingID.Value > 0) ? destParentProductGroupMappingID : null);
            }

            if (listOfProductGroupMappingsToUpdate.Count > 0)
            {
                UpdateProductGroupMappingInDestConnector(listOfProductGroupMappingsToUpdate, listOfSourceProductGroupMappingsByParentID);
            }

            if (listOfProductGroupMappingsToDelete.Count > 0)
            {
                DeleteProductGroupMappingFromDestConnector(listOfProductGroupMappingsToDelete);
            }

            if (listOfProductGroupMappingsToInsert.Count + listOfProductGroupMappingsToDelete.Count > 0)
            {
                if (sourceParentProductGroupMappingID.HasValue && sourceParentProductGroupMappingID.Value > 0)
                {
                    listOfDestProductGroupMappingsByParentID = masterGroupMappingRepo
                                                               .GetListOfProductGroupsByConnector(destConnector.ConnectorID)
                                                               .Where(x => x.SourceProductGroupMappingID != null && x.ParentMasterGroupMappingID == destParentProductGroupMappingID)
                                                               .ToList();
                }
                else
                {
                    listOfDestProductGroupMappingsByParentID = masterGroupMappingRepo
                                                               .GetListOfProductGroupsByConnector(destConnector.ConnectorID)
                                                               .Where(x => x.ParentMasterGroupMappingID == null && x.SourceProductGroupMappingID != null)
                                                               .ToList();
                }
            }
            listOfSourceProductGroupMappingsByParentID.ForEach(productGroupMapping => {
                if (!productGroupMapping.ParentMasterGroupMappingID.HasValue)
                {
                    string productGroupMappingName = masterGroupMappingRepo.GetListOfMasterGroupMappingLanguagesByMasterGroupMappingID(productGroupMapping.MasterGroupMappingID).Where(x => x.LanguageID == 2).Select(x => x.Name).FirstOrDefault();
                    log.DebugFormat("Sync Product Group Mapping {0}({1})", productGroupMappingName, productGroupMapping.MasterGroupMappingID);
                }

                int countProductGroupMappingChildren = listOfSourceProductGroupMappings
                                                       .Where(x => x.ParentMasterGroupMappingID == productGroupMapping.MasterGroupMappingID)
                                                       .Count();

                if (countProductGroupMappingChildren > 0)
                {
                    MasterGroupMapping childProductGroupMapping = listOfDestProductGroupMappingsByParentID.Single(x => x.SourceProductGroupMappingID == productGroupMapping.MasterGroupMappingID);
                    if (childProductGroupMapping != null)
                    {
                        syncProductGroupMapping(listOfSourceProductGroupMappings, productGroupMapping.MasterGroupMappingID, childProductGroupMapping.MasterGroupMappingID, destConnector);
                    }
                    else
                    {
                        log.DebugFormat("ProductGroupMapping with SourceProductGroupMappingID {0} in Connector {1} should exist! But i cant find it.", productGroupMapping.MasterGroupMappingID, destConnector);
                    }
                }
            });
        }
Ejemplo n.º 16
0
 public void DeleteMasterGroupMapping(MasterGroupMapping masterGroupMapping)
 {
     //DeleteMasterGroupMappingLanguage(masterGroupMapping);
     petaPoco.Delete("ContentProductGroup", "MasterGroupMappingID", masterGroupMapping.MasterGroupMappingID);
     petaPoco.Delete("MasterGroupMapping", "MasterGroupMappingID", masterGroupMapping);
 }
Ejemplo n.º 17
0
        private List <MasterGroupMappingProduct> GetListOfMappedProductsBySourceMasterGroupMapping(MasterGroupMapping productGroup, List <VendorProductInfo> productsPerConnector)
        {
            List <MasterGroupMappingProduct> mappedProducts = new List <MasterGroupMappingProduct>();

            if (productGroup.SourceMasterGroupMappingID.HasValue && productGroup.SourceMasterGroupMappingID.Value > 0)
            {
                if (masterGroupMappingRepo.IsMasterGroupMappingExists(productGroup.SourceMasterGroupMappingID.Value))
                {
                    var currentProductsInMasterGroupMapping = masterGroupMappingRepo.GetListOfMappedProductsByMasterGroupMapping(productGroup.SourceMasterGroupMappingID.Value);

                    var mappedProductsInMasterGroupMapping =
                        (from p in productsPerConnector
                         join mp in currentProductsInMasterGroupMapping on p.ProductID equals mp.ProductID
                         select mp)
                        .ToList();

                    if (mappedProductsInMasterGroupMapping.Count > 0)
                    {
                        mappedProductsInMasterGroupMapping.ForEach(mappedProduct =>
                        {
                            MasterGroupMappingProduct toSyncMasterGroupMappingProduct = new MasterGroupMappingProduct()
                            {
                                MasterGroupMappingID       = productGroup.MasterGroupMappingID,
                                ProductID                  = mappedProduct.ProductID,
                                IsApproved                 = mappedProduct.IsApproved,
                                IsProductMapped            = true,
                                ConnectorPublicationRuleID = productsPerConnector.Where(x => x.ProductID == mappedProduct.ProductID).Select(x => x).FirstOrDefault().ConnectorPublicationRuleID
                            };
                            mappedProducts.Add(toSyncMasterGroupMappingProduct);
                        });
                    }
                }
            }
            return(mappedProducts);
        }
Ejemplo n.º 18
0
 public void DeleteMasterGroupMappingLanguage(MasterGroupMapping masterGroupMapping)
 {
     petaPoco.Delete("MasterGroupMappingLanguage", "MasterGroupMappingID", masterGroupMapping);
 }