public override async Task <ExportResponse> Handle(Query request, CancellationToken cancellationToken) => new ExportResponse( CSVExport.GenerateFilename("cryptos"), CSVExport.Generate( (await _storage.GetCryptos(request.UserId)) ) );
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))); }
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))); }
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)))); }
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); }
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); }
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))); }
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); }
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)); }
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))); }
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))); }
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); }