コード例 #1
0
 public override async Task <ExportResponse> Handle(Query request, CancellationToken cancellationToken) =>
 new ExportResponse(
     CSVExport.GenerateFilename("cryptos"),
     CSVExport.Generate(
         (await _storage.GetCryptos(request.UserId))
         )
     );
コード例 #2
0
ファイル: Export.cs プロジェクト: DT021/stock-analysis
            public override async Task <ExportResponse> Handle(Query query, CancellationToken cancellationToken)
            {
                var notes = await _storage.GetNotes(query.UserId);

                var filename = CSVExport.GenerateFilename("notes");

                return(new ExportResponse(filename, CSVExport.Generate(notes)));
            }
コード例 #3
0
            public override async Task <ExportResponse> Handle(Query request, CancellationToken cancellationToken)
            {
                var stocks = await _storage.GetStocks(request.UserId);

                var filename = CSVExport.GenerateFilename("stocks");

                return(new ExportResponse(filename, CSVExport.Generate(stocks)));
            }
コード例 #4
0
ファイル: Export.cs プロジェクト: laimis/stock-analysis
            public override async Task <ExportResponse> Handle(Query request, CancellationToken cancellationToken)
            {
                var alerts = await _alertsStorage.GetAlerts(request.UserId);

                var filename = CSVExport.GenerateFilename("alerts");

                return(new ExportResponse(filename, CSVExport.Generate(alerts.Where(a => a.PricePoints.Count > 0))));
            }
コード例 #5
0
        public void ExportNotes()
        {
            var note = new Note(Guid.NewGuid(), "my note", "stockticker", DateTimeOffset.UtcNow);

            var report = CSVExport.Generate(new[] { note });

            Assert.Contains(CSVExport.NOTE_HEADER, report);
            Assert.Contains(note.State.RelatedToTicker, report);
            Assert.Contains("my note", report);
        }
コード例 #6
0
        public void ExportStocksHeader()
        {
            var stock = new OwnedStock("tsla", Guid.NewGuid());

            stock.Purchase(1, 100, DateTime.UtcNow, "some note");

            var report = CSVExport.Generate(new[] { stock });

            Assert.Contains(CSVExport.STOCK_HEADER, report);
            Assert.Contains("TSLA", report);
        }
コード例 #7
0
ファイル: ExportOpen.cs プロジェクト: laimis/stock-analysis
            public override async Task <ExportResponse> Handle(Query request, CancellationToken cancellationToken)
            {
                var stocks = await _storage.GetStocks(request.UserId);

                var open = stocks
                           .Where(s => s.State.Owned > 0)
                           .Select(s => new OwnedStockView(s))
                           .OrderByDescending(s => s.Cost);

                var filename = CSVExport.GenerateFilename("openstocks");

                return(new ExportResponse(filename, CSVExport.Generate(open)));
            }
コード例 #8
0
        public void ExportCryptos()
        {
            var crypto = new OwnedCrypto("btc", Guid.NewGuid());

            crypto.Purchase(quantity: 1.2m, dollarAmountSpent: 200, date: DateTimeOffset.UtcNow);
            crypto.Sell(quantity: 0.2m, dollarAmountReceived: 100, date: DateTimeOffset.UtcNow);

            var report = CSVExport.Generate(new[] { crypto });

            Assert.Contains(CSVExport.CRYPTOS_HEADER, report);
            Assert.Contains("BTC", report);
            Assert.Contains("buy", report);
            Assert.Contains("sell", report);
        }
コード例 #9
0
ファイル: ExportClosed.cs プロジェクト: laimis/stock-analysis
            public override async Task<ExportResponse> Handle(Query request, CancellationToken cancellationToken)
            {
                var stocks = await _storage.GetStocks(request.UserId);

                var closedTransactions = stocks
                    .SelectMany(s => s.State.Transactions.Where(t => t.IsPL))
                    .Select(t => new StockTransactionView(t))
                    .OrderByDescending(p => p.Date)
                    .ToList();

                var filename = CSVExport.GenerateFilename("closedstocks");

                return new ExportResponse(filename, CSVExport.Generate(closedTransactions));
            }
コード例 #10
0
ファイル: ExportTrades.cs プロジェクト: laimis/stock-analysis
            public override async Task <ExportResponse> Handle(Query request, CancellationToken cancellationToken)
            {
                var stocks = await _storage.GetStocks(request.UserId);

                var trades = stocks
                             .SelectMany(s => s.State.PositionInstances)
                             .Where(p => p.IsClosed)
                             .Select(p => new StockTradeView(p))
                             .OrderByDescending(p => p.Closed)
                             .ToList();

                var filename = CSVExport.GenerateFilename("closedstocks");

                return(new ExportResponse(filename, CSVExport.Generate(trades)));
            }
コード例 #11
0
ファイル: Users.cs プロジェクト: laimis/stock-analysis
            public async Task <ExportResponse> Handle(Users.Export request, CancellationToken cancellationToken)
            {
                var pairs = await _storage.GetUserEmailIdPairs();

                var users = new List <User>();

                foreach (var(email, userId) in pairs)
                {
                    var guid = new System.Guid(userId);
                    var user = await _storage.GetUser(guid);

                    users.Add(user);
                }

                var filename = CSVExport.GenerateFilename("users");

                return(new ExportResponse(filename, CSVExport.Generate(users)));
            }
コード例 #12
0
        public void ExportOptionsHeader()
        {
            var option = new OwnedOption(
                "tlsa",
                2.5m,
                OptionType.CALL,
                DateTimeOffset.UtcNow.AddDays(1),
                Guid.NewGuid());

            option.Sell(1, 20, DateTimeOffset.UtcNow, "some note");

            var report = CSVExport.Generate(new[] { option });

            Assert.Contains(CSVExport.OPTION_HEADER, report);

            Assert.Contains("TLSA", report);
            Assert.Contains("CALL", report);
            Assert.Contains("2.5", report);
        }