/// <summary> /// After ticket registration, immediately verify if it's a lottery ticket. /// </summary> public async Task ReportOnLottery(MovieTicket ticket, string connectionId) { var movieId = Guid.Parse(ticket.MovieId); var theaterId = Guid.Parse(ticket.TheaterId); var movie = db.Query <Movie>() .Where(s => s.Id == movieId) .Single(); if (movie.TicketType == TicketType.DrawingTicket) { var theater = TheatersContext.GetTheaters().Single(s => s.Id == theaterId); var message = new { Theater = theater.Name, MovieTitle = movie.Title, Time = ticket.Time, NumberOfTickets = ticket.NumberOfTickets, DrawingDate = DateTime.Now.AddDays(14).ToString("dddd, dd MMMM", CultureInfo.InvariantCulture) }; logger.LogInformation("Sending OrderedLotteryTicket", message); await hub.Clients.Client(connectionId).SendAsync("OrderedLotteryTicket", message); } }
public async Task Handle(OrderSubmission message, IMessageHandlerContext context) { if (!context.MessageHeaders.TryGetValue("SignalRConnectionId", out var userConnectionId)) { logger.LogError("Could not find SignalR ConnectionId from message headers."); return; } var movie = db.Query <Movie>().Where(s => s.Id == message.Movie).SingleOrDefault(); var theater = TheatersContext.GetTheaters().Single(s => s.Id == message.Theater); if (movie.TicketType == TicketType.DrawingTicket) { return; } var ticket = new { TheaterId = theater.Id.ToString(), Theater = theater.Name, MovieId = movie.Id.ToString(), MovieTitle = movie.Title, Time = message.MovieTime, NumberOfTickets = message.NumberOfTickets }; await ticketHubContext.Clients.Client(userConnectionId).SendAsync("OrderedRegularTicket", ticket); }
public Task Handle(OrderSubmission message, IMessageHandlerContext context) { var movie = db.Query <Movie>().Where(s => s.Id == message.Movie).SingleOrDefault(); var theater = TheatersContext.GetTheaters().Single(s => s.Id == message.Theater); var screenMessage = "Thank you for your order.<br /><br />"; screenMessage += "<table>"; screenMessage += $"<tr><td><b>Movie</b></td><td>: {movie.Title}</td></tr>"; screenMessage += $"<tr><td><b>Theater</b></td><td>: {theater.Name}</td></tr>"; screenMessage += $"<tr><td><b>Time</b></td><td>: {message.MovieTime}</td></tr>"; screenMessage += $"<tr><td><b>Tickets</b></td><td>: {message.NumberOfTickets}</td></tr>"; screenMessage += "</tr></table><br /><br />"; if (message.Approved) { screenMessage += $"Your order will soon arrive in your email."; } else { // For simplicity, it's always 2 weeks in advance. screenMessage += $"On <b>{DateTime.Now.AddDays(14):M}</b>, you'll receive an email and hear if you have been selected."; } var returnMessage = new { MovieTitle = movie.Title }; return(ticketHubContext.Clients.All.SendAsync("OrderSubmission", screenMessage)); }
public ActionResult Movie(string movieurl) { var movie = db.Query <Movie>() .Where(s => s.UrlTitle == movieurl) .SingleOrDefault(); var vm = new MovieViewModel(); vm.Movie = movie; vm.Theaters = TheatersContext.GetTheaters(); return(View(vm)); }