Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Sitecore.Feature.EmailConfiguration.Facets{
- [Serializable]
- [FacetKey(DefaultFacetKey)]
- public class EmailUser:Sitecore.XConnect.Facet
- {
- public const string DefaultFacetKey = "EmailUser";
- public string Username { get; set; }
- public string Password { get; set; }
- public EmailUser()
- {
- }
- }
- }
- namespace Sitecore.Feature.EmailConfiguration.Models
- {
- public class EmailUserModel
- {
- public static XdbModel Model { get; } = EmailUserModel.BuildModel();
- public static XdbModel BuildModel()
- {
- XdbModelBuilder modelBuilder = new XdbModelBuilder("EmailUserModel", new XdbModelVersion(0, 1));
- modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);
- modelBuilder.DefineFacet<Contact, EmailUser>(EmailUser.DefaultFacetKey);
- return modelBuilder.BuildModel();
- }
- }
- }
- namespace Sitecore.Feature.EmailConfiguration.Mappers
- {
- public class EmailUserFacetMapper : IFacetMapper
- {
- private readonly PreferredEmailFacetMapper mapper;
- public EmailUserFacetMapper(): this(CollectionModel.FacetKeys.AddressList)
- {
- }
- public EmailUserFacetMapper(string facetName)
- {
- Assert.ArgumentNotNull(facetName, nameof(facetName));
- this.FacetName = facetName;
- }
- public string FacetName { get; }
- public MappingResult Map(string facetKey, Facet facet, ContactMappingInfo mappings, string[] data)
- {
- using (EventLog eventLog = new EventLog("Application"))
- {
- eventLog.Source = "Application";
- eventLog.WriteEntry("EmailUserFacetMapperCalled facetKey:" +facetKey+" data"+ string.Join("; ", data));
- }
- if (facetKey != this.FacetName)
- {
- return new NoMatch(facetKey);
- }
- var emailUser = new EmailUser();
- var username = mappings.GetValue("EmailUser_Username", data);
- var password = mappings.GetValue("EmailUser_Password",data);
- if (!string.IsNullOrEmpty(username)) { emailUser.Username = username; }
- if (!string.IsNullOrEmpty(password)) { emailUser.Password = password; }
- return (MappingResult)new FacetMapped(facetKey, (Facet) emailUser);
- }
- }
- }
- namespace Sitecore.Feature.EmailConfiguration.TokenMaps
- {
- public class EmailUserPropertyTokenMap : DefaultRecipientPropertyTokenMap
- {
- protected static readonly MethodInfo GetUsernameValue = typeof(FacetExtensions).GetMethod(nameof(FacetExtensions.GetUsernameValue), new[] { typeof(EmailUser) });
- protected static readonly MethodInfo GetPasswordValue = typeof(FacetExtensions).GetMethod(nameof(FacetExtensions.GetPasswordValue), new[] { typeof(EmailUser) });
- static EmailUserPropertyTokenMap()
- {
- if (TokenBindings == null)
- {
- TokenBindings = new Dictionary<Token, RecipientPropertyTokenBinding>();
- }
- RecipientPropertyTokenBinding usernameTokenBinding = RecipientPropertyTokenBinding.Build<EmailUser>(new Token("username"), null, GetUsernameValue);
- RecipientPropertyTokenBinding passwordTokenBinding = RecipientPropertyTokenBinding.Build<EmailUser>(new Token("password"), null, GetPasswordValue);
- TokenBindings.Add(usernameTokenBinding.Token, usernameTokenBinding);
- TokenBindings.Add(passwordTokenBinding.Token, passwordTokenBinding);
- }
- }
- public static class FacetExtensions
- {
- public static string GetUsernameValue(this EmailUser facet)
- {
- return facet.Username;
- }
- public static string GetPasswordValue(this EmailUser facet)
- {
- return facet.Password;
- }
- }
- }
- <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set">
- <sitecore>
- <exm>
- <dispatchTask type="Sitecore.Feature.EmailConfiguration.DispatchTasks.EmailUserDispatchTask, Sitecore.Feature.EmailConfiguration" patch:instead="*[@type='Sitecore.EmailCampaign.Cm.Dispatch.DispatchTask, Sitecore.EmailCampaign.Cm']">
- <param ref="exm/dispatchFailedTaskPool"/>
- <param desc="recipientValidator" ref="exm/recipientValidator" />
- <param desc="contactService" ref="exm/contactService" />
- <param desc="dataProvider" ref="exm/dataProvider" />
- <param desc="itemUtil" ref="exm/itemUtil" />
- <param desc="eventDataService" ref="exm/eventDataService" />
- <param desc="dispatchManager" ref="exm/dispatchManager" />
- <param desc="emailAddressHistoryManager" ref="exm/emailAddressHistoryManager" />
- <param desc="recipientManagerFactory" ref="exm/recipientManagerFactory" />
- <param desc="sentHistoryManager" ref="exm/sentHistoryManager" />
- </dispatchTask>
- </exm>
- <recipients>
- <recipientPropertyTokenMap type="Sitecore.Feature.EmailConfiguration.TokenMaps.EmailUserPropertyTokenMap, Sitecore.Feature.EmailConfiguration" singleInstance="true" patch:instead="*[@type='Sitecore.Modules.EmailCampaign.Core.Personalization.DefaultRecipientPropertyTokenMap, Sitecore.EmailCampaign']" />
- </recipients>
- <import>
- <facetMappers hint="list:Add">
- <facetMapper type="Sitecore.Feature.EmailConfiguration.Mappers.EmailUserFacetMapper,Sitecore.Feature.EmailConfiguration" />
- </facetMappers>
- </import>
- <settings>
- <setting name="ListManagement.Import.FacetsToMap">
- <set:attribute name="value">Emails|Personal|Addresses|EmailUser</set:attribute>
- </setting>
- </settings>
- <xconnect>
- <runtime type="Sitecore.XConnect.Client.Configuration.RuntimeModelConfiguration,Sitecore.XConnect.Client.Configuration">
- <schemas hint="list:AddModelConfiguration">
- <schema name="EmailUserModel" type="Sitecore.XConnect.Client.Configuration.StaticModelConfiguration,Sitecore.XConnect.Client.Configuration">
- <param desc="modeltype">Sitecore.Feature.EmailConfiguration.Models.EmailUserModel,Sitecore.Feature.EmailConfiguration</param>
- </schema>
- </schemas>
- </runtime>
- </xconnect>
- </sitecore>
- </configuration>
Add Comment
Please, Sign In to add comment