Esempio n. 1
0
        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,
                });
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }