public AuditoriumSeating Allocate(SeatingOptionSuggested seatingOptionSuggested) { // Update the seat references in the Auditorium var newAuditorium = AllocateSeats(seatingOptionSuggested.Seats); return(newAuditorium); }
public SeatingOptionSuggested SuggestSeatingOption(SuggestionRequest suggestionRequest) { var seatingOptionSuggested = new SeatingOptionSuggested(suggestionRequest); var availableSeatsCompliant = Seats.SelectAvailableSeatsCompliant(suggestionRequest.PricingCategory); var rowSize = Seats.Count(); var adjacentSeatsOfExpectedSize = availableSeatsCompliant.SelectAdjacentSeats(suggestionRequest.PartyRequested); var adjacentSeatsOrdered = adjacentSeatsOfExpectedSize.OrderByMiddleOfTheRow(rowSize); foreach (var adjacentSeats in adjacentSeatsOrdered) { seatingOptionSuggested.AddSeats(adjacentSeats); if (seatingOptionSuggested.MatchExpectation()) { return(seatingOptionSuggested); } } return(new SeatingOptionNotAvailable(suggestionRequest)); }