private Source CreateSource(
            IMonitoringSourceConfiguration source,
            IEnumerable <MonitoringResult> results)
        {
            var sourceResult = results.FirstOrDefault(result => result.Type == MonitoringType.Website);
            var sourceModel  = new Source
            {
                Name       = source.Name,
                Url        = source.Url,
                MonitorCPU = source.MonitorCPU,
                Status     = sourceResult?.Status,
                Message    = sourceResult?.Message
            };

            var pairs = from database in source.Databases
                        join result in results.Where(result => result.Type == MonitoringType.Database)
                        on database.Name equals result.Name into matched
                        from match in matched.DefaultIfEmpty()
                        select new { database, result = match };

            foreach (var pair in pairs)
            {
                sourceModel.Databases.Add(new Database
                {
                    Name    = pair.database.Name,
                    Status  = pair.result?.Status,
                    Message = pair.result?.Message
                });
            }

            return(sourceModel);
        }
 public CPUUsageMonitoringCommand(
     IMonitoringEnvironmentConfiguration environment,
     IMonitoringSourceConfiguration source)
 {
     Type        = MonitoringType.Website;
     Environment = environment.Name;
     Group       = source.Group;
     Source      = source.Name;
     Name        = source.Name;
     Connection  = source.ApplicationPool;
 }
 public DatabaseMonitoringCommand(
     IMonitoringEnvironmentConfiguration environment,
     IMonitoringSourceConfiguration source,
     IMonitoringDatabaseConfiguration database)
 {
     Type        = MonitoringType.Database;
     Environment = environment.Name;
     Group       = source.Group;
     Source      = source.Name;
     Name        = database.Name;
     Connection  = database.ConnectionString;
 }