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.
- checksums.yaml +7 -0
- data/express_expenser.rb +119 -0
- 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
|
data/express_expenser.rb
ADDED
|
@@ -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: []
|