public DashboardViewModel(IEnumerable<WebSite> websites, IList<SyncStatus> syncStatuses)
{
Instances = syncStatuses.GroupBy(s => s.RoleInstanceId)
.Select(s => new InstanceViewModel {Name = s.Key, IsOnline = s.First().IsOnline})
.ToList();
Sites = websites.Select(w => new SiteViewModel
{
Id = w.Id,
Name = w.Name,
SyncStatus = Instances.ToDictionary(
i => i.Name,
i => syncStatuses
.Where(s => s.SiteName.Equals(w.Name, StringComparison.InvariantCultureIgnoreCase)
&& s.RoleInstanceId.Equals(i.Name, StringComparison.InvariantCultureIgnoreCase)
)
.Select(s =>
new SiteSyncViewModel
{
SyncError = s.LastError != null ? s.LastError.Message : null,
SyncStatus = s.Status.ToString(),
SyncTime = s.SyncTimestamp
}
)
.FirstOrDefault() ?? new SiteSyncViewModel{SyncStatus = "NotDeployed"}
)
});
}