private void SetProjectHistory(ITfsProject project, List <ITfsWit> workItems) { var currentProjectIds = new HashSet <int>(project.InWits.Select(p => p.ID)); var currentTfsProjectIds = new HashSet <int>(workItems.Select(p => p.ID)); var addedItems = workItems.Where(p => !currentProjectIds.Contains(p.ID)).ToList(); var removedItems = project.InWits.Where(p => !currentTfsProjectIds.Contains(p.ID)).ToList(); if ((addedItems.Count + removedItems.Count) == 0) { return; } var newHistory = new List <ITfsWit>(); foreach (var item in addedItems) { project.InWits.Add(item); item.State = TfsWitState.Added; newHistory.Add(item); } foreach (var item in removedItems) { item.State = TfsWitState.Removed; project.InWits.Remove(item); newHistory.Add(item); } project.WitHistory = newHistory; project.HasNewHistory = true; }
public void UpdateProject(ITfsProject project) { var workItems = _workItemApis.GetListOfWorkItemsByTag(project.TeamProjectName, project.TrackedTags); SetProjectHistory(project, BuildWorkItems(workItems)); project.LastPolled = DateTime.Now; project.InWits.Sort(); project.WitHistory.Sort(); using (var file = File.CreateText(project.FileName)) { var serializer = new JsonSerializer(); serializer.Serialize(file, project); } }
private void WriteFile(ITfsProject project) { var path = Constants.ProjectFolderPath; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var fileName = $"{path}{project.ProjectName}.json"; if (File.Exists(fileName)) { throw new Exception( $"A file with the name {project.ProjectName} already exists. Please select another project name."); } using (var file = File.CreateText(fileName)) { project.FileName = fileName; var serializer = new JsonSerializer(); serializer.Serialize(file, project); } }
public void DeleteProject(ITfsProject project) { File.Delete(project.FileName); }