Class: Unicafe::Restaurant
- Inherits:
-
Object
- Object
- Unicafe::Restaurant
- Defined in:
- lib/unicafe/restaurant.rb
Defined Under Namespace
Classes: NotFound
Constant Summary collapse
- LIST_OF_RESTAURANTS =
{ 1 => {name: "Metsätalo", latitude: 60.172577, longitude: 24.948878}, 2 => {name: "Olivia", latitude: 60.175077, longitude: 24.952979}, 3 => {name: "Porthania", latitude: 60.169878, longitude: 24.948669}, 4 => {name: "Päärakennus", latitude: 60.169178, longitude: 24.949297}, 5 => {name: "Rotunda", latitude: 60.170332, longitude: 24.950791}, 6 => {name: "Topelias", latitude: 60.171806, longitude: 24.95067}, 7 => {name: "Valtiotiede", latitude: 60.173897, longitude: 24.953095}, 8 => {name: "Ylioppilasaukio", latitude: 60.169092, longitude: 24.93992}, 10 => {name: "Chemicum", latitude: 60.205108, longitude: 24.963357}, 11 => {name: "Exactum", latitude: 60.20509, longitude: 24.961209}, 12 => {name: "Physicum", latitude: 60.204755, longitude: 24.963200}, 13 => {name: "Meilahti", latitude: 60.190212, longitude: 24.908911}, 14 => {name: "Ruskeasuo", latitude: 60.206341, longitude: 24.895871}, 15 => {name: "Soc & kom", latitude: 60.173054, longitude: 24.95049}, 16 => {name: "Kookos", latitude: 60.181034, longitude: 24.958652}, 18 => {name: "Biokeskus", latitude: 60.226922, longitude: 25.013707}, 19 => {name: "Korona", latitude: 60.226922, longitude: 25.013707}, 21 => {name: "Viikuna", latitude: 60.23049, longitude: 25.020544} }
Class Method Summary collapse
- .distances(latitude, longitude) ⇒ Object
- .find_by_id(id) ⇒ Object
- .find_by_name(name) ⇒ Object
- .name_to_id(name) ⇒ Object
- .nearest(latitude, longitude) ⇒ Object
Instance Method Summary collapse
- #distance(latitude, longitude) ⇒ Object
-
#initialize(id) ⇒ Restaurant
constructor
A new instance of Restaurant.
- #latitude ⇒ Object
- #longitude ⇒ Object
- #lunches ⇒ Object
- #name ⇒ Object
Constructor Details
#initialize(id) ⇒ Restaurant
Returns a new instance of Restaurant.
27 28 29 |
# File 'lib/unicafe/restaurant.rb', line 27 def initialize id @id = id end |
Class Method Details
.distances(latitude, longitude) ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/unicafe/restaurant.rb', line 70 def self.distances(latitude, longitude) distances = {} LIST_OF_RESTAURANTS.each do |key, hash| restaurant = self.find_by_id(key) distances[restaurant.distance(latitude, longitude)] = restaurant end distances end |
.find_by_id(id) ⇒ Object
53 54 55 |
# File 'lib/unicafe/restaurant.rb', line 53 def self.find_by_id id self.new id end |
.find_by_name(name) ⇒ Object
57 58 59 |
# File 'lib/unicafe/restaurant.rb', line 57 def self.find_by_name name self.find_by_id self.name_to_id(name) end |
.name_to_id(name) ⇒ Object
61 62 63 |
# File 'lib/unicafe/restaurant.rb', line 61 def self.name_to_id name LIST_OF_RESTAURANTS.select{|key, hash| hash[:name] == name}.map{|key, hash| key}.first || raise(NotFound) end |
.nearest(latitude, longitude) ⇒ Object
65 66 67 68 |
# File 'lib/unicafe/restaurant.rb', line 65 def self.nearest(latitude, longitude) distances_with_restaurants = self.distances(latitude, longitude) distances_with_restaurants[distances_with_restaurants.keys.min] end |
Instance Method Details
#distance(latitude, longitude) ⇒ Object
47 48 49 50 51 |
# File 'lib/unicafe/restaurant.rb', line 47 def distance(latitude, longitude) Geocoder::Calculations.distance_between([self.latitude, self.longitude], [latitude, longitude], :units => :km) end |
#latitude ⇒ Object
35 36 37 |
# File 'lib/unicafe/restaurant.rb', line 35 def latitude @latitude ||= LIST_OF_RESTAURANTS[@id][:latitude] end |
#longitude ⇒ Object
39 40 41 |
# File 'lib/unicafe/restaurant.rb', line 39 def longitude @longitude ||= LIST_OF_RESTAURANTS[@id][:longitude] end |
#lunches ⇒ Object
43 44 45 |
# File 'lib/unicafe/restaurant.rb', line 43 def lunches ::Unicafe::Lunch.lunches_for_restaurant(@id) end |
#name ⇒ Object
31 32 33 |
# File 'lib/unicafe/restaurant.rb', line 31 def name @name ||= LIST_OF_RESTAURANTS[@id][:name] end |