public FindSeatsViewModel GetFindSeatsData(int concertId) { using (var context = new WingTipTicketsEntities(WingtipTicketApp.GetTenantConnectionString())) { var concert = context.Concerts.First(c => c.ConcertId == concertId); var venue = context.Venues.First(v => v.VenueId == concert.VenueId); var performer = context.Performers.First(p => p.PerformerId == concert.PerformerId); var seatSections = context.TicketLevels.Where(t => t.ConcertId == concertId).ToList(); // Map to ViewModel var viewModel = new FindSeatsViewModel() { // Main Models Concert = new FindSeatsViewModel.ConcertViewModel() { ConcertId = concert.ConcertId, ConcertName = concert.ConcertName, ConcertDate = (DateTime)concert.ConcertDate, VenueId = venue.VenueId, VenueName = venue.VenueName, PerformerName = performer.ShortName }, // Collections SeatSections = new SelectList(seatSections, "TicketLevelId", "Description", null), }; return viewModel; } }
public ActionResult PurchaseTicketsWithCreditCard(FindSeatsViewModel viewModel) { // Check Information if (!ModelState.IsValid) { return RedirectToAction("Index", "Home"); } // Map to Domain Model var domainModel = new PurchaseTicketsModel() { ConcertId = viewModel.Purchase.ConcertId, SeatSectionId = viewModel.Purchase.SeatSectionId, Quantity = viewModel.Purchase.Quantity, Seats = viewModel.Purchase.Seats.Replace(" ", "").Split(',').ToList(), CustomerId = ((CustomerModel)Session["SessionUser"]).CustomerId, CustomerName = ((CustomerModel)Session["SessionUser"]).FirstName }; // Purchase Tickets and Display Result var ticketsPurchased = _ticketRepository.WriteNewTicketToDb(domainModel); DisplayMessage(ticketsPurchased != null ? string.Format("Successfully purchased tickets. You now have {0} tickets for this concert. Confirmation # {1}", ticketsPurchased.Count, ticketsPurchased[0].TicketId) : "Failed to purchase tickets."); return RedirectToAction("Index", "Home"); }