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); } } }
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; } } }