public Entities.CheckBatch ToEntity(Runner.CheckBatch checkBatch) { return(new Entities.CheckBatch { Time = TimeUtilities.DateTimeOffsetToLong(checkBatch.Time), Duration = TimeUtilities.TimeSpanToLong(checkBatch.Duration) }); }
public async Task <CheckBatch> PersistBatchAsync(Runner.CheckBatch runnerBatch, CancellationToken token) { var checkNames = runnerBatch .CheckResults .Select(x => x.Check.Name) .Distinct() .ToList(); // Get relevant check names var checkNameToCheck = await _context .Checks .Where(x => checkNames.Contains(x.Name)) .ToDictionaryAsync(x => x.Name, x => x, token); // Initialize new checks foreach (var checkName in checkNames) { if (!checkNameToCheck.ContainsKey(checkName)) { checkNameToCheck[checkName] = new Entities.Check { Name = checkName }; } } // Initialize the batch entity var batch = _runnerMapper.ToEntity(runnerBatch); batch.CheckResults = runnerBatch .CheckResults .Select(x => ToEntity(x, checkNameToCheck)) .ToList(); // Persist the batch _context.CheckBatches.Add(batch); await _context.SaveChangesAsync(token); return(_entityMapper.ToBusiness(batch)); }