public HotelType FindCheapestBestRatedHotel(string startDate, string endDate, CustomerType type) { HotelDetails LakeWood = new HotelDetails(HotelType.LAKEWOOD, type); HotelDetails BridgeWood = new HotelDetails(HotelType.BRIDGEWOOD, type); HotelDetails RidgeWood = new HotelDetails(HotelType.RIDGEWOOD, type); double LakeWoodRate = LakeWood.FindTotalCost(startDate, endDate); double BridgeWoodRate = BridgeWood.FindTotalCost(startDate, endDate); double RidgeWoodRate = RidgeWood.FindTotalCost(startDate, endDate); double MinRate = Math.Min(LakeWoodRate, Math.Min(BridgeWoodRate, RidgeWoodRate)); if (MinRate == RidgeWoodRate) { if (RidgeWood.RATING >= 4) { return(HotelType.RIDGEWOOD); } else if (LakeWoodRate < BridgeWoodRate) { if (LakeWood.RATING >= 4) { return(HotelType.LAKEWOOD); } } else { if (BridgeWood.RATING >= 4) { return(HotelType.BRIDGEWOOD); } } } if (MinRate == LakeWoodRate) { if (LakeWood.RATING >= 4) { return(HotelType.LAKEWOOD); } else if (RidgeWoodRate < BridgeWoodRate) { if (RidgeWood.RATING >= 4) { return(HotelType.RIDGEWOOD); } } else { if (BridgeWood.RATING >= 4) { return(HotelType.BRIDGEWOOD); } } } if (MinRate == BridgeWoodRate) { if (BridgeWood.RATING >= 4) { return(HotelType.BRIDGEWOOD); } else if (LakeWoodRate < RidgeWoodRate) { if (LakeWood.RATING >= 4) { return(HotelType.LAKEWOOD); } } else { if (RidgeWood.RATING >= 4) { return(HotelType.RIDGEWOOD); } } } return(HotelType.RIDGEWOOD); }