예제 #1
0
        /// <returns>
        /// <list type="bullet">
        /// <item>
        /// <description>A default lot if one is free, otherwise;</description>
        /// </item>
        /// <item>
        /// <description>null</description>
        /// </item>
        /// </list>
        /// </returns>
        public ParkingLot FindFreeRegularParkingLot()
        {
            // All regular non-business lots
            var freeLots = Lots.Where((lot) => !IsLotBusiness(lot) && lot.HasFreeSpace());

            // if there isn't any free spaces at all, it returns null
            return(freeLots.OrderBy((lot) => lot.CurrentParking).FirstOrDefault());
        }
예제 #2
0
        /// <returns>
        /// <list type="bullet">
        /// <item>
        /// <description>A business lot if one is free, otherwise;</description>
        /// </item>
        /// <item>
        /// <description>A default lot if one is free, otherwise;</description>
        /// </item>
        /// <item>
        /// <description>null</description>
        /// </item>
        /// </list>
        /// </returns>
        public ParkingLot FindFreeBusinessParkingLot()
        {
            var freeBusinessLots = Lots.Where((lot) => IsLotBusiness(lot) && lot.HasFreeSpace());

            // free business lots?
            if (freeBusinessLots.Any())
            {
                return(freeBusinessLots.OrderBy((lot) => lot.CurrentParking).First());
            }
            // no, default to free parking lot
            return(FindFreeRegularParkingLot());
        }
 public override Lot FindLotWithStrategy()
 {
     return(Lots.Where(lot => lot.HasPosition)
            .OrderBy(lot => lot.AvailablePositionRate)
            .LastOrDefault());
 }