/// <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()); }
/// <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()); }