/// <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)); } } }
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); } }
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 } }