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")); }
public DatabaseContext() { Concerts = new ConcertContext(); Tickets = new ConcertTicketContext(); Customers = new CustomerContext(); Purchase = new PurchaseTicketsModel(); Venues = new VenueContext(); }
public DatabaseContext() { Concerts = new ConcertContext(); Tickets = new ConcertTicketContext(); Customers = new CustomerContext(); Purchase = new PurchaseTicketsModel(); Venues = new VenueContext(); Discount = new DiscountContext(); SeatSection = new SeatSectionContext(); AllSeats = new AllSeatsContext(); }
public List <ConcertTicket> WriteNewTicketToDb(PurchaseTicketsModel model) { using (var insertConnection = WingtipTicketApp.CreateTenantConnectionDatabase1()) { insertConnection.Open(); for (var i = 0; i < model.Quantity; i++) { var ticketName = String.Format("Ticket ({0} of {1}) for user {2} to concert-{3}", (i + 1), model.Quantity, model.CustomerName, model.ConcertId); var insertQuery = String.Format(@"INSERT INTO Tickets (CustomerId, Name, TicketLevelId, ConcertId, PurchaseDate, SeatNumber) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')", model.CustomerId, ticketName, model.SeatSectionId, model.ConcertId, DateTime.Now, model.Seats[i]); using (var insertCommand = new SqlCommand(insertQuery, insertConnection)) { insertCommand.ExecuteNonQuery(); } } insertConnection.Close(); insertConnection.Dispose(); } return(ReturnPurchasedTicketsByConcertId(model.CustomerId, model.ConcertId)); }
public ActionResult PurchaseTicketsWithCreditCard(FindSeatsViewModel viewModel) { // Check Information if (!ModelState.IsValid) { return(RedirectToAction("Index", "Home")); } var domainModels = new List <PurchaseTicketsModel>(); var seats = viewModel.Purchase.Seats.Replace(" ", "").Split(',').ToList(); var seatSectionId = viewModel.Purchase.SeatSectionId; var sectionName = _seatSectionRepository.GetSeatSectionDetails(seatSectionId).Description; //get concert date to calculate number of days prior concert var concertId = viewModel.Purchase.ConcertId; var selectedConcert = _concertRepository.GetConcertById(concertId); var concertDate = selectedConcert.ConcertDate; var daysToConcert = (concertDate - DateTime.Now).Days; foreach (var seat in seats) { // Map to Domain Model var domainModel = new PurchaseTicketsModel() { ConcertId = concertId, SeatSectionId = seatSectionId, Quantity = viewModel.Purchase.Quantity, Seat = seat, CustomerId = ((CustomerModel)Session["SessionUser"]).CustomerId, CustomerName = ((CustomerModel)Session["SessionUser"]).FirstName, TMinusDaysToConcert = daysToConcert }; //verify if seat has discount var discountedSeats = _discountRepository.GetDiscountedSeat(seatSectionId, Convert.ToInt32(seat)); //there is discount on this seat if (discountedSeats.Count > 0) { var discountSeatAndSeatSection = discountedSeats.First(); domainModel.Discount = discountSeatAndSeatSection.Discount; } domainModels.Add(domainModel); //update allseats table var fullSeatDescription = sectionName + " Seat " + seat; int tminusDaysToConcert = 0; if (daysToConcert >= 0 && daysToConcert <= 5) { tminusDaysToConcert = 5; } if (daysToConcert > 5 && daysToConcert <= 10) { tminusDaysToConcert = 10; } if (daysToConcert > 10 && daysToConcert <= 15) { tminusDaysToConcert = 15; } if (daysToConcert > 15 && daysToConcert <= 20) { tminusDaysToConcert = 20; } if (daysToConcert > 20 && daysToConcert <= 25) { tminusDaysToConcert = 25; } //update only when number of days is less than 25 days as only 0-25 days is required for probability of sales graph if (daysToConcert <= 25) { var seatDetails = _allSeatsRepository.GetSeatDetails(fullSeatDescription, tminusDaysToConcert); var count = 0; if (domainModel.Discount == 0) { count = seatDetails.DiscountZero; count++; } else if (domainModel.Discount == 10) { count = seatDetails.DiscountTen; count++; } else if (domainModel.Discount == 20) { count = seatDetails.DiscountTwenty; count++; } else if (domainModel.Discount == 30) { count = seatDetails.DiscountThirty; count++; } _allSeatsRepository.UpdateSeatDetails(Convert.ToInt32(domainModel.Discount), seatDetails.SeatDescription, domainModel.TMinusDaysToConcert, count); } } // Purchase Tickets and Display Result var ticketsPurchased = _ticketRepository.WriteNewTicketToDb(domainModels); 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")); }
public List <ConcertTicket> WriteNewTicketToDb(PurchaseTicketsModel model) { return(Context.Tickets.WriteNewTicketToDb(model)); }