/// <summary>
        /// Validate user distribution list, based on user choices
        /// </summary>
        /// <param name="userIdentifier"></param>
        /// <param name="oldUserSchedules"></param>
        /// <param name="showRemember"></param>
        /// <param name="timeMinutesToAlert"></param>
        /// <returns></returns>
        public async Task ManageUserDistributionListAsync(string userIdentifier, List <UserSchedule> oldUserSchedules, bool showRemember, int timeMinutesToAlert)
        {
            string distributionListName = string.Empty;

            foreach (var item in oldUserSchedules)
            {
                if (!showRemember)
                {
                    //remove user from all distribution List
                    distributionListName = GetDistributionListName(item.Show, item.TimeMinutesToAlert);
                    await _broadcastExtension.DeleteRecipientAsync(distributionListName, Identity.Parse(userIdentifier));
                }
                else
                {
                    //remove from old distribution list
                    distributionListName = GetDistributionListName(item.Show, item.TimeMinutesToAlert);
                    await _broadcastExtension.DeleteRecipientAsync(distributionListName, Identity.Parse(userIdentifier));

                    //create and insert on the new list
                    distributionListName = GetDistributionListName(item.Show, timeMinutesToAlert);
                    await _broadcastExtension.CreateDistributionListAsync(distributionListName);

                    await _broadcastExtension.AddRecipientAsync(distributionListName, Identity.Parse(userIdentifier));
                }
            }
        }
示例#2
0
        private async Task RemoveAlertFlow(Message message, UserContext userContext, string text, CancellationToken cancellationToken)
        {
            var teamTag  = text.Split('_')[1];
            var teamName = GetTeamNameFromTeamTag(teamTag);

            try
            {
                await _broadcastExtension.DeleteRecipientAsync($"Alert_{teamTag}", message.From.ToIdentity(), cancellationToken);

                userContext.AlertTeams.Remove(teamTag);
                await _contextManager.SetUserContextAsync(message.From, userContext, cancellationToken);

                await _sender.SendMessageAsync($"Done! You won't be notified before {teamName}’s games anymore!", message.From, cancellationToken);
            }
            catch (Exception ex)
            {
                await _sender.SendMessageAsync("You are not on that list...", message.From, cancellationToken);
            }
            finally
            {
                var mainMenu = _carouselBuilder.GetMainMenuCarousel();
                mainMenu.To = message.From;

                await _sender.SendDelayedComposingAsync(message.From, 2000, cancellationToken);

                await _sender.SendMessageAsync(mainMenu, cancellationToken);
            }
        }
示例#3
0
 private async Task RemoveFromListAsync(IContext context, string listName, CancellationToken cancellationToken)
 {
     try
     {
         await _broadcastExtension.DeleteRecipientAsync(listName, context.User, cancellationToken);
     }
     catch (LimeException ex) when(ex.Reason.Code == ReasonCodes.APPLICATION_ERROR || ex.Reason.Code == ReasonCodes.COMMAND_INVALID_ARGUMENT)
     {
         // Ignores if the list doesn't exists or the recipient is not member of the list
     }
 }