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), AvailableQuantityForOrder = Math.Max(s.AvailableQuantity, 0), MaxSelectionQuantity = Math.Max(Math.Min(s.AvailableQuantity, 20), 0) }).ToList(), }; return viewModel; }