Class: ExampleInstallation

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Serialization
Defined in:
app/models/example_installation.rb

Overview

Read-only projection of a RoomConfiguration that exposes the
customer-facing fields shown on the "Example Installations" carousel
on landing pages — price, coverage, wattage, voltage, operating cost,
and room type — without leaking the internals of the underlying room.

Instance Method Summary collapse

Constructor Details

#initialize(room_configuration) ⇒ ExampleInstallation

Returns a new instance of ExampleInstallation.



9
10
11
# File 'app/models/example_installation.rb', line 9

def initialize(room_configuration)
  @room_configuration = room_configuration
end

Instance Method Details

#coverageObject



22
23
24
# File 'app/models/example_installation.rb', line 22

def coverage
  @room_configuration.coverage_percentage || 100 # need some number here
end

#imageObject



13
14
15
16
# File 'app/models/example_installation.rb', line 13

def image
  # Plan images can be served directly from the room configuration using send_file. Discontinuing vignette plan images
  # room_configuration.vignette_plan_image
end

#operating_costObject



34
35
36
# File 'app/models/example_installation.rb', line 34

def operating_cost
  @room_configuration.operating_cost_in_cents_per_day
end

#priceObject



18
19
20
# File 'app/models/example_installation.rb', line 18

def price
  @room_configuration.total.to_f.round(2)
end

#room_type_nameObject



38
39
40
# File 'app/models/example_installation.rb', line 38

def room_type_name
  @room_configuration.room_type.name
end

#voltageObject



30
31
32
# File 'app/models/example_installation.rb', line 30

def voltage
  @room_configuration.control_voltage || @room_configuration.line_items.heating_elements.first.item.voltage # need some number here
end

#wattageObject



26
27
28
# File 'app/models/example_installation.rb', line 26

def wattage
  @room_configuration.calculate_total_watts
end