예제 #1
0
        public NodeGraph(ICalculationEngine calculationEngine, VertexConstructor vertexConstructor) : base()
        {
            foreach (var n in calculationEngine.Nodes)
            {
                var vertex = vertexConstructor.Invoke(n);
                AddVertex(vertex);

                if (n.Status == NodeStatus.Uninitialized)
                {
                    n.Changed += (sender, e) =>
                    {
                        if (calculationEngine.Nodes.All(node => node.Status != NodeStatus.Uninitialized))
                        {
                            OnInitialized(EventArgs.Empty);
                        }
                    };
                }
            }

            foreach (var n in calculationEngine.Nodes)
            {
                foreach (var d in n.GetDependentNodes())
                {
                    var edge = new NodeEdge(GetVertex(d.Id), GetVertex(n.Id));
                    AddEdge(edge);
                }
            }
        }
        public void Initialize()
        {
            _calculationEngine                = Substitute.For <ICalculationEngine>();
            _providersApiClient               = Substitute.For <IProvidersApiClient>();
            _specificationsApiClient          = Substitute.For <ISpecificationsApiClient>();
            _providerSourceDatasetsRepository = Substitute.For <IProviderSourceDatasetsRepository>();
            _calculationAggregationService    = Substitute.For <ICalculationAggregationService>();
            _calculationsRepository           = Substitute.For <ICalculationsRepository>();
            _logger = Substitute.For <ILogger>();
            _mapper = CreateMapper();

            _calculatorResiliencePolicies = new CalculatorResiliencePolicies
            {
                SpecificationsApiClient = Policy.NoOpAsync(),
                ProvidersApiClient      = Policy.NoOpAsync(),
                CalculationsApiClient   = Policy.NoOpAsync()
            };

            _calculationEnginePreviewService = new CalculationEnginePreviewService(
                _calculationEngine,
                _providersApiClient,
                _mapper,
                _calculatorResiliencePolicies,
                _specificationsApiClient,
                _providerSourceDatasetsRepository,
                _calculationAggregationService,
                _calculationsRepository,
                _logger);
        }
예제 #3
0
 public HousingLoanController(
     ILogger <HousingLoanController> logger,
     ICalculationEngine engine,
     ILoanConverter converter)
 {
     _converter = converter;
     _engine    = engine;
     _logger    = logger;
 }
예제 #4
0
        public SimpleGraphViewModel(ICalculationEngine calculationEngine) : base()
        {
            _calculationEngine = calculationEngine;

            Graph = new NodeGraph(_calculationEngine, new VertexConstructor(node => (INodeVertex) new SimpleGraphVertex(node)));

            Graph.Initialized += Graph_Initialized;

            UpdateGraphCommand        = new ActionCommand(() => UpdateGraph());
            CalculateFullCommand      = new ActionCommand(() => Graph.UpdateNode("out9"));
            CancelCalculateCommand    = new ActionCommand(() => _calculationEngine.Calculation.Cancel());
            CalculatePartialCommand   = new ActionCommand(() => Graph.UpdateNode("out4"));
            CalculateSecondaryCommand = new ActionCommand(() => Graph.UpdateNode("out10"));
        }
        public PromotionEngineTests()
        {
            _a = new Product("A", 50);
            _b = new Product("B", 30);
            _c = new Product("C", 20);
            _d = new Product("D", 15);

            _calculationService = new CalculationService();
            _promotions         = new List <IPromotion>
            {
                new PromotionService(new Promotion("A", 3, 130)),
                new PromotionService(new Promotion("B", 2, 45)),
                new ComboPromotionService(new ComboPromotion(new List <string> {
                    "C", "D"
                }, 30))
            };
        }
        public CalculationEngineService(
            ILogger logger,
            ICalculationEngine calculationEngine,
            ICacheProvider cacheProvider,
            IMessengerService messengerService,
            IProviderSourceDatasetsRepository providerSourceDatasetsRepository,
            ITelemetry telemetry,
            IProviderResultsRepository providerResultsRepository,
            ICalculationsRepository calculationsRepository,
            EngineSettings engineSettings,
            ICalculatorResiliencePolicies resiliencePolicies,
            IValidator <ICalculatorResiliencePolicies> calculatorResiliencePoliciesValidator,
            IDatasetAggregationsRepository datasetAggregationsRepository,
            IFeatureToggle featureToggle,
            IJobsApiClient jobsApiClient)
        {
            _calculatorResiliencePoliciesValidator = calculatorResiliencePoliciesValidator;

            CalculationEngineServiceValidator.ValidateConstruction(_calculatorResiliencePoliciesValidator,
                                                                   engineSettings, resiliencePolicies, calculationsRepository);

            _logger            = logger;
            _calculationEngine = calculationEngine;
            _cacheProvider     = cacheProvider;
            _messengerService  = messengerService;
            _providerSourceDatasetsRepository = providerSourceDatasetsRepository;
            _telemetry = telemetry;
            _providerResultsRepository = providerResultsRepository;
            _calculationsRepository    = calculationsRepository;
            _engineSettings            = engineSettings;
            _cacheProviderPolicy       = resiliencePolicies.CacheProvider;
            _messengerServicePolicy    = resiliencePolicies.Messenger;
            _providerSourceDatasetsRepositoryPolicy = resiliencePolicies.ProviderSourceDatasetsRepository;
            _providerResultsRepositoryPolicy        = resiliencePolicies.ProviderResultsRepository;
            _calculationsRepositoryPolicy           = resiliencePolicies.CalculationsRepository;
            _datasetAggregationsRepository          = datasetAggregationsRepository;
            _featureToggle       = featureToggle;
            _jobsApiClient       = jobsApiClient;
            _jobsApiClientPolicy = resiliencePolicies.JobsApiClient;
        }
예제 #7
0
        public CalculationEnginePreviewService(
            ICalculationEngine calculationEngine,
            IProvidersApiClient providersApiClient,
            IMapper mapper,
            ICalculatorResiliencePolicies resiliencePolicies,
            ISpecificationsApiClient specificationsApiClient,
            IProviderSourceDatasetsRepository providerSourceDatasetsRepository,
            ICalculationAggregationService calculationAggregationService,
            ICalculationsRepository calculationsRepository,
            ILogger logger)
        {
            Guard.ArgumentNotNull(calculationEngine, nameof(calculationEngine));
            Guard.ArgumentNotNull(providersApiClient, nameof(providersApiClient));
            Guard.ArgumentNotNull(mapper, nameof(mapper));
            Guard.ArgumentNotNull(providerSourceDatasetsRepository, nameof(providerSourceDatasetsRepository));
            Guard.ArgumentNotNull(calculationAggregationService, nameof(calculationAggregationService));
            Guard.ArgumentNotNull(calculationsRepository, nameof(calculationsRepository));
            Guard.ArgumentNotNull(logger, nameof(logger));

            Guard.ArgumentNotNull(resiliencePolicies, nameof(resiliencePolicies));
            Guard.ArgumentNotNull(resiliencePolicies.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies.ProvidersApiClient, nameof(resiliencePolicies.ProvidersApiClient));
            Guard.ArgumentNotNull(resiliencePolicies.CalculationsApiClient, nameof(resiliencePolicies.CalculationsApiClient));

            _calculationEngine                = calculationEngine;
            _providersApiClient               = providersApiClient;
            _mapper                           = mapper;
            _specificationsApiClient          = specificationsApiClient;
            _providerSourceDatasetsRepository = providerSourceDatasetsRepository;
            _calculationAggregationService    = calculationAggregationService;
            _specificationsApiPolicy          = resiliencePolicies.SpecificationsApiClient;
            _providersApiClientPolicy         = resiliencePolicies.ProvidersApiClient;
            _calculationsApiClientPolicy      = resiliencePolicies.CalculationsApiClient;
            _calculationsRepository           = calculationsRepository;
            _logger                           = logger;
        }
예제 #8
0
 public CalculatorService(ICalculationEngine calculatorEngine)
 {
     this.calculatorEngine = calculatorEngine;
 }
예제 #9
0
 public CalculatorService(ICalculationEngine calculatorEngine)
 {
   this.calculatorEngine = calculatorEngine;
 }
예제 #10
0
 public OrderGraphViewModel(ICalculationEngine calculationEngine) : base()
 {
     _calculationEngine = calculationEngine;
     _graph             = new NodeGraph(calculationEngine, new VertexConstructor(node => (INodeVertex) new OrderGraphVertex(node)));
 }
        public CalculationEngineService(
            ILogger logger,
            ICalculationEngine calculationEngine,
            ICacheProvider cacheProvider,
            IMessengerService messengerService,
            IProviderSourceDatasetsRepository providerSourceDatasetsRepository,
            ITelemetry telemetry,
            IProviderResultsRepository providerResultsRepository,
            ICalculationsRepository calculationsRepository,
            EngineSettings engineSettings,
            ICalculatorResiliencePolicies resiliencePolicies,
            IJobManagement jobManagement,
            ISpecificationsApiClient specificationsApiClient,
            IResultsApiClient resultsApiClient,
            IValidator <ICalculatorResiliencePolicies> calculatorResiliencePoliciesValidator,
            ICalculationEngineServiceValidator calculationEngineServiceValidator,
            ICalculationAggregationService calculationAggregationService,
            IAssemblyService assemblyService) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(calculationEngine, nameof(calculationEngine));
            Guard.ArgumentNotNull(cacheProvider, nameof(cacheProvider));
            Guard.ArgumentNotNull(messengerService, nameof(messengerService));
            Guard.ArgumentNotNull(providerSourceDatasetsRepository, nameof(providerSourceDatasetsRepository));
            Guard.ArgumentNotNull(telemetry, nameof(telemetry));
            Guard.ArgumentNotNull(providerResultsRepository, nameof(providerResultsRepository));
            Guard.ArgumentNotNull(calculationsRepository, nameof(calculationsRepository));
            Guard.ArgumentNotNull(engineSettings, nameof(engineSettings));
            Guard.ArgumentNotNull(resiliencePolicies?.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.CacheProvider, nameof(resiliencePolicies.CacheProvider));
            Guard.ArgumentNotNull(resiliencePolicies?.Messenger, nameof(resiliencePolicies.Messenger));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderSourceDatasetsRepository, nameof(resiliencePolicies.ProviderSourceDatasetsRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.CalculationResultsRepository, nameof(resiliencePolicies.CalculationResultsRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.CalculationsApiClient, nameof(resiliencePolicies.CalculationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.ResultsApiClient, nameof(resiliencePolicies.ResultsApiClient));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(calculatorResiliencePoliciesValidator, nameof(calculatorResiliencePoliciesValidator));
            Guard.ArgumentNotNull(calculationEngineServiceValidator, nameof(calculationEngineServiceValidator));
            Guard.ArgumentNotNull(resultsApiClient, nameof(resultsApiClient));
            Guard.ArgumentNotNull(calculationAggregationService, nameof(calculationAggregationService));
            Guard.ArgumentNotNull(assemblyService, nameof(assemblyService));

            _calculationEngineServiceValidator = calculationEngineServiceValidator;
            _logger            = logger;
            _calculationEngine = calculationEngine;
            _cacheProvider     = cacheProvider;
            _messengerService  = messengerService;
            _providerSourceDatasetsRepository = providerSourceDatasetsRepository;
            _telemetry = telemetry;
            _providerResultsRepository = providerResultsRepository;
            _calculationsRepository    = calculationsRepository;
            _engineSettings            = engineSettings;
            _cacheProviderPolicy       = resiliencePolicies.CacheProvider;
            _messengerServicePolicy    = resiliencePolicies.Messenger;
            _providerSourceDatasetsRepositoryPolicy = resiliencePolicies.ProviderSourceDatasetsRepository;
            _providerResultsRepositoryPolicy        = resiliencePolicies.CalculationResultsRepository;
            _calculationsApiClientPolicy            = resiliencePolicies.CalculationsApiClient;
            _specificationsApiClient       = specificationsApiClient;
            _specificationsApiPolicy       = resiliencePolicies.SpecificationsApiClient;
            _resultsApiClientPolicy        = resiliencePolicies.ResultsApiClient;
            _resultsApiClient              = resultsApiClient;
            _calculationAggregationService = calculationAggregationService;
            _assemblyService = assemblyService;

            _typeIdentifierGenerator = new VisualBasicTypeIdentifierGenerator();
        }
예제 #12
0
 public CalculatorServices(ICalculationEngine calculationEngine, ILogger <CalculatorServices> logger)
 {
     _calculationEngine = calculationEngine;
     _logger            = logger;
 }
예제 #13
0
 public Calculator(ICalculationEngine engine)
 {
     _engine = engine;
 }
 public FormCalculationEngine(ICalculationEngine engine)
 {
     _engine = engine;
     InitializeComponent();
 }