public IEnumerable <PBIOfflineInteraction> GetAllInteractions() { using (XConnectClient client = GetClient()) { IAsyncQueryable <Sitecore.XConnect.Interaction> query = client.Interactions .WithExpandOptions(new InteractionExpandOptions(FaceApiFacet.DefaultFacetKey, WebVisit.DefaultFacetKey) { Contact = new RelatedContactExpandOptions(PersonalInformation.DefaultFacetKey) }); SearchResults <Interaction> results = Task.Run(async() => await query.ToSearchResults()).Result; List <Interaction> interactions = results.Results.Select(x => x.Item).ToList().Result; foreach (Interaction interaction in interactions) { var contact = interaction.Contact as Contact; var face = interaction.GetFacet <FaceApiFacet>(FaceApiFacet.DefaultFacetKey); var offlineInteraction = new PBIOfflineInteraction { Id = interaction.Id.ToString(), ContactId = contact?.Id.ToString(), StartTime = interaction.StartDateTime, EndTime = interaction.EndDateTime, EngagmentValue = interaction.EngagementValue, Channel = this.GetChannelName(interaction.ChannelId), Goals = interaction.Events.Select(e => e.Text).ToList() }; if (face != null) { offlineInteraction.HasFaceInfo = true; offlineInteraction.HappinessValue = face.HappinessValue; offlineInteraction.SmileValue = face.SmileValue; offlineInteraction.AngerValue = face.AngerValue; offlineInteraction.SurpriseValue = face.SurpriseValue; offlineInteraction.SadnessValue = face.SadnessValue; offlineInteraction.FearValue = face.FearValue; offlineInteraction.DisgustValue = face.DisgustValue; offlineInteraction.ContemptValue = face.ContemptValue; offlineInteraction.NeutralValue = face.NeutralValue; } yield return(offlineInteraction); } } }
public IEnumerable <ContactViewModel> GetContacts(string identificationSource) { using (XConnectClient client = GetClient()) { IAsyncQueryable <Sitecore.XConnect.Contact> query = client.Contacts .Where(c => c.Identifiers.Any(s => s.Source == identificationSource)); SearchResults <Contact> results; results = Task.Run(async() => await query.ToSearchResults()).Result; List <Contact> contacts = results.Results.Select(x => x.Item).ToList().Result; foreach (Contact contact in contacts) { yield return(GetContact(identificationSource, contact.Identifiers.First(i => i.Source == identificationSource).Identifier)); } } }