Example #1
0
        public void DbIsCreatedSuccessfully()
        {
            var options = new DbContextOptionsBuilder <QpasDbContext>()
                          .UseSqlite("Data Source=:memory:;")
                          .Options;

            using (var ctx = new QpasDbContext(options))
            {
                ctx.Database.OpenConnection();
                ctx.Database.Migrate();
                Seed.DoSeed(ctx);
                ctx.Database.CloseConnection();
            }
        }
Example #2
0
        /// <summary>
        /// Simply drops the database.
        /// </summary>
        private async void ClearDataBtn_Click(object sender, RoutedEventArgs e)
        {
            MessageDialogResult res = await this.ShowMessageAsync(
                "Are you sure?",
                "You are about to delete all the data, are you sure?",
                MessageDialogStyle.AffirmativeAndNegative);

            if (res == MessageDialogResult.Negative)
            {
                return;
            }

            MessageDialogResult res2 = await this.ShowMessageAsync(
                "Are you absolutely sure?",
                "Checking twice to be safe, are you sure you want to delete everything?",
                MessageDialogStyle.AffirmativeAndNegative);

            if (res2 == MessageDialogResult.Negative)
            {
                return;
            }

            try
            {
                var dbContext = new QpasDbContext();
                dbContext.Database.ExecuteSqlRaw(@"
                        PRAGMA writable_schema = 1;
                        delete from sqlite_master where type in ('table', 'index', 'trigger');
                        PRAGMA writable_schema = 0;
                        ");
                System.Windows.Application.Current.Shutdown();
            }
            catch (Exception ex)
            {
                this.ShowMessageAsync(
                    "Error",
                    "Could not clear data. Error: " + ex.Message).Forget();
                var logger = LogManager.GetCurrentClassLogger();
                logger.Log(LogLevel.Error, ex);
                return;
            }

            await this.ShowMessageAsync(
                "Done",
                "Data deleted. The application will now shut down.");

            Application.Current.Shutdown();
        }
Example #3
0
        public void SetUp()
        {
            _inst = new Instrument {
                ID = 1, Multiplier = 1, AssetCategory = AssetClass.Stock
            };

            _t = new Trade
            {
                Orders           = new List <Order>(),
                CashTransactions = new List <CashTransaction>(),
                FXTransactions   = new List <FXTransaction>()
            };

            _dsMock = new Mock <IDataSourcer>();

            _dsMock.Setup(x => x.GetData(It.IsAny <Instrument>(), It.IsAny <DateTime>(), It.IsAny <DateTime>(), It.IsAny <QDMS.BarSize>()))
            .Returns <Instrument, DateTime, DateTime, QDMS.BarSize>((a, b, c, d) => Task.FromResult(GenerateData(b, c)));

            _contextMock = new Mock <IQpasDbContext>();

            var dbContextOptions = new DbContextOptionsBuilder <QpasDbContext>()
                                   .UseInMemoryDatabase(databaseName: "qpasdb")
                                   .Options;

            _dbContext = new QpasDbContext(dbContextOptions);

            var equitySummaries = new List <EquitySummary>
            {
                new EquitySummary
                {
                    Date  = new DateTime(2000, 1, 1),
                    Total = 10000
                }
            };

            _dbContext.EquitySummaries.AddRange(equitySummaries);
            _contextMock.SetupGet(x => x.EquitySummaries).Returns(_dbContext.EquitySummaries);

            var factory = new DbContextFactory(() => _contextMock.Object);

            var settings = new AppSettings()
            {
                OptionsCapitalUsageMultiplier = 0.1m
            };

            _repository = new TradesRepository(factory, _dsMock.Object, settings);
        }
Example #4
0
        public void SetUp()
        {
            _dbContextOptions = new DbContextOptionsBuilder <QpasDbContext>()
                                .UseInMemoryDatabase(databaseName: "qpastestdb")
                                .Options;

            _externalSourceMock = new Mock <IExternalDataSource>();
            _contextMock        = new Mock <IQpasDbContext>();

            _dbContext = new QpasDbContext(_dbContextOptions);

            _contextMock.Setup(x => x.PriorPositions).Returns(_dbContext.PriorPositions);
            _contextMock.Setup(x => x.FXRates).Returns(_dbContext.FXRates);
            _contextMock.Setup(x => x.Currencies).Returns(_dbContext.Currencies);
            _contextMock.Setup(x => x.PriorPositions).Returns(_dbContext.PriorPositions);

            _contextFactory = new DbContextFactory(() => _contextMock.Object);
            _data           = new DataContainer();

            _datasourcer = new DataSourcer(_contextFactory, _externalSourceMock.Object, _data, true);
        }
        private void NextBtn_Click(object sender, RoutedEventArgs e)
        {
            string accountId = AccountIdTextBox.Text;

            if (String.IsNullOrEmpty(accountId))
            {
                MessageBox.Show("Cannot use an empty account.");
                return;
            }

            using (var context = new QpasDbContext())
            {
                //check if this account exists, otherwise add it
                Account account;
                if (context.Accounts.Any(x => x.AccountId == accountId))
                {
                    account = context.Accounts.First(x => x.AccountId == accountId);
                }
                else
                {
                    account = new Account {
                        AccountId = accountId
                    };
                    context.Accounts.Add(account);
                    context.SaveChanges();
                }

                //Now that we have the account, set it everywhere

                foreach (EquitySummary es in context.EquitySummaries)
                {
                    es.Account = account;
                }

                foreach (DividendAccrual da in context.DividendAccruals)
                {
                    da.Account = account;
                }

                foreach (Order o in context.Orders)
                {
                    o.Account = account;
                }

                foreach (Execution ex in context.Executions)
                {
                    ex.Account = account;
                }

                foreach (FXTransaction fxt in context.FXTransactions)
                {
                    fxt.Account = account;
                }

                foreach (FXPosition fxp in context.FXPositions)
                {
                    fxp.Account = account;
                }

                foreach (CashTransaction ct in context.CashTransactions)
                {
                    ct.Account = account;
                }

                foreach (OpenPosition op in context.OpenPositions)
                {
                    op.Account = account;
                }

                foreach (PriorPosition pp in context.PriorPositions)
                {
                    pp.Account = account;
                }

                context.SaveChanges();
            }
            _appliedChanges = true;
            MessageBox.Show("Success!");
            Close();
        }