public override async Task <object> Handle(Command cmd, CancellationToken cancellationToken) { var owned = await _storage.GetStocks(cmd.UserId); var alerts = await _alertsStorage.GetAlerts(cmd.UserId); foreach (var o in owned) { if (o.State.Owned == 0) { continue; } var exists = alerts.Any(a => a.State.Ticker == o.State.Ticker); if (!exists) { var a = new Alert(o.State.Ticker, cmd.UserId); a.AddPricePoint("Migrated average cost", o.State.AverageCost); await _alertsStorage.Save(a); } } return(new object()); }
public async Task <object> Handle(Users.Query cmd, CancellationToken cancellationToken) { var users = await _storage.GetUserEmailIdPairs(); var result = new List <UserView>(); foreach (var(email, userId) in users) { var guid = new System.Guid(userId); var user = await _storage.GetUser(guid); var options = await _portfolio.GetOwnedOptions(guid); var notes = await _portfolio.GetNotes(guid); var stocks = await _portfolio.GetStocks(guid); var alerts = await _alerts.GetAlerts(guid); var u = new UserView(user, stocks, options, notes, alerts); result.Add(u); } return(result.OrderByDescending(u => u.LastLogin)); }
public override async Task <object> Handle(Query request, CancellationToken cancellationToken) { var alerts = await _alertsStorage.GetAlerts(request.UserId); var list = new List <object>(); foreach (var a in alerts.OrderByDescending(a => a.PricePoints.Any(p => _container.HasTriggered(p))).ThenBy(a => a.Ticker)) { if (a.PricePoints.Count == 0) { continue; } var price = await _stock.GetPrice(a.Ticker); list.Add(new { currentPrice = price.Success.Amount, ticker = a.State.Ticker.Value, points = a.State.PricePoints.Select(pp => new { pp.Id, pp.Value, pp.Description, triggered = _container.HasTriggered(pp) }), }); } return(list); }
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)))); }