Exemplo n.º 1
0
            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);
            }