public JobGroupsControllerUtils(BacktestJobGroupActioner actioner, JobsControllerUtils jobsControllerUtils, AllTradesConnector allTradesConnector, TradeGenericMetric2SeriesConnector tradeGenericMetric2SeriesConnector, UnrealizedPnlSeriesConnector unrealizedPnlSeriesConnector)
        {
            this.actioner            = actioner;
            this.jobsControllerUtils = jobsControllerUtils;

            this.allTradesConnector = allTradesConnector;
            this.tradeGenericMetric2SeriesConnector = tradeGenericMetric2SeriesConnector;
            this.unrealizedPnlSeriesConnector       = unrealizedPnlSeriesConnector;
        }
        public async Task TestPostNewTradeGenericMetric2Serie()
        {
            string controllerEndpoint = "https://localhost:44379/";

            TradeGenericMetric2SeriesConnector connector = TradeGenericMetric2SeriesConnector.GetConnector(controllerEndpoint);

            try
            {
                string jobGroupId       = Guid.NewGuid().ToString();
                string tradeDescription = "Trade 1";

                var serie = new BacktestTradeGenericMetric2Serie()
                {
                    JobGroupId = jobGroupId,
                    Points     = new List <BacktestTradeGenericMetric2Point>()
                    {
                        new BacktestTradeGenericMetric2Point()
                        {
                            TimeInSeconds = 0, GenericMetric2Value = 1.5
                        },
                        new BacktestTradeGenericMetric2Point()
                        {
                            TimeInSeconds = 1, GenericMetric2Value = 2.5
                        },
                        new BacktestTradeGenericMetric2Point()
                        {
                            TimeInSeconds = 2, GenericMetric2Value = 3.5
                        },
                        new BacktestTradeGenericMetric2Point()
                        {
                            TimeInSeconds = 3, GenericMetric2Value = 4.5
                        },
                        new BacktestTradeGenericMetric2Point()
                        {
                            TimeInSeconds = 4, GenericMetric2Value = 5.5
                        },
                    },
                    TradeDescription = tradeDescription
                };

                var result = await connector.PostNewTradeGenericMetric2Serie(serie);

                Assert.IsTrue(result.Item1, result.Item2);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
        public static void AddControllerUtils(this IServiceCollection services, IConfigurationRoot config)
        {
            services.AddSingleton((serviceProvider) =>
            {
                var actioner = serviceProvider.GetService <BacktestJobActioner>();

                return(new JobsControllerUtils(actioner));
            });

            services.AddSingleton((serviceProvider) =>
            {
                var actioner = serviceProvider.GetService <BacktestJobGroupActioner>();
                JobsControllerUtils jobsControllerUtils = serviceProvider.GetService <JobsControllerUtils>();

                AllTradesConnector allTradesConnector = serviceProvider.GetService <AllTradesConnector>();
                TradeGenericMetric2SeriesConnector tradeGenericMetric2SeriesConnector = serviceProvider.GetService <TradeGenericMetric2SeriesConnector>();
                UnrealizedPnlSeriesConnector unrealizedPnlSeriesConnector             = serviceProvider.GetService <UnrealizedPnlSeriesConnector>();

                return(new JobGroupsControllerUtils(actioner, jobsControllerUtils, allTradesConnector, tradeGenericMetric2SeriesConnector, unrealizedPnlSeriesConnector));
            });

            services.AddSingleton((serviceProvider) =>
            {
                var actioner = serviceProvider.GetService <UnrealizedPnlSerieActioner>();

                return(new UnrealizedPnlSeriesControllerUtils(actioner));
            });

            services.AddSingleton((serviceProvider) =>
            {
                var actioner = serviceProvider.GetService <TradeGenericMetric2SerieActioner>();

                return(new TradeGenericMetric2SeriesControllerUtils(actioner));
            });

            services.AddSingleton((serviceProvider) =>
            {
                string stratFilesUploadDirectory                  = config.GetValue <string>("StratFileDropDir") ?? Path.GetTempPath();
                JobsControllerUtils jobsControllerUtils           = serviceProvider.GetService <JobsControllerUtils>();
                JobGroupsControllerUtils jobGroupsControllerUtils = serviceProvider.GetService <JobGroupsControllerUtils>();

                return(new CreateJobControllerUtils(stratFilesUploadDirectory, jobsControllerUtils, jobGroupsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                CreateJobControllerUtils createJobControllerUtils = serviceProvider.GetService <CreateJobControllerUtils>();
                string excelJobFilesUploadDirectory = config.GetValue <string>("ExcelJobFileDropDir") ?? Path.GetTempPath();
                string stratFilesUploadDirectory    = config.GetValue <string>("StratFileDropDir") ?? Path.GetTempPath();

                return(new CreateJobExcelControllerUtils(createJobControllerUtils, excelJobFilesUploadDirectory, stratFilesUploadDirectory));
            });

            services.AddSingleton((serviceProvider) =>
            {
                JobsControllerUtils jobsControllerUtils = serviceProvider.GetService <JobsControllerUtils>();

                return(new WorkersControllerUtils(jobsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                JobsControllerUtils jobsControllerUtils = serviceProvider.GetService <JobsControllerUtils>();

                return(new AlertsControllerUtils(jobsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                JobsControllerUtils jobsControllerUtils = serviceProvider.GetService <JobsControllerUtils>();

                return(new OrdersControllerUtils(jobsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                JobsControllerUtils jobsControllerUtils = serviceProvider.GetService <JobsControllerUtils>();

                return(new PositionsControllerUtils(jobsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                JobsControllerUtils jobsControllerUtils           = serviceProvider.GetService <JobsControllerUtils>();
                JobGroupsControllerUtils jobGroupsControllerUtils = serviceProvider.GetService <JobGroupsControllerUtils>();

                return(new TradesControllerUtils(jobsControllerUtils, jobGroupsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                JobsControllerUtils jobsControllerUtils = serviceProvider.GetService <JobsControllerUtils>();

                return(new StatusesControllerUtils(jobsControllerUtils));
            });

            services.AddSingleton((serviceProvider) =>
            {
                string serverName = config.GetValue <string>("ServerName") ?? "BacktesterServer";

                return(new InfoControllerUtils(serverName, DateTimeOffset.Now));
            });
        }