/// <summary> /// This method updates the BadgeCount. /// In the first foreach, every items that should not be deleted, will be in the list "elementsNotToDelete". /// The second foreach, compares the elements in BadgeCount with the list "elementsNotToDelete" /// and filters the items that should be deleted in the "elementsToDelete". /// In the last foreach, the items in the BadgeCount, that exist in "elementsToDelete", will be deleted. /// </summary> /// <param name="workspace"></param> /// <param name="workspaceItems"></param> /// <param name="navigationCardsManager"></param> public void UpdateBadgeCount(NavigationCard workspace, List <IssueDto> workspaceItems, NavigationCardsManager navigationCardsManager) { List <int> badges = workspace.CardData.Badges; List <int> elementsNotToDelete = new List <int>(); List <int> elementsToDelete = new List <int>(); foreach (IssueDto item in workspaceItems) { int isInList = badges.IndexOf(item.Id); if (isInList != -1) { elementsNotToDelete.Add(item.Id); } } foreach (int badge in badges) { if (!elementsNotToDelete.Exists(element => element == badge)) { elementsToDelete.Add(badge); } } foreach (int badgetoDelete in elementsToDelete) { workspace.CardData.Badges.Remove(badgetoDelete); navigationCardsManager.Update(workspace); LogDebugMessage("Update Badge Count in Workspace: " + workspace.Id + " " + workspace.Title); } }
private List <UserDto> GetCardSubscribers(NavigationCard card, NavigationCardsManager cardManager, UserManager userManager, UserDto owner) { if (!owner.Entity.Active) { return(new List <UserDto>()); } Dictionary <int, UserDto> subscribers = new Dictionary <int, UserDto>(); subscribers.Add(owner.Entity.Id, owner); foreach (var user in card.CardData.Subscription.Users) { var userDto = userManager.Get(user); if (user != owner.Entity.Id && userDto != null && userDto.Entity.Active) { subscribers.Add(user, userDto); } } var groupUsers = cardManager.GetUsersFromGroups(card, card.CardData.Subscription.Groups); foreach (var user in groupUsers) { if (!subscribers.ContainsKey(user.Entity.Id)) { subscribers.Add(user.Entity.Id, user); } } return(new List <UserDto>(subscribers.Values)); }
/// <summary> /// This method updates the BadgeCount. /// In the first foreach, every items that should not be deleted, will be in the list "elementsNotToDelete". /// The second foreach, compares the elements in BadgeCount with the list "elementsNotToDelete" /// and filters the items that should be deleted in the "elementsToDelete". /// In the last foreach, the items in the BadgeCount, that exist in "elementsToDelete", will be deleted. /// </summary> /// <param name="workspace"></param> /// <param name="workspaceItems"></param> /// <param name="navigationCardsManager"></param> /// <param name="reset"></param> public void UpdateBadgeCount(NavigationCard workspace, List <IssueDto> workspaceItems, NavigationCardsManager navigationCardsManager, bool reset) { try { bool change = false; workspace = navigationCardsManager.Get(workspace.Id); if (reset) { change = true; workspace.CardData.Badges.RemoveAll(item => item > 0); LogDebugMessage("Reset Badge Count in Workspace: " + workspace.Id + " " + workspace.Title); } else { foreach (int badge in workspace.CardData.Badges.ToList()) { if (!workspaceItems.Exists(item => item.Entity.Id == badge)) { change = true; workspace.CardData.Badges.RemoveAll(id => id == badge); LogDebugMessage(string.Concat("Update Badge Count in Workspace: ", workspace.Key, " (", workspace.Id, ") ", workspace.Title, " >> Issue: ", badge)); } } } if (change) { //it's possible workspace change at time of runing timerapp get new data and don't overwrite user changes. List <int> newBadges = workspace.CardData.Badges; workspace.Filter = ChangeSystemFilterTypesMe(workspace.Filter, (int)workspace.UserId, true); workspace = navigationCardsManager.Get(workspace.Id); workspace.CardData.Badges = newBadges; navigationCardsManager.Update(workspace, true, false); } } catch (Exception exception) { GeminiApp.LogException(exception, false, string.Concat("Run Method UpdateBadgeCount: ", exception.Message)); } }
/// <summary> /// Resets the BadgeCount from Workspace if "Badges > 0" /// </summary> /// <param name="workspace">Workspace properties</param> /// <param name="navigationCardsManager"></param> public void ResetBadgeCount(NavigationCard workspace, NavigationCardsManager navigationCardsManager) { workspace.CardData.Badges.RemoveAll(item => item > 0); navigationCardsManager.Update(workspace); LogDebugMessage("Reset Badge Count in Workspace: " + workspace.Id + " " + workspace.Title); }
private List<UserDto> GetCardSubscribers(NavigationCard card, NavigationCardsManager cardManager, UserManager userManager, UserDto owner) { if (!owner.Entity.Active) return new List<UserDto>(); Dictionary<int, UserDto> subscribers = new Dictionary<int, UserDto>(); subscribers.Add(owner.Entity.Id, owner); foreach (var user in card.CardData.Subscription.Users) { var userDto = userManager.Get(user); if(user != owner.Entity.Id && userDto != null && userDto.Entity.Active) subscribers.Add(user, userDto); } var groupUsers = cardManager.GetUsersFromGroups(card, card.CardData.Subscription.Groups); foreach (var user in groupUsers) { if (!subscribers.ContainsKey(user.Entity.Id)) subscribers.Add(user.Entity.Id, user); } return new List<UserDto>(subscribers.Values); }