Exemple #1
0
        public override void Process(MergeContactArgs args)
        {
            Log.Info("KickFire: ==== MERGING =====", "KickFire");

            Assert.ArgumentNotNull((object)args, "args");
            foreach (var name in args.DyingContact.Facets.Keys)
            {
                var source      = args.DyingContact.Facets[name];
                var destination = (IFacet)null;
                try
                {
                    destination = args.SurvivingContact.GetFacet <IFacet>(name);
                }
                catch (FacetNotAvailableException ex)
                {
                }

                // Check if the name of the Facet is the name of our custom Facet
                if (name.Equals(Strings.Analytics.CompanyData,
                                StringComparison.InvariantCultureIgnoreCase) && destination != null && !source.IsEmpty)
                {
                    AnalyticsHelper.DeepCopyFacet(source, destination);
                }
                else if (destination != null && destination.IsEmpty && !source.IsEmpty)
                {
                    ModelUtilities.DeepCopyFacet(source, destination);
                }
            }
        }
Exemple #2
0
        public override void Process(MergeContactArgs args)
        {
            var dyingContactFacet     = args.DyingContact.GetFacet <ICustomDataFacet>(CustomDataFacet.FacetName);
            var survivingContactFacet = args.SurvivingContact.GetFacet <ICustomDataFacet>(CustomDataFacet.FacetName);

            if (dyingContactFacet.IsEmpty)
            {
                return; // No data to merge
            }

            survivingContactFacet.CrmId          = dyingContactFacet.CrmId;          // Take over the CRM ID
            survivingContactFacet.ActiveCustomer = dyingContactFacet.ActiveCustomer; // Take over active customer flag

            //Copy over products
            if (dyingContactFacet.ProductPurchases != null && dyingContactFacet.ProductPurchases.Any())
            {
                foreach (var productPurcahse in dyingContactFacet.ProductPurchases)
                {
                    var newPurchase = survivingContactFacet.ProductPurchases.Create();
                    newPurchase.PurchaseDate = productPurcahse.PurchaseDate;
                    newPurchase.ProductId    = productPurcahse.ProductId;
                }
            }
        }