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