public async Task <TaskGroupList> GetTaskGroupListAsync(string accessToken)
        {
            var userTeams = await GetUserTeamsAsync(accessToken);

            TaskGroupList taskGroupList = new TaskGroupList();

            foreach (var currentTaskGroupHeader in _unitOfWork.TaskGroupHeaders.GetAll(true))
            {
                if (currentTaskGroupHeader.ParentTaskGroupId != null)
                {
                    var parentTaskGroup = _unitOfWork.TaskGroupHeaders.Get(currentTaskGroupHeader.ParentTaskGroupId ?? Guid.Empty);

                    if (parentTaskGroup != null)
                    {
                        if (userTeams.Contains(parentTaskGroup.TeamHeaderId))
                        {
                            taskGroupList.TaskGroupHeaders.Add(_mapper.Map <TaskGroupHead>(currentTaskGroupHeader));
                        }
                    }
                }
                else
                {
                    if (userTeams.Contains(currentTaskGroupHeader.TeamHeaderId))
                    {
                        taskGroupList.TaskGroupHeaders.Add(_mapper.Map <TaskGroupHead>(currentTaskGroupHeader));
                    }
                }
            }

            return(taskGroupList);
        }
        public async Task <IActionResult> OnGetAsync()
        {
            var accessToken = await HttpContext.GetTokenAsync("access_token");

            await PageConstructor(SaveStates.IGNORE, accessToken);

            if (!await _apiHelper.AuthCheck(accessToken, User.FindFirst("sub").Value))
            {
                return(RedirectToPage("/Logout"));
            }

            var response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Get, APITypes.TASK, $"TaskGroup/GetMainTaskGroups");

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                taskGroupList = response.ContentAsType <TaskGroupList>();
            }
            else
            {
                taskGroupList = new TaskGroupList();
            }

            SaveMessageModel = await _apiHelper.GenerateSaveMessageModel(accessToken);

            return(Page());
        }
        //public List<Guid> GetChildTaskGroupIds(Guid taskGroupHeaderId)
        //{
        //    List<Guid> childTaskGroupHeaders = new List<Guid>();

        //    var taskGroupTree = _unitOfWork.TaskGroupHeaders.GetTaskGroupTree(taskGroupHeaderId);

        //    if (taskGroupTree.Any())
        //    {
        //        var queue = new Queue<TaskGroupHeader>();
        //        queue.Enqueue(taskGroupTree[0]);

        //        while (queue.Count > 0)
        //        {
        //            var node = queue.Dequeue();

        //            foreach (var childTaskGroupHeader in node.ChildTaskGroups)
        //            {
        //                if (!childTaskGroupHeaders.Contains(childTaskGroupHeader.Id))
        //                    childTaskGroupHeaders.Add(childTaskGroupHeader.Id);

        //                queue.Enqueue(childTaskGroupHeader);
        //            }
        //        }
        //    }

        //    return childTaskGroupHeaders;
        //}

        public async Task <TaskGroupList> GetMainTaskGroupsAsync(string accessToken)
        {
            TaskGroupList taskGroupList = new TaskGroupList();

            foreach (var currentTaskGroupHeader in await _unitOfWork.TaskGroupHeaders.GetMainTaskGroupsAsync(false, accessToken))
            {
                taskGroupList.TaskGroupHeaders.Add(_mapper.Map <TaskGroupHead>(currentTaskGroupHeader));
            }

            return(taskGroupList);
        }