示例#1
0
        public Task AddPurchasedTicketsAsync(PurchaseRequest request)
        {
            foreach (var ticket in request.DesiredTickets)
            {
                _db.Tickets.Add(ticket);
            }

            return _db.SaveChangesAsync();
        }
示例#2
0
        public async Task MakeTicketRequest(Guid showId, int ticketCount)
        {
            var connectionString = ConfigurationManager.AppSettings["ehConnectionString"];
            var eventHubName = ConfigurationManager.AppSettings["ehName"];

            try
            {
                var eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, eventHubName);

                var tix = new List<Ticket>();

                for (var i = 0; i < ticketCount; i++)
                {
                    tix.Add(new Ticket
                    {
                        Id = Guid.NewGuid(),
                        ShowId = showId
                    });
                }

                var request = new PurchaseRequest
                {
                    Id = Guid.NewGuid(),
                    Timestamp = DateTimeOffset.UtcNow,
                    DesiredTickets = tix.ToArray()
                };

                var json = JsonConvert.SerializeObject(request);

                var data = new EventData(Encoding.UTF8.GetBytes(json));

                data.PartitionKey = "NTM.UI";
                data.Properties["correlationId"] = Context.ConnectionId;    // preserve this so we can send a response later

                await eventHubClient.SendAsync(data);

                Clients.Caller.orderPlaced(new
                {
                    id = request.Id,
                    ticketcount = ticketCount
                });
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }