示例#1
0
        /// <summary>
        /// this method produces random numbers for both bookingId and bookingNumber.
        /// </summary>
        /// <returns></returns>
        private BookingParametersModel GetBookingNumberAndId()
        {
            BookingParametersModel bookingParametersModel = new BookingParametersModel();
            HashSet <string>       bookingNumberSet       = new HashSet <string>(); // set is created to prevent duplicate creation of booking number.
            HashSet <int>          bookingIdSet           = new HashSet <int>();    // set is created to prevent duplicate creation of booking Id.
            IEnumerable <Booking>  bookingList            = _BookingRepository.GetAll();

            foreach (Booking aBooking in bookingList)
            {
                bookingNumberSet.Add(aBooking.Number);
                bookingIdSet.Add(aBooking.Id);
            }
            //get random number for booking Id
            Random generator = new Random();

            bookingParametersModel.RandomBookingNumber = generator.Next(MINUMUM_FLIGHT_NUMBER, MAXIMUM_FLIGHT_NUMBER).ToString(); //assumption: 6 characters
            while (bookingNumberSet.Contains(bookingParametersModel.RandomBookingNumber))
            {
                bookingParametersModel.RandomBookingNumber = generator.Next(MINUMUM_FLIGHT_NUMBER, MAXIMUM_FLIGHT_NUMBER).ToString();
            }

            //get random number for booking number
            bookingParametersModel.RandomBookingId = generator.Next(MINUMUM_FLIGHT_ID, MAXIMUM_FLIGHT_ID);  //assumption: 2 characters and they are unique
            while (bookingIdSet.Contains(bookingParametersModel.RandomBookingId))
            {
                bookingParametersModel.RandomBookingId = generator.Next(MINUMUM_FLIGHT_ID, MAXIMUM_FLIGHT_ID);
            }
            return(bookingParametersModel);
        }
示例#2
0
        /// <summary>
        /// book a flight for an existing flight.
        /// </summary>
        /// <param name="flightId"></param>
        /// <param name="personId"></param>
        /// <returns></returns>
        public Booking BookAFlight(int flightId, int personId)
        {
            BookingParametersModel bookingParametersModel = GetBookingNumberAndId();
            Booking booking = new Booking()
            {
                Id          = bookingParametersModel.RandomBookingId,
                Number      = "WO-" + bookingParametersModel.RandomBookingNumber,
                DateBooking = DateTime.Now,
                Flight      = new FlightRepository().Get(flightId),
                Customer    = _PersonRepository.Get(personId),
                Passengers  = new List <Person>()
                {
                    _PersonRepository.Get(personId)
                }
            };

            _BookingRepository.Save(booking);
            return(booking);
        }