public BaseResponse <Simulation> ChangeConfiguration(Guid scenarioId, BlockchainConfiguration configuration)
        {
            if (configuration == null)
            {
                return(new ErrorResponse <Simulation>("The configuration cannot be null!", null));
            }

            var simulation = _simulationStorage.GetSimulation(scenarioId);

            if (simulation == null)
            {
                return(new ErrorResponse <Simulation>($"Could not find simulation with scenario id:{scenarioId}", null));
            }

            if (simulation.Status != SimulationStatuses.ReadyToRun)
            {
                return(new ErrorResponse <Simulation>("You can not make changes while simulation is running",
                                                      simulation));
            }

            simulation.BlockchainConfiguration = configuration;
            _simulationStorage.SaveChanges();

            return(new SuccessResponse <Simulation>("The configuration has been changed!", simulation));
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <BlockchainWalletsClient>()
            .As <IBlockchainWalletsClient>()
            .WithParameter(TypedParameter.From(_blockchainWalletsServiceClientSettings.ServiceUrl))
            .SingleInstance();

            var blockchainConfigurations = new Dictionary <string, BlockchainConfiguration>();

            foreach (var blockchain in _blockchainsIntegrationSettings.Blockchains.Where(b => !b.IsDisabled))
            {
                var blockchainConfiguration = new BlockchainConfiguration
                                              (
                    blockchain.HotWalletAddress,
                    blockchain.AreCashoutsDisabled,
                    blockchain.CashoutAggregation != null ?
                    new CashoutsAggregationConfiguration(
                        blockchain.CashoutAggregation.AgeThreshold,
                        blockchain.CashoutAggregation.CountThreshold):
                    null
                                              );

                blockchainConfigurations.Add(blockchain.Type, blockchainConfiguration);
            }

            builder.RegisterType <BlockchainConfigurationsProvider>()
            .As <IBlockchainConfigurationsProvider>()
            .WithParameter(TypedParameter.From <IReadOnlyDictionary <string, BlockchainConfiguration> >(blockchainConfigurations))
            .SingleInstance();
        }
 public BlockchainMonitorService(IBlockchainClientService clientService, IConfiguration configuration,
                                 ILoggerFactory loggerFactory, IServiceScopeFactory scopeFactory)
 {
     _dbContext     = scopeFactory.CreateScopedService <LocalPersistenceContext>();
     _configuration = configuration.GetConfiguration <BlockchainConfiguration>();
     _logger        = loggerFactory.CreateLogger(GetType());
     _clientService = clientService;
 }
Example #4
0
        public ActionResult <BaseResponse> ChangeConfiguration(Guid scenarioId,
                                                               [FromBody] BlockchainConfiguration configuration)
        {
            var mappedConfiguration = LocalMapper.Map <BusinessLogic.Model.Scenarios.BlockchainConfiguration>(configuration);

            return(_simulationService.ChangeConfiguration(scenarioId, mappedConfiguration)
                   .GetActionResult <BusinessLogic.Model.Scenarios.Simulation, Simulation>(this));
        }