Example #1
0
        public void ReportInteractionsForExistingContact(Contact existingContact, XConnect.Client.XConnectClient client)
        {
            IReadOnlyCollection <IInteractionReference> interactions = existingContact.Interactions;

            var i = 0;

            Console.WriteLine("Interaction count: " + interactions.Count);
            Console.WriteLine("");

            // Cycle through all interactions
            foreach (Interaction interaction in interactions)
            {
                i++;
                var ipinfo = interaction.GetFacet <IpInfo>(IpInfo.DefaultFacetKey);
                Console.WriteLine("Interaction #" + i);

                if (ipinfo != null)
                {
                    // For each interaction, print out the business name
                    // associated with that interactions' IpInfo
                    Console.WriteLine("\tInteraction business name: " + ipinfo.BusinessName);
                    Console.WriteLine("\tInteraction Id: " + interaction.Id);

                    if (existingContact.Id != null && interaction.Id != null)
                    {
                        InteractionReference interactionReference = new InteractionReference((Guid)existingContact.Id, (Guid)interaction.Id);

                        var contactOptions = new RelatedContactExpandOptions(new string[]
                        {
                            PersonalInformation.DefaultFacetKey
                        });

                        var facets = new string[] {
                            IpInfo.DefaultFacetKey
                        };

                        var expandOptions = new InteractionExpandOptions(facets)

                        {
                            Contact = contactOptions
                        };

                        var interactionB = client.Get <Interaction>(interactionReference, expandOptions);
                        if (interactionB != null)
                        {
                            Console.WriteLine("");
                            Console.WriteLine("All Interaction Properties");
                            foreach (var prop in interactionB.GetType().GetProperties())
                            {
                                Console.WriteLine($"\t{prop.Name} : {prop.GetValue(interactionB, null)}");
                            }
                        }
                    }
                }
            }

            ReportingHelpers.EnterToProceed();
        }
Example #2
0
        internal async Task ExecuteAsync(XConnect.Client.XConnectClient client)
        {
            try
            {
                var reportingHelper = new ReportingHelpers();

                var result0 = client.Contacts.ToEnumerable().Count();

                Console.WriteLine($"Total contacts: " + result0.ToString());

                // Use InteractionsCache instead of client.Contacts.Where(x => x.Interactions.Any()) as not all search providers support joins

                var results = await client.Contacts.Where(c => c.InteractionsCache().InteractionCaches.Any()).GetBatchEnumerator();

                Console.WriteLine("Contacts with Interactions: " + results.TotalCount);

                var results2 = await client.Contacts.Where(c => c.LastModified > DateTime.UtcNow.AddHours(-10)).GetBatchEnumerator();

                Console.WriteLine("Updated 10hrs ago: " + results2.TotalCount);

                var results3 = await client.Contacts.Where(c => c.GetFacet <PersonalInformation>().JobTitle == Const.XConnect.JobTitles.ProgrammerWriter).GetBatchEnumerator();

                Console.WriteLine(Const.XConnect.JobTitles.ProgrammerWriter + " : " + results3.TotalCount);

                var targetFacets  = new string[] { IpInfo.DefaultFacetKey };
                var targetContact = new RelatedContactExpandOptions(PersonalInformation.DefaultFacetKey);
                var expandOptions = new InteractionExpandOptions(targetFacets)
                {
                    Contact = targetContact
                };

                var results4 = await client.Interactions
                               .Where(i => i.EndDateTime > DateTime.UtcNow.AddHours(-10))
                               .WithExpandOptions(expandOptions)
                               .GetBatchEnumerator();

                Console.WriteLine("Interactions < 10hrs old: " + results4.TotalCount);

                ReportingHelpers.EnterToProceed();

                var interactionNumber = 0;

                while (await results4.MoveNext())
                {
                    // Loop through interactions in current batch
                    foreach (var interaction in results4.Current)
                    {
                        interactionNumber++;

                        Console.WriteLine("Interaction #" + interactionNumber);

                        var ipInfoFacet = interaction.GetFacet <IpInfo>(IpInfo.DefaultFacetKey);

                        reportingHelper.ReportIpInfoFacet(ipInfoFacet);


                        var contact = interaction.Contact;
                        if (contact != null)
                        {
                            var realContact = contact as Contact;

                            reportingHelper.ReportRealContact(realContact);
                        }

                        Console.WriteLine();
                    }
                    ReportingHelpers.EnterToProceed();
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }