示例#1
0
 public static RfqEvent ToEventContract(this OperationExecutionInfoWithPause <SpecialLiquidationOperationData> o, RfqEventTypeContract eventType, string brokerId) =>
 new RfqEvent
 {
     EventType   = eventType,
     RfqSnapshot = new RfqContract
     {
         Id                   = o.Id,
         InstrumentId         = o.Data.Instrument,
         PositionIds          = o.Data.PositionIds,
         Volume               = o.Data.Volume,
         Price                = o.Data.Price,
         ExternalProviderId   = o.Data.ExternalProviderId,
         AccountId            = o.Data.AccountId,
         CausationOperationId = o.Data.CausationOperationId,
         CreatedBy            = string.IsNullOrEmpty(o.Data.AdditionalInfo)
                 ? null
                 : Deserialize(o.Data.AdditionalInfo)?.CreatedBy,
         OriginatorType = (RfqOriginatorType)o.Data.OriginatorType,
         RequestNumber  = o.Data.RequestNumber,
         RequestedFromCorporateActions = o.Data.RequestedFromCorporateActions,
         State        = (RfqOperationState)o.Data.State,
         LastModified = o.LastModified,
         Pause        = IRfqPauseService.CalculatePauseSummary(o).ToEventContract()
     },
     BrokerId = brokerId
 };
示例#2
0
 public SpecialLiquidationSaga(
     IDateService dateService,
     IChaosKitty chaosKitty,
     IOperationExecutionInfoRepository operationExecutionInfoRepository,
     IRfqService specialLiquidationService,
     MarginTradingSettings marginTradingSettings,
     CqrsContextNamesSettings cqrsContextNamesSettings,
     LiquidationHelper liquidationHelper,
     OrdersCache ordersCache,
     IRfqPauseService rfqPauseService,
     ILog log,
     IAssetPairsCache assetPairsCache)
 {
     _dateService = dateService;
     _chaosKitty  = chaosKitty;
     _operationExecutionInfoRepository = operationExecutionInfoRepository;
     _specialLiquidationService        = specialLiquidationService;
     _marginTradingSettings            = marginTradingSettings;
     _cqrsContextNamesSettings         = cqrsContextNamesSettings;
     _liquidationHelper = liquidationHelper;
     _ordersCache       = ordersCache;
     _rfqPauseService   = rfqPauseService;
     _log             = log;
     _assetPairsCache = assetPairsCache;
 }
 public SpecialLiquidationCommandsHandler(
     ITradingEngine tradingEngine,
     IDateService dateService,
     IChaosKitty chaosKitty,
     IOperationExecutionInfoRepository operationExecutionInfoRepository,
     ILog log,
     MarginTradingSettings marginTradingSettings,
     IAssetPairsCache assetPairsCache,
     IAssetPairDayOffService assetPairDayOffService,
     IExchangeConnectorClient exchangeConnectorClient,
     IIdentityGenerator identityGenerator,
     IAccountsCacheService accountsCacheService,
     OrdersCache ordersCache,
     IRfqPauseService rfqPauseService)
 {
     _tradingEngine = tradingEngine;
     _dateService   = dateService;
     _chaosKitty    = chaosKitty;
     _operationExecutionInfoRepository = operationExecutionInfoRepository;
     _log = log;
     _marginTradingSettings   = marginTradingSettings;
     _assetPairsCache         = assetPairsCache;
     _assetPairDayOffService  = assetPairDayOffService;
     _exchangeConnectorClient = exchangeConnectorClient;
     _identityGenerator       = identityGenerator;
     _accountsCacheService    = accountsCacheService;
     _ordersCache             = ordersCache;
     _rfqPauseService         = rfqPauseService;
 }
示例#4
0
        public void CalculatePauseSummary_Cannot_Be_Paused_When_ThereIsNo_Pause_But_State_IsNotAllowed()
        {
            var pauseSummary = IRfqPauseService.CalculatePauseSummary(
                new OperationExecutionInfoWithPause <SpecialLiquidationOperationData>(
                    "name",
                    "id",
                    DateTime.UtcNow,
                    new SpecialLiquidationOperationData {
                State = GetRandomOperationState(false)
            })
            {
                CurrentPause = null
            });

            Assert.IsFalse(pauseSummary.CanBePaused);
        }
示例#5
0
        public void CalculatePauseSummary_Cannot_Be_Cancelled_When_ThereIsNo_Active_Pause(PauseState pauseState)
        {
            var pauseSummary = IRfqPauseService.CalculatePauseSummary(
                new OperationExecutionInfoWithPause <SpecialLiquidationOperationData>(
                    "name",
                    "id",
                    DateTime.UtcNow,
                    new SpecialLiquidationOperationData
            {
                State = GetRandomOperationState()
            })
            {
                CurrentPause = null
            });

            Assert.IsFalse(pauseSummary.CanBeResumed);
        }
示例#6
0
        public void CalculatePauseSummary_Considered_As_Paused_When_Active_Or_Pending_Cancellation(PauseState pauseState)
        {
            var pauseSummary = IRfqPauseService.CalculatePauseSummary(
                new OperationExecutionInfoWithPause <SpecialLiquidationOperationData>(
                    "name",
                    "id",
                    DateTime.UtcNow,
                    new SpecialLiquidationOperationData
            {
                State = GetRandomOperationState()
            })
            {
                CurrentPause = new OperationExecutionPause {
                    State = pauseState
                }
            });

            Assert.IsTrue(pauseSummary.IsPaused);
        }
示例#7
0
        public void CalculatePauseSummary_Can_Be_Paused_When_ThereIs_CancelledPause()
        {
            var pauseSummary = IRfqPauseService.CalculatePauseSummary(
                new OperationExecutionInfoWithPause <SpecialLiquidationOperationData>(
                    "name",
                    "id",
                    DateTime.UtcNow,
                    new SpecialLiquidationOperationData
            {
                State = GetRandomOperationState(true)
            })
            {
                CurrentPause = null, LatestCancelledPause = new OperationExecutionPause {
                    State = PauseState.Cancelled
                }
            });

            Assert.IsTrue(pauseSummary.CanBePaused);
        }
示例#8
0
        public void CalculatePauseSummary_Cannot_Be_Paused_When_ThereIs_Pause_Already()
        {
            var pauseSummary = IRfqPauseService.CalculatePauseSummary(
                new OperationExecutionInfoWithPause <SpecialLiquidationOperationData>(
                    "name",
                    "id",
                    DateTime.UtcNow,
                    new SpecialLiquidationOperationData
            {
                State = GetRandomOperationState()
            })
            {
                CurrentPause = new OperationExecutionPause {
                    State = PauseState.Active
                }
            });

            Assert.IsFalse(pauseSummary.CanBePaused);
        }
示例#9
0
 public static RfqWithPauseSummary ToRfqWithPauseSummary(this OperationExecutionInfoWithPause <SpecialLiquidationOperationData> o)
 {
     return(new RfqWithPauseSummary
     {
         Id = o.Id,
         InstrumentId = o.Data.Instrument,
         PositionIds = o.Data.PositionIds,
         Volume = o.Data.Volume,
         Price = o.Data.Price,
         ExternalProviderId = o.Data.ExternalProviderId,
         AccountId = o.Data.AccountId,
         CausationOperationId = o.Data.CausationOperationId,
         CreatedBy = string.IsNullOrEmpty(o.Data.AdditionalInfo)
             ? null
             : Deserialize(o.Data.AdditionalInfo)?.CreatedBy,
         OriginatorType = o.Data.OriginatorType,
         RequestNumber = o.Data.RequestNumber,
         RequestedFromCorporateActions = o.Data.RequestedFromCorporateActions,
         State = o.Data.State,
         LastModified = o.LastModified,
         PauseSummary = IRfqPauseService.CalculatePauseSummary(o)
     });
 }
示例#10
0
 public ProductChangedProjection(
     ITradingEngine tradingEngine,
     IAssetPairsCache assetPairsCache,
     IOrderReader orderReader,
     IScheduleSettingsCacheService scheduleSettingsCacheService,
     ITradingInstrumentsManager tradingInstrumentsManager,
     IRfqService rfqService,
     IRfqPauseService rfqPauseService,
     MarginTradingSettings mtSettings,
     ILog log,
     IQuoteCacheService quoteCache)
 {
     _tradingEngine   = tradingEngine;
     _assetPairsCache = assetPairsCache;
     _orderReader     = orderReader;
     _scheduleSettingsCacheService = scheduleSettingsCacheService;
     _tradingInstrumentsManager    = tradingInstrumentsManager;
     _rfqService      = rfqService;
     _rfqPauseService = rfqPauseService;
     _mtSettings      = mtSettings;
     _log             = log;
     _quoteCache      = quoteCache;
 }
示例#11
0
 public RfqController(IRfqPauseService rfqPauseService, IRfqService rfqService)
 {
     _rfqPauseService = rfqPauseService;
     _rfqService      = rfqService;
 }