public void GivenTheSelectedOrderItems(Table table) { conferenceInfo = ScenarioContext.Current.Get<ConferenceInfo>(); registrationController = RegistrationHelper.GetRegistrationController(conferenceInfo.Slug); orderViewModel = RegistrationHelper.GetModel<OrderViewModel>(registrationController.StartRegistration().Result); Assert.NotNull(orderViewModel); registration = new RegisterToConference { ConferenceId = conferenceInfo.Id, OrderId = orderViewModel.OrderId }; foreach (var row in table.Rows) { var orderItemViewModel = orderViewModel.Items.FirstOrDefault(s => s.SeatType.Description == row["seat type"]); Assert.NotNull(orderItemViewModel); int qt; if (!row.ContainsKey("quantity") || !Int32.TryParse(row["quantity"], out qt)) qt = orderItemViewModel.SeatType.Quantity; registration.Seats.Add(new SeatQuantity(orderItemViewModel.SeatType.Id, qt)); } // Store for sharing between steps implementations ScenarioContext.Current.Set(registration); ScenarioContext.Current.Set(registrationController.ConferenceAlias); }
private OrderViewModel CreateViewModel() { var seatTypes = this.ConferenceDao.GetPublishedSeatTypes(this.ConferenceAlias.Id); var viewModel = new OrderViewModel { ConferenceId = this.ConferenceAlias.Id, ConferenceCode = this.ConferenceAlias.Code, ConferenceName = this.ConferenceAlias.Name, Items = seatTypes.Select( s => new OrderItemViewModel { SeatType = s, OrderItem = new DraftOrderItem(s.Id, 0), AvailableQuantityForOrder = Math.Max(s.AvailableQuantity, 0), MaxSelectionQuantity = Math.Max(Math.Min(s.AvailableQuantity, 20), 0) }).ToList(), }; return viewModel; }
private static void UpdateViewModel(OrderViewModel viewModel, DraftOrder order) { viewModel.OrderId = order.OrderId; viewModel.OrderVersion = order.OrderVersion; viewModel.ReservationExpirationDate = order.ReservationExpirationDate.ToEpochMilliseconds(); // TODO check DTO matches view model foreach (var line in order.Lines) { var seat = viewModel.Items.First(s => s.SeatType.Id == line.SeatType); seat.OrderItem = line; seat.AvailableQuantityForOrder = seat.AvailableQuantityForOrder + line.ReservedSeats; seat.MaxSelectionQuantity = Math.Min(seat.AvailableQuantityForOrder, 20); seat.PartiallyFulfilled = line.RequestedSeats > line.ReservedSeats; } }
private OrderViewModel CreateViewModel() { var seatTypes = this.ConferenceDao.GetPublishedSeatTypes(this.ConferenceAlias.Id); var viewModel = new OrderViewModel { ConferenceId = this.ConferenceAlias.Id, ConferenceCode = this.ConferenceAlias.Code, ConferenceName = this.ConferenceAlias.Name, Items = seatTypes.Select( s => new OrderItemViewModel { SeatType = s, OrderItem = new DraftOrderItem(s.Id, 0), MaxSeatSelection = 20 }).ToList(), }; return viewModel; }