public void RecordTemperature(RecordTemperature command) { _aggregates .Provide <TemperatureRecorder>() .With(new AggregateId(STATION_ID)) .Try(temperatureRecorder => temperatureRecorder.Record(command.City, command.Temperature, command.TimeStamp)) .CatchFault(fault => Handle(fault)) .CatchException(exception => Handle(exception)); }
public async Task <IActionResult> Record(Guid id, [FromBody] decimal temperature) { var command = RecordTemperature.Create( id, temperature ); await commandBus.Send(command); return(Ok()); }
public async Task <Unit> Handle(RecordTemperature command, CancellationToken cancellationToken) { Guard.Against.Null(command, nameof(command)); var reservation = await repository.Find(command.MeasurementId, cancellationToken); reservation !.Record(command.Temperature); await repository.Update(reservation, cancellationToken); return(Unit.Value); }