Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        /// <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));
            }
        }
Esempio n. 4
0
 /// <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);
        }