diff --git a/NullHotel.rb b/NullHotel.rb new file mode 100644 index 0000000..cf08161 --- /dev/null +++ b/NullHotel.rb @@ -0,0 +1,9 @@ +class NullHotel + def to_s + "not a hotel in database" + end + + def info + "hotel not in database" + end +end diff --git a/hotel.rb b/hotel.rb new file mode 100644 index 0000000..068076b --- /dev/null +++ b/hotel.rb @@ -0,0 +1,37 @@ +class Hotel + attr_reader(:name, + :location, + :phone_number, + :single_rooms, + :double_rooms + ) + def initialize(info) + @name = info["Hotel"].strip + @location = info["City"].strip + @phone_number = phone_number_format(info["Phone Number"]) + @single_rooms = clean_number(info["Number of Singles"]) + @double_rooms = clean_number(info["Number of Doubles"]) + end + + def to_s + name + end + + def info + info = [location,phone_number,total_rooms] + puts info + end + + def total_rooms + single_rooms + double_rooms + end + + def phone_number_format(number) + number = clean_number(number).to_s + number.insert(3,"-").insert(7,"-") + end + + def clean_number(number) + number.strip.gsub(/[^\d+]/, "").strip.to_i + end +end diff --git a/hotelr.rb b/hotelr.rb new file mode 100644 index 0000000..c8347ed --- /dev/null +++ b/hotelr.rb @@ -0,0 +1,35 @@ +require 'csv' +require './hotel.rb' + +class Main + attr_reader :hotels_list, :selected_hotel + def initialize + @hotels_list = [] + CSV.foreach("hotels.csv", headers: true) do |info| + hotels_list << Hotel.new(info) + end + end + + def start + prompt_user + display_info + end + + def prompt_user + puts hotels_list + print "enter a hotel >" + find_hotel(gets.chomp) + end + + def find_hotel(query) + @selected_hotel = hotels_list.find{|hotel| hotel.name == query ||= NullHotel.new } + end + + def display_info + puts "-" * 10 + puts selected_hotel.info + end +end + +hotels_db = Main.new +hotels_db.start diff --git a/hotels.csv b/hotels.csv new file mode 100644 index 0000000..aa29c5d --- /dev/null +++ b/hotels.csv @@ -0,0 +1,10 @@ +Hotel,City,Phone Number,Number of Singles,Number of Doubles +Wombat Inn,Quincy,342-469-9891,123,52 +Bugaboo Lodge,Boston,954-320-9432,21,4 +Ruby Inn, Cambridge ,518-410-9090,300,100 +Rails Motel,Somerville,593-131-5953,2,0 +Super 6,Boston ,432.785.7263,"1,000",500 +Large Lodge,Somerville ,(678)-727-2356,100,50 +Hostile Hostel, Boston,938-123-9695,401,302 + The Hotel Motel Holiday Inn, Quincy,5499018889,233,234 + Binary Inn , Somerville,100011100110,010,100