express_expenser 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/express_expenser.rb +119 -0
  3. metadata +42 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 554c5803a09d4543956bedfff070d78df19432309c6b71ad3c2644fcdc264e6f
4
+ data.tar.gz: aea95749a6075ee1e6434e90f44d536dd1322ce802d2e764d46eb585d25d956f
5
+ SHA512:
6
+ metadata.gz: 66a6b40a0e3872e9129d111f57fee88839d930d75e10e34656f4b3b94d929192163fd3e6dac2afd92d369320ac66a1fa6f6a945ec9b2110c813ef8d8ad79b85e
7
+ data.tar.gz: 932ff4d603bc034d21e93afeb141f781a738ce603ea83472f606f97cf84ade9e717458c3b5e8289030d0e2cd60d07512b416e37b6dcd4f7576169b4e596ae200
@@ -0,0 +1,119 @@
1
+ class ExpressExpenser
2
+
3
+ def self.download_all_expenses expenses:
4
+ total = get_total_amount expenses: expenses
5
+ File.delete('expense_report.txt') if File.exists?('expense_report.txt')
6
+ file = File.new('expense_report.txt', 'a')
7
+ file.write('Amount , Reason , Employee ID' + "\n")
8
+ expenses.each do |expense|
9
+ file.write(expense.amount.to_s + ' ')
10
+ file.write(expense.reason + ' ')
11
+ file.write(expense.employee_id)
12
+ file.write("\n")
13
+ end
14
+ file.write("\n" + 'Total Amount')
15
+ file.write("\n")
16
+ file.write(total)
17
+ file.close
18
+ return file
19
+ end
20
+
21
+ def self.download_expenses_per_employee expenses:, employee_id:
22
+ total = get_amount_by_employeeId expenses: expenses, employee_id: employee_id
23
+ average = get_average_amount_by_employee expenses: expenses, employee_id: employee_id
24
+ File.delete('employee_expense_report.txt') if File.exists?('employee_expense_report.txt')
25
+ file = File.new('employee_expense_report.txt', 'a')
26
+ file.write('Amount , Reason' + "\n")
27
+ expenses.each do |expense|
28
+ if expense.employee_id == employee_id
29
+ file.write(expense.amount.to_s + ' ')
30
+ file.write(expense.reason + ' ')
31
+ file.write("\n")
32
+ end
33
+ end
34
+ file.write("\n" + 'Total Amount for employee #'+ employee_id.to_s)
35
+ file.write("\n")
36
+ file.write(total)
37
+ file.write("\n" + 'Average Amount: ')
38
+ file.write("\n")
39
+ file.write(average)
40
+ file.close
41
+ return file
42
+ end
43
+
44
+ def self.download_expenses_per_reason expenses:, reason:
45
+ total = get_amount_by_reason expenses: expenses, reason: reason
46
+ average = get_average_amount_by_reason expenses: expenses, reason: reason
47
+ File.delete(reason + '_expense_report.txt') if File.exists?(reason + '_expense_report.txt')
48
+ file = File.new(reason + '_expense_report.txt', 'a')
49
+ file.write('Amount , Employee ID' + "\n")
50
+ expenses.each do |expense|
51
+ if expense.reason == reason
52
+ file.write(expense.amount.to_s + ' ')
53
+ file.write(expense.employee_id)
54
+ file.write("\n")
55
+ end
56
+ end
57
+ file.write("\n" + 'Total Amount for reason: ' + reason)
58
+ file.write("\n")
59
+ file.write(total)
60
+ file.write("\n" + 'Average Amount: ')
61
+ file.write("\n")
62
+ file.write(average)
63
+ file.close
64
+ return file
65
+ end
66
+
67
+ def self.get_total_amount expenses:
68
+ total = 0
69
+ expenses.each do |expense|
70
+ total = total + expense.amount
71
+ end
72
+ return total
73
+ end
74
+
75
+ def self.get_amount_by_reason expenses:, reason:
76
+ total = 0
77
+ expenses.each do |expense|
78
+ if expense.reason == reason
79
+ total = total + expense.amount
80
+ end
81
+ end
82
+ return total
83
+ end
84
+
85
+ def self.get_amount_by_employeeId expenses:, employee_id:
86
+ total = 0
87
+ expenses.each do |expense|
88
+ if expense.employee_id == employee_id
89
+ total = total + expense.amount
90
+ end
91
+ end
92
+ return total
93
+ end
94
+
95
+ def self.get_average_amount_by_employee expenses:, employee_id:
96
+ average = 0
97
+ count = 0
98
+ expenses.each do |expense|
99
+ if expense.employee_id == employee_id
100
+ average = average + expense.amount
101
+ count = count + 1
102
+ end
103
+ end
104
+ return average / count
105
+ end
106
+
107
+ def self.get_average_amount_by_reason expenses:, reason:
108
+ average = 0
109
+ count = 0
110
+ expenses.each do |expense|
111
+ if expense.reason == reason
112
+ average = average + expense.amount
113
+ count = count + 1
114
+ end
115
+ end
116
+ return average / count
117
+ end
118
+
119
+ end
metadata ADDED
@@ -0,0 +1,42 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: express_expenser
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Aaron Hynes - x17742385
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-04-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem for ExpressExpense
14
+ email: x17742385@student.ncirl.ie
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - express_expenser.rb
20
+ homepage: http://rubygems.org/gems/express_expenser
21
+ licenses: []
22
+ metadata: {}
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ requirements: []
38
+ rubygems_version: 3.1.2
39
+ signing_key:
40
+ specification_version: 4
41
+ summary: ExpressExpense functionality
42
+ test_files: []