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