private async Task <int> RenameTagInProjects(string currentTagId, string newTagId)
        {
            var projectsResult = await _projectBL.GetProjectsByTagId(currentTagId);

            if (projectsResult.Details.ResultStatus == ResultStatus.Failure)
            {
                return(0);
            }
            foreach (var project in projectsResult.Data)
            {
                project.TagIds.Remove(currentTagId);
                project.TagIds.Add(newTagId);
                var updatedProject = await _projectBL.UpdateProject(project);
            }

            return(projectsResult.Data.Count);
        }
        private async Task CalculateArticleCount(Tag tag)
        {
            var matchingProjects = await _projectBL.GetProjectsByTagId(tag.TagId);

            if (matchingProjects.Details.ResultStatus == ResultStatus.Failure)
            {
                _logger.LogWarning("There was a problem retrieving projects for {@tag}", tag);
                return;
            }

            var matchingBlogPosts = await _blogPostBL.GetBlogPostsByTagId(tag.TagId);

            if (matchingBlogPosts.Details.ResultStatus == ResultStatus.Failure)
            {
                _logger.LogWarning("There was a problem retrieving blogPosts for {@tag}", tag);
                return;
            }

            var totalCount = matchingProjects.Data.Count + matchingBlogPosts.Data.Count;

            if (totalCount == tag.ArticleCount)
            {
                _logger.LogInformation(
                    "{tagId} count hasn't changed. No update necessary. Current count is {articleCount}",
                    tag.TagId,
                    totalCount
                    );
                return;
            }

            if (totalCount > 0)
            {
                await UpdateTag(tag, totalCount);
            }
            else
            {
                await DeleteTag(tag);
            }
        }