public List<ProjectModel> GetAllProjectSummary() { try { foreach (Project proj in projects) { try { currentProjectConfigs = buildConfigs.Where(x => x.ProjectId == proj.Id).ToList<BuildConfig>(); foreach (BuildConfig currentConfig in currentProjectConfigs) { var build = GetLatestBuildForConfig(currentConfig.Id); ProjectModel project = new ProjectModel() { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = currentConfig.Name, LastBuildTime = DateTime.ParseExact(build.StartDate, "yyyyMMddTHHmmsszzzzz", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = build.Status, LastBuildStatusText = build.StatusText }; projectList.Add(project); } } catch (ArgumentNullException) { ProjectModel project = new ProjectModel() { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = "** No Builds available **", LastBuildTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = "undefined", LastBuildStatusText = String.Empty }; projectList.Add(project); } catch (NullReferenceException) { ProjectModel project = new ProjectModel() { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = String.Empty, LastBuildTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = "undefined", LastBuildStatusText = String.Empty }; projectList.Add(project); } catch (Exception ex) { throw ex; } } return projectList .OrderBy(x => x.LastBuildStatus.ToLower().Contains("success") ? 3 : 0) .ThenBy(x => x.LastBuildStatus.ToLower().Contains("undefined") ? 2 : 0) .ThenBy(x => x.LastBuildStatus.ToLower().Contains("failure") ? 1 : 0) .ToList<ProjectModel>(); } catch (Exception ex) { throw ex; } }
public List<ProjectModel> GetPageOfProjectSummary(out bool morePages, int page = 1, int items = 25) { try { morePages = projects.Count > (items * page); foreach (var proj in projects.Where(x => !x.Archived).Skip((page-1) * items).Take(items)) { var skipRemainingBuildConfigs = false; try { currentProjectConfigs = (from configs in buildConfigs where configs.ProjectId == proj.Id select configs).ToList(); foreach (var currentConfig in currentProjectConfigs) { if (!skipRemainingBuildConfigs) { var build = GetLatestBuildForConfig(currentConfig.Id); var project = new ProjectModel { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = currentConfig.Name, LastBuildTime = build.StartDate.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = build.Status, LastBuildStatusText = build.StatusText, Url = build.WebUrl }; if (Settings.Default.ShowFailedBuildsOnly) { //if the last build was cancelled but we suceeded before that? if (build.Status == "UNKNOWN") { if (HadSucessfulBuildSinceLastFailure(currentConfig.Id)) { continue; } } if (build.Status != "SUCCESS" && //build.StartDate > DateTime.Today.AddYears(-1) && build.Number != "N/A") { projectList.Add(project); if (Settings.Default.ShowOneFailPerProject) { skipRemainingBuildConfigs = true; } } } else { projectList.Add(project); } } } } catch (ArgumentNullException) { var project = new ProjectModel { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = "** No Builds available **", LastBuildTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = "undefined", LastBuildStatusText = String.Empty }; projectList.Add(project); } catch (NullReferenceException) { var project = new ProjectModel { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = String.Empty, LastBuildTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = "undefined", LastBuildStatusText = String.Empty }; projectList.Add(project); } catch (Exception ex) { throw ex; } } return projectList .OrderBy(x => GetStatus(x).Contains("success") ? 3 : 0) .ThenBy(x => GetStatus(x).Contains("undefined") ? 2 : 0) .ThenBy(x => GetStatus(x).Contains("unknown") ? 2 : 0) .ThenBy(x => GetStatus(x).Contains("failure") ? 1 : 0) .ToList(); } catch (Exception ex) { throw ex; } }
public List<ProjectModel> GetAllProjectSummary() { try { foreach (Project proj in projects) { try { currentProjectConfigs = (from configs in buildConfigs where configs.ProjectId == proj.Id select configs).ToList<BuildConfig>(); foreach (BuildConfig currentConfig in currentProjectConfigs) { var build = GetLatestBuildForConfig(currentConfig.Id); ProjectModel project = new ProjectModel() { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = currentConfig.Name, LastBuildTime = build.StartDate.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = build.Status, LastBuildStatusText = build.StatusText }; if (Properties.Settings.Default.ShowFailedBuildsOnly) { if (build.Status != "SUCCESS") projectList.Add(project); } else { projectList.Add(project); } } } catch (ArgumentNullException) { ProjectModel project = new ProjectModel() { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = "** No Builds available **", LastBuildTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = "undefined", LastBuildStatusText = String.Empty }; projectList.Add(project); } catch (NullReferenceException) { ProjectModel project = new ProjectModel() { ProjectName = proj.Name, ProjectId = proj.Id, BuildConfigName = String.Empty, LastBuildTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LastBuildStatus = "undefined", LastBuildStatusText = String.Empty }; projectList.Add(project); } catch (Exception ex) { throw ex; } } return projectList .OrderBy(x => x.LastBuildStatus.ToLower().Contains("success") ? 3 : 0) .ThenBy(x => x.LastBuildStatus.ToLower().Contains("undefined") ? 2 : 0) .ThenBy(x => x.LastBuildStatus.ToLower().Contains("unknown") ? 2 : 0) .ThenBy(x => x.LastBuildStatus.ToLower().Contains("failure") ? 1 : 0) .ToList<ProjectModel>(); } catch (Exception ex) { throw ex; } }
private string GetStatus(ProjectModel model) { return string.IsNullOrEmpty(model.LastBuildStatus) ? "" : model.LastBuildStatus.ToLower(); }