private static void SetEnvironmentSummary(this OwnerResults result) { var all = result.Owners.SelectMany(o => o.Groups.SelectMany(g => g.Services.SelectMany(s => s.Results))); var groupedByEnvironment = all.GroupBy(r => r.Environment); foreach (var e in groupedByEnvironment) { if (e.Any(x => x.Status == StatusType.Down)) { result.Environments.Add( new OwnerResult { Environment = e.Key, Status = StatusType.Down }); } else { result.Environments.Add( new OwnerResult { Environment = e.Key, Status = StatusType.Up }); } } Cleanup(result); }
private static Owner GetOrAddOwner(this OwnerResults information, string name) { Owner owner = information.Owners.FirstOrDefault(o => o.Name == name); if (owner == null) { owner = new Owner { Name = name }; information.Owners.Add(owner); } return(owner); }
public static OwnerResults AsOwnerResults(this GenericResults results) { var ownerResult = new OwnerResults { Date = results.Date }; foreach (var genericResult in results.Results) { ownerResult.GetOrAddOwner(genericResult.Owner) .GetOrAddGroup(genericResult.Group) .GetOrAddService(genericResult.Name) .GetOrAddResult(genericResult.Environment, genericResult.Status); } ownerResult.SetEnvironmentSummary(); return(ownerResult); }
/// <summary> /// Adds missing information in per environment in case results are missing due to exceptions /// </summary> /// <param name="result"></param> private static void Cleanup(OwnerResults result) { var allEnvironments = result.Owners.SelectMany(o => o.Groups.SelectMany(g => g.Services.SelectMany(s => s.Results.Select(r => r.Environment)))).Distinct(); foreach (var owner in result.Owners) { foreach (var group in owner.Groups) { foreach (var service in group.Services) { foreach (var e in allEnvironments) { if (service.Results.All(r => r.Environment != e)) { service.Results.Add(new OwnerResult { Environment = e, Status = StatusType.Unknown }); } } } } } }