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 override async Task <object> Handle(Command cmd, CancellationToken cancellationToken) { var alert = await _alertsStorage.GetAlert(cmd.Ticker, cmd.UserId); if (alert == null) { alert = new Alert(cmd.Ticker, cmd.UserId); } alert.RemovePricePoint(cmd.Id.Value); await _alertsStorage.Save(alert); return(new { ticker = alert.State.Ticker.Value, points = alert.State.PricePoints }); }
public override async Task <object> Handle(Command cmd, CancellationToken cancellationToken) { var alert = await _alertsStorage.GetAlert(cmd.Ticker, cmd.UserId); if (alert == null) { alert = new Alert(cmd.Ticker, cmd.UserId); } var added = alert.AddPricePoint(cmd.Description, cmd.Value); if (!added) { throw new InvalidOperationException("Alert for the price point already exists"); } await _alertsStorage.Save(alert); return(new { ticker = alert.State.Ticker.Value, points = alert.State.PricePoints }); }