// GET: Concerts/BuyTickets/5
        public async Task <IActionResult> BuyTickets(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var maybeConcert = await _concertStore.Get(id);

            if (maybeConcert.HasValue)
            {
                return(View(maybeConcert.Value));
            }

            return(NotFound());
        }
        public async Task Consume(ConsumeContext <ConcertCreatedEvent> context)
        {
            if (await _idempotencyService.IsMessageAlreadyProcessed(context.Message.EventId))
            {
                return;
            }

            var concert = await _concertsStore.Get(context.Message.ConcertId);

            await concert.Match(
                Some : null,
                None : () => _concertsStore.AddConcert(
                    new ConcertToBuy
            {
                Id   = context.Message.ConcertId,
                Name = context.Message.Name,
            })
                );
        }