public async ValueTask <IEnumerable <Observation> > FindObservationAsync(Guid sequenceId) { var sequence = await context.Sequences .Include(s => s.Observations) .FirstOrDefaultAsync(s => s.Id == sequenceId); if (sequence == null) { Throws.SequenceNotFound(); } return(sequence.Observations .OrderBy(o => o.Date) .Select(o => { var trafficLight = new Light( o.Color, new TrafficLightDigits(o.High, o.Low)); var predictedDigits = o .Digits .Select(x => new TrafficLightDigits(x)) .ToArray(); return new Observation(sequenceId, trafficLight, predictedDigits); })); }
public async Task SaveObservationAsync(Guid sequenceId, Light trafficLight, IEnumerable <TrafficLightDigits> digits) { var sequence = await context.Sequences.FindAsync(sequenceId); if (sequence == null) { Throws.SequenceNotFound(); } var observation = new ObservationEntity { Date = DateTimeOffset.UtcNow, Color = trafficLight.Color, High = trafficLight.Digits.High.ToBitString(), Low = trafficLight.Digits.Low.ToBitString(), Digits = digits.Select(x => x.ToNumber()).ToArray() }; sequence.Observations.Add(observation); await context.SaveChangesAsync(); }