-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmanager.rb
55 lines (46 loc) · 1.42 KB
/
manager.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Employee
attr_reader :first_name, :last_name, :active
attr_writer :active
def initialize(input_options)
@first_name = input_options[:first_name]
@last_name = input_options[:last_name]
@salary = input_options[:salary]
@active = input_options[:active]
end
def print_info
puts "#{@first_name} #{@last_name} makes #{@salary} a year."
end
def give_annual_raise
@salary = 1.05 * @salary
end
end
employee1 = Employee.new({first_name: "Majora", last_name: "Carter", salary: 80000, active: true})
employee2 = Employee.new(first_name: "Danilo", last_name: "Campos", salary: 70000, active: true)
employee1.print_info
employee2.print_info
class Manager < Employee
def initialize(input_options)
super
@employees = input_options[:employees]
end
def give_all_raises
@employees.each do |employee|
employee.give_annual_raise
end
end
def fire_all_employees
@employees.each do |employee|
employee.active = false
end
end
def send_report
puts "Sending email..."
# use email sending library...
puts "Email sent!"
end
end
manager = Manager.new(first_name: "Saron", last_name: "Yitbarek", salary: 100000, active: true, employees: [employee1, employee2])
manager.print_info
manager.send_report
p manager.give_all_raises
p manager.fire_all_employees