/// <summary>
 /// Add a tracking to AnalyticsAddress: [email protected]
 /// </summary>
 /// <param name="category"></param>
 /// <param name="action"></param>
 /// <param name="label"></param>
 /// <param name="message"></param>
 /// <param name="contact"></param>
 /// <param name="contactExternalId"></param>
 /// <param name="value"></param>
 /// <param name="extras"></param>
 /// <param name="fireAndForget"></param>
 /// <param name="cancellationToken"></param>
 public async Task AddAsync(string category, string action, string label = null,
                            Message message = null, Contact contact = null, string contactExternalId               = null,
                            decimal?value   = null, IDictionary <string, string> extras = null, bool fireAndForget = false,
                            CancellationToken cancellationToken = default(CancellationToken))
 {
     var eventTrackExtension = new EventTrackExtension(_sender);
     await eventTrackExtension.AddAsync(category, action, label, message, contact, contactExternalId, value, extras, fireAndForget, cancellationToken);
 }
        /// <summary>
        /// Get all actions for a tracking category
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="category"></param>
        /// <param name="take"></param>
        /// <param name="cancellationToken"></param>
        /// <returns><c>DocumentCollection</c></returns>
        public async Task <DocumentCollection> GetCategoryActionsCounterAsync(DateTimeOffset startDate, DateTimeOffset endDate, string category, int take = 20, CancellationToken cancellationToken = default(CancellationToken))
        {
            var eventTrackExtension = new EventTrackExtension(_sender);

            return(await eventTrackExtension.GetCategoryActionsCounterAsync(startDate, endDate, category, take, cancellationToken));
        }
 /// <summary>
 /// Add a tracking to AnalyticsAddress: [email protected]
 /// </summary>
 /// <param name="category">Category to aggregate the related events</param>
 /// <param name="action">The action associated to the event</param>
 /// <param name="extras">Extra information about the events</param>
 /// <param name="cancellationToken"></param>
 /// <param name="identity">The contact associated with this event</param>
 public async Task AddAsync(string category, string action, IDictionary <string, string> extras = null, CancellationToken cancellationToken = default(CancellationToken), Identity identity = null)
 {
     var eventTrackExtension = new EventTrackExtension(_sender);
     await eventTrackExtension.AddAsync(category, action, extras, cancellationToken, identity);
 }
        /// <summary>
        /// Get all trackings categories
        /// </summary>
        /// <param name="take"></param>
        /// <param name="cancellationToken"></param>
        /// <returns><c>DocumentCollection</c></returns>
        public async Task <DocumentCollection> GetCategoriesAsync(int take = 20, CancellationToken cancellationToken = default(CancellationToken))
        {
            var eventTrackExtension = new EventTrackExtension(_sender);

            return(await eventTrackExtension.GetCategoriesAsync(take, cancellationToken));
        }