Ejemplo n.º 1
0
 public SuggestionMade(PartyRequested partyRequested, PricingCategoryRequested pricingCategoryRequested,
                       List <Seat> seats)
 {
     PartyRequested           = partyRequested;
     PricingCategoryRequested = pricingCategoryRequested;
     _suggestedSeats          = seats;
 }
 public static PricingCategory ToPricingCategory(this PricingCategoryRequested pricingCategoryRequested)
 {
     if (CategoriesMapping.ContainsKey(pricingCategoryRequested))
     {
         return(CategoriesMapping[pricingCategoryRequested]);
     }
     throw new ArgumentOutOfRangeException(
               $"{nameof(pricingCategoryRequested)} can't be translated in {nameof(PricingCategory)}");
 }
Ejemplo n.º 3
0
        public bool MatchCategory(PricingCategoryRequested pricingCategoryRequested)
        {
            if (pricingCategoryRequested == PricingCategoryRequested.Mixed)
            {
                return(true);
            }

            return(PricingCategory == pricingCategoryRequested.ToPricingCategory());
        }
Ejemplo n.º 4
0
        private List <List <Seat> > DumpSeatsSuggestedFor(PricingCategoryRequested pricingCategory)
        {
            var seatsSuggestedForThisCategory = new List <List <Seat> >();

            foreach (var suggestionMade in ForCategory[pricingCategory])
            {
                seatsSuggestedForThisCategory.Add(suggestionMade.SuggestedSeats.ToList());
            }

            return(seatsSuggestedForThisCategory);
        }
Ejemplo n.º 5
0
 public ShowSuggestion(string showId, int party, PricingCategoryRequested pricingCategoryRequested,
                       IEnumerable <Seat> seats, int?price = null)
 {
     _seats = seats.ToList();
     ShowId = showId;
     Party  = party;
     PricingCategoryRequested = pricingCategoryRequested;
     if (price.HasValue)
     {
         TotalPrice = price.Value;
     }
 }
Ejemplo n.º 6
0
        public static List <SuggestionMade> BuildSuggestions(int party,
                                                             PricingCategoryRequested pricingCategoryRequested,
                                                             params string[] groupsOfSeats)
        {
            var result = new List <SuggestionMade>();

            foreach (var groupsOfSeat in groupsOfSeats)
            {
                var seats = groupsOfSeat.Split('-').Select(s =>
                                                           new Seat(pricingCategoryRequested.ToPricingCategory(), s, SeatAvailability.Available, 0)).ToList();

                result.Add(new SuggestionMade(new PartyRequested(party), pricingCategoryRequested, seats));
            }

            return(result);
        }
Ejemplo n.º 7
0
        private static IEnumerable <SuggestionMade> GiveMeSuggestionsFor(
            AuditoriumSeating auditoriumSeating,
            PartyRequested partyRequested,
            PricingCategoryRequested pricingCategoryRequested)
        {
            var foundedSuggestions = new List <SuggestionMade>();

            for (var i = 0; i < NumberOfSuggestionsPerPricingCategory; i++)
            {
                var seatOptionsSuggested = auditoriumSeating
                                           .SuggestSeatingOptionFor(new SuggestionRequest(partyRequested, pricingCategoryRequested));

                if (seatOptionsSuggested.MatchExpectation())
                {
                    // We get the new version of the Auditorium after the allocation
                    auditoriumSeating = auditoriumSeating.Allocate(seatOptionsSuggested);

                    foundedSuggestions.Add(new SuggestionMade(partyRequested, pricingCategoryRequested,
                                                              seatOptionsSuggested.Seats));
                }
            }

            return(foundedSuggestions);
        }
Ejemplo n.º 8
0
 public SuggestionRequest(PartyRequested partyRequested, PricingCategoryRequested pricingCategory)
 {
     PartyRequested  = partyRequested;
     PricingCategory = pricingCategory;
 }
Ejemplo n.º 9
0
        public IEnumerable <string> SeatNames(PricingCategoryRequested pricingCategory)
        {
            var suggestionsMade = ForCategory[pricingCategory];

            return(suggestionsMade.Select(s => string.Join("-", s.SeatNames())));
        }
 public static IEnumerable <Seat> SelectAvailableSeatsCompliant(this IEnumerable <Seat> seats,
                                                                PricingCategoryRequested pricingCategory)
 {
     return(seats.Where(s => s.IsAvailable() && s.MatchCategory(pricingCategory)));
 }