public ActionResult ValidateOrder(OrderTicketsFormViewModel OrderTicketsFormViewModel, List <TicketFormViewModel> ticketFormViewModels) { if (!ModelState.IsValid) { //The refresh interval is used for preventing the user refresh the order page. Here is initialized ia a valid state. TempData["RefreshInterval"] = -1; Flight flight = Session["flight"] as Flight; var ticketContainer = InitializeTicketContainer(ticketFormViewModels); var viewModel = new OrderTicketFormContainerViewModel(OrderTicketsFormViewModel, ticketContainer, flight); return(View("Create", viewModel)); } string userId = null; if (User.Identity.IsAuthenticated) { userId = User.Identity.GetUserId(); } var tickets = new List <Ticket>(); ticketFormViewModels.ForEach(tv => tickets.Add(new Ticket(tv))); var ticketOrders = new List <TicketOrder>(); tickets.ForEach(t => ticketOrders.Add(new TicketOrder(t, OrderTicketsFormViewModel.OrderId))); var order = new Models.Order(OrderTicketsFormViewModel.BuyerEmail, userId, ticketOrders); Session["order"] = order; Session["tickets"] = tickets; return(RedirectToAction("PaymentWithPaypal")); }
public ActionResult Create() { int refreshInterval = Convert.ToInt32(TempData["RefreshInterval"]); ViewBag.RefreshInterval = refreshInterval + 1; if (Session["flight"] == null || Session["flightSeats"] == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } Flight flight = Session["flight"] as Flight; List <FlightSeat> flightSeats = Session["flightSeats"] as List <FlightSeat>; //For holding the seats when user refreshes the view of the form foreach (var flightSeat in flightSeats) { if (flightSeat.IsAvailable) { flightSeat.HoldSeat(); flightSeatRepository.ModifySeats(flightSeat); } } unitOfWork.Complete(); var flightSeatIds = flightSeats.Select(fs => fs.FlightSeatId).ToArray(); var flightService = new FlightHubService(); flightService.FlightSeatsClosed(flightSeatIds); var ticketViewModels = new List <TicketFormViewModel>(); flightSeats.ForEach(fs => ticketViewModels.Add(new TicketFormViewModel(flight.FlightId, fs))); var ticketContainer = InitializeTicketContainer(ticketViewModels); var orderViewModel = new OrderTicketsFormViewModel(null, null, ticketContainer.GetTotalPrice()); var viewModel = new OrderTicketFormContainerViewModel(orderViewModel, ticketContainer, flight); return(View(viewModel)); }