private async Task Handle(CreateSnapshotCommand command, IEventPublisher publisher) { //deduplication is inside _snapshotService.MakeTradingDataSnapshot try { await _snapshotService.MakeTradingDataSnapshot(command.TradingDay, command.OperationId); publisher.PublishEvent(new SnapshotCreatedEvent { OperationId = command.OperationId, CreationTime = _dateService.Now(), }); } catch (Exception exception) { await _log.WriteErrorAsync(nameof(EodCommandsHandler), nameof(CreateSnapshotCommand), exception); publisher.PublishEvent(new SnapshotCreationFailedEvent { OperationId = command.OperationId, CreationTime = _dateService.Now(), FailReason = exception.Message, }); } }
public async Task <string> MakeTradingDataSnapshot([FromQuery] DateTime tradingDay, [FromQuery] string correlationId = null) { if (tradingDay == default) { throw new Exception($"{nameof(tradingDay)} must be set"); } if (string.IsNullOrWhiteSpace(correlationId)) { correlationId = _identityGenerator.GenerateGuid(); } return(await _snapshotService.MakeTradingDataSnapshot(tradingDay, correlationId)); }
public async Task Handle(MarketStateChangedEvent e) { if (!e.IsPlatformClosureEvent()) { return; } var tradingDay = e.EventTimestamp.Date; await _log.WriteInfoAsync(nameof(PlatformClosureProjection), nameof(Handle), e.ToJson(), $"Platform is being closed. Starting trading snapshot backup for [{tradingDay}]"); var result = await _snapshotService.MakeTradingDataSnapshot(e.EventTimestamp.Date, _identityGenerator.GenerateGuid(), SnapshotStatus.Draft); await _log.WriteInfoAsync(nameof(PlatformClosureProjection), nameof(Handle), e.ToJson(), result); }