/// <inheritdoc /> public Task SaveSnapshot(IAnalysis analysis, AnalysisViewTemplate viewTemplate) { var tmp = analysis as ActiveAnalysis; if (tmp == null) { throw new ArgumentException("It makes no sense to create a snapshot from anything else but an active analysis", nameof(analysis)); } var analysisSnapshot = tmp.CreateSnapshot(); var template = new AnalysisTemplate(analysisSnapshot.Analysers.Select(x => new AnalyserTemplate { Id = x.Id, AnalyserPluginId = x.AnalyserPluginId, Configuration = x.Configuration })); var clone = viewTemplate.Clone(); var results = analysisSnapshot.Analysers.Select(x => new AnalyserResult { AnalyserId = x.Id, Result = x.Result }).ToList(); var snapshot = new Core.Analysis.AnalysisSnapshot(template, clone, results); return(_snapshots.Save(snapshot)); }