private static void Main(string[] args) { //Initialize & erase database Initialize.Start(); var logger = Initialize.GetLogger(); PerformanceStats.Reset(); logger.Debug("Database erased ..."); logger.Debug("Initialized binding modules, automapper,infrastructure ..."); //Import stocks logger.Debug("Import stocks ..."); var stock = new ImportStock(); stock.Start(); logger.Debug("... finished importing stocks"); //Import quotations logger.Debug("Import quotations ..."); var quotations = new ImportQuotations(); quotations.StockItems = stock.Items; quotations.Start(); logger.Debug("... finished importing quotations"); //Download quotations logger.Debug("Download quotations ..."); var downloadQuotations = new DownloadQuotations(); downloadQuotations.Start(); logger.Debug("... finished importing quotations"); //Import feedbacks logger.Debug("Import feedbacks ..."); var feedback = new ImportFeedback(); feedback.Start(); logger.Debug("... finished importing feedbacks"); //Import strategies logger.Debug("Import strategies ..."); var strategy = new ImportStrategy(); strategy.Start(); logger.Debug("... finished importing strategies"); //Import calculations logger.Debug("Import calculations ..."); var calculation = new ImportCalculations(); calculation.Start(); logger.Debug("... finished importing calculations"); //Import transactions logger.Debug("Import transactions ..."); var transaction = new ImportTransaction { FeedbackItems = feedback.Items, StockItems = stock.Items, StrategyItems = strategy.Items }; transaction.Start(); logger.Debug("... finished importing transactions"); //Testing queries logger.Debug("Creating test queries ..."); var testing = new TestQueries(); testing.Start(); logger.Debug("... finished testing"); //Testing performance logger.Debug("Testing statistics ..."); var stats = new TestPerformance(transaction.Items); stats.Start(); logger.Debug("... finished testing statistics"); //Testing open positions logger.Debug("Testing open positions ..."); var openPositions = new TestOpenPositions(stock.Items, transaction.Items); openPositions.Start(); logger.Debug("... finished testing statistics"); //Statistics logger.Debug("Event Sourcing Performance"); PerformanceStats.WriteToConsole(); logger.Debug("Finished...Press any key to close program"); Console.ReadKey(); //Stopping everything Initialize.Stop(); }
public async Task <IActionResult> Migrate(int id) { var result = string.Empty; var stock = new ImportStock(); var feedback = new ImportFeedback(); var strategy = new ImportStrategy(); var transaction = new ImportTransaction(); var quotationJob = _jobs.FirstOrDefault(j => j.Name == "Update Quotations"); //TODO: Application is not able to handle multithreading properly, we need to make sure nothing else is importing for (var numberOfTry = 0; numberOfTry < 10; numberOfTry++) { try { //TODO: Check all jobs if (quotationJob?.Status != ScheduledJobStatus.Running) { break; } } catch { // ignored } await Task.Delay(10000); } switch (id) { case 0: //Erase Database { PerformanceStats.Reset(); _modelRepositoryDeletionCoordinator.DeleteAll(); result = "Deleted data from current application database"; break; } case 1: //Import stocks { stock.Start(); result = "Imported stocks"; new MigrationItemPersister <StockDto>("stock").Set(stock.Items); new MigrationItemPersister <StockDto>("dividendstock").Set(stock.DividendItems); break; } case 2: //Import quotations { var quotations = new ImportQuotations(); quotations.StockItems = new MigrationItemPersister <StockDto>("stock").Get(); quotations.Start(); result = "Imported quotations"; break; } case 3: //Download quotations { var downloadQuotations = new DownloadQuotations(); downloadQuotations.Start(); result = "Downloaded quotations"; break; } case 4: //Import feedbacks { feedback.Start(); result = "Imported feedbacks"; new MigrationItemPersister <FeedbackDto>("feedback").Set(feedback.Items); break; } case 5: //Import strategies { strategy.Start(); result = "Imported strategies"; new MigrationItemPersister <StrategyDto>("strategy").Set(strategy.Items); break; } case 6: //Import calculations { var calculation = new ImportCalculations(); calculation.Start(); result = "Imported calculations"; break; } case 7: //Import transactions { transaction.FeedbackItems = new MigrationItemPersister <FeedbackDto>("feedback").Get(); transaction.StockItems = new MigrationItemPersister <StockDto>("stock").Get(); transaction.StrategyItems = new MigrationItemPersister <StrategyDto>("strategy").Get(); transaction.DividendStockItems = new MigrationItemPersister <StockDto>("dividendstock").Get(); transaction.Start(); result = "Imported transactions"; new MigrationItemPersister <ITransactionDto>("transaction").Set(transaction.Items); break; } case 8: //Testing queries { var testing = new TestQueries(); testing.Start(); result = "Tested results with queries"; break; } case 9: //Testing performance { var stats = new TestPerformance(new MigrationItemPersister <ITransactionDto>("transaction").Get()); stats.Start(); result = "Finished testing statistics"; break; } case 10: //Testing open positions { var openPositions = new TestOpenPositions(new MigrationItemPersister <StockDto>("stock").Get(), new MigrationItemPersister <ITransactionDto>("transaction").Get()); openPositions.Start(); result = "Finished testing open positions"; break; } case 11: //Statistics { PerformanceStats.WriteToConsole(); result = "Flushed performance statistics"; break; } default: { break; } } return(Json(result)); }