eco-helpers 1.5.0 → 1.5.1

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -2
  3. data/eco-helpers.gemspec +11 -10
  4. data/lib/eco/api.rb +1 -0
  5. data/lib/eco/api/common.rb +1 -1
  6. data/lib/eco/api/common/people/default_parsers.rb +4 -0
  7. data/lib/eco/api/common/people/default_parsers/freemium_parser.rb +30 -0
  8. data/lib/eco/api/common/people/default_parsers/policy_groups_parser.rb +42 -0
  9. data/lib/eco/api/common/people/default_parsers/send_invites_parser.rb +2 -1
  10. data/lib/eco/api/common/people/entry_factory.rb +8 -7
  11. data/lib/eco/api/common/people/person_entry_attribute_mapper.rb +2 -0
  12. data/lib/eco/api/common/people/person_parser.rb +1 -1
  13. data/lib/eco/api/common/session/base_session.rb +3 -6
  14. data/lib/eco/api/common/session/environment.rb +2 -23
  15. data/lib/eco/api/common/version_patches/ecoportal_api/internal_person.rb +9 -1
  16. data/lib/eco/api/microcases.rb +31 -0
  17. data/lib/eco/api/microcases/core_excluded.rb +20 -0
  18. data/lib/eco/api/microcases/fix_filter_tags.rb +22 -0
  19. data/lib/eco/api/microcases/set_account.rb +32 -0
  20. data/lib/eco/api/microcases/set_core.rb +18 -0
  21. data/lib/eco/api/microcases/set_default_group.rb +33 -0
  22. data/lib/eco/api/microcases/set_default_tag.rb +23 -0
  23. data/lib/eco/api/microcases/set_supervisor.rb +26 -0
  24. data/lib/eco/api/microcases/strict_search.rb +14 -0
  25. data/lib/eco/api/organization/presets_values.json +1 -0
  26. data/lib/eco/api/session.rb +9 -6
  27. data/lib/eco/api/session/batch.rb +1 -44
  28. data/lib/eco/api/session/config.rb +2 -2
  29. data/lib/eco/api/session/config/api.rb +121 -7
  30. data/lib/eco/api/session/config/apis.rb +24 -25
  31. data/lib/eco/api/usecases/default_cases/recover_db_case.rb +1 -0
  32. data/lib/eco/api/usecases/microed_cases/hris_case.rb +53 -0
  33. data/lib/eco/api/usecases/microed_cases/update_case.rb +33 -0
  34. data/lib/eco/api/usecases/microed_cases/update_details_case.rb +30 -0
  35. data/lib/eco/api/usecases/microed_cases/upsert_case.rb +36 -0
  36. data/lib/eco/version.rb +1 -1
  37. metadata +94 -53
@@ -40,6 +40,7 @@ module Eco
40
40
  person.email = entry.email unless options.dig(:exclude, :email)
41
41
  person.supervisor_id = entry.supervisor_id unless options.dig(:exclude, :supervisor)
42
42
  person.filter_tags = entry.filter_tags || [] unless options.dig(:exclude, :filter_tags)
43
+ person.freemium = entry.freemium
43
44
  end
44
45
 
45
46
  unless options.dig(:exclude, :account)
@@ -0,0 +1,53 @@
1
+ module Eco
2
+ module API
3
+ class UseCases
4
+ class DefaultCases
5
+ class HrisCase < DefaultCase
6
+
7
+ def process
8
+ @cases.define("hris", type: :sync) do |entries, people, session, options, usecase|
9
+ micro = session.microcases
10
+
11
+ creation = session.new_job("main", "create", :create, usecase)
12
+ update = session.new_job("main", "update", :update, usecase)
13
+ supers = session.new_job("post", "supers", :update, usecase, :core)
14
+ leavers = session.new_job("post", "leavers", :update, usecase, :account)
15
+
16
+ micro.with_leavers(entries, people, options, leavers) do |person|
17
+ person.supervisor_id = nil
18
+ person.account = nil if person.account
19
+ end
20
+
21
+ people.each_with_index do |person, i|
22
+ if person = people.find(entry, strict: micro.strict_search(options))
23
+ if !entries.find(person, strict: strict: micro.strict_search(options))
24
+ leavers.add(person) do |person|
25
+ person.supervisor_id = nil
26
+ person.account = nil if person.account
27
+ end
28
+ end
29
+ end
30
+
31
+ entries.each_with_index do |entry, i|
32
+ if person = people.find(entry, strict: micro.strict_search(options))
33
+ update.add(person)
34
+ else
35
+ person = session.new_person
36
+ creation.add(person)
37
+ end
38
+
39
+ micro.set_core(entry, person, options, people, supers)
40
+ entry.set_details(person) unless options.dig(:exclude, :details)
41
+ micro.set_account(entry, person, options)
42
+ end
43
+
44
+ end
45
+
46
+
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,33 @@
1
+ module Eco
2
+ module API
3
+ class UseCases
4
+ class DefaultCases
5
+ class UpdateCase < DefaultCase
6
+
7
+ def process
8
+ @cases.define("update", type: :sync) do |entries, people, session, options, usecase|
9
+ micro = session.microcases
10
+
11
+ update = session.new_job("main", "update", :update, usecase)
12
+ supers = session.new_job("post", "supers", :update, usecase, :core)
13
+
14
+ entries.each.with_index do |entry, i|
15
+ if person = people.find(entry, strict: micro.strict_search(**params))
16
+ micro.set_core(entry, person, options, people, supers)
17
+ entry.set_details(person) unless options.dig(:exclude, :details)
18
+ micro.set_account(entry, person, options)
19
+
20
+ update.add(person)
21
+ else
22
+ session.logger.error("Entry(#{i}) - this person does not exist: #{entry.to_s(:identify)}")
23
+ end
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,30 @@
1
+ module Eco
2
+ module API
3
+ class UseCases
4
+ class DefaultCases
5
+ class UpdateDetailsCase < DefaultCase
6
+
7
+ def process
8
+ @cases.define("update-details", type: :sync) do |entries, people, session, options, usecase|
9
+ micro = session.microcases
10
+
11
+ update = session.new_job("main", "update", :update, usecase)
12
+ supers = session.new_job("post", "supers", :update, usecase, :core)
13
+
14
+ entries.each.with_index do |entry, i|
15
+ if person = people.find(entry, strict: micro.strict_search(options))
16
+ micro.set_core(entry, person, options, people, supers)
17
+ entry.set_details(person) unless options.dig(:exclude, :details)
18
+ update.add(person)
19
+ else
20
+ session.logger.error("Entry(#{i}) - this person does not exist: #{entry.to_s(:identify)}")
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,36 @@
1
+ module Eco
2
+ module API
3
+ class UseCases
4
+ class DefaultCases
5
+ class UpsertCase < DefaultCase
6
+
7
+ def process
8
+ @cases.define("upsert", type: :sync) do |entries, people, session, options, usecase|
9
+ micro = session.microcases
10
+
11
+ creation = session.new_job("main", "create", :create, usecase)
12
+ update = session.new_job("main", "update", :update, usecase)
13
+ supers = session.new_job("post", "supers", :update, usecase, :core)
14
+
15
+ entries.each_with_index do |entry, i|
16
+ params = [entry, person, session, options]
17
+
18
+ if person = people.find(entry, strict: micro.strict_search(options))
19
+ update.add(person)
20
+ else
21
+ person = session.new_person
22
+ creation.add(person)
23
+ end
24
+
25
+ micro.set_core(entry, person, options, people, supers)
26
+ entry.set_details(person) unless options.dig(:exclude, :details)
27
+ micro.set_account(entry, person, options)
28
+ end
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "1.5.0"
2
+ VERSION = "1.5.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -14,76 +14,82 @@ dependencies:
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.1'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 2.1.3
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.2'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '2.1'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 2.1.3
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3'
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
42
39
  version: '3.9'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '4'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '3'
50
47
  - - ">="
51
48
  - !ruby/object:Gem::Version
52
49
  version: '3.9'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '4'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rake
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - "~>"
57
+ - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: 12.3.0
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '13'
60
63
  type: :development
61
64
  prerelease: false
62
65
  version_requirements: !ruby/object:Gem::Requirement
63
66
  requirements:
64
- - - "~>"
67
+ - - ">="
65
68
  - !ruby/object:Gem::Version
66
69
  version: 12.3.0
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '13'
67
73
  - !ruby/object:Gem::Dependency
68
74
  name: yard
69
75
  requirement: !ruby/object:Gem::Requirement
70
76
  requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '0.9'
74
77
  - - ">="
75
78
  - !ruby/object:Gem::Version
76
79
  version: 0.9.18
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.10'
77
83
  type: :development
78
84
  prerelease: false
79
85
  version_requirements: !ruby/object:Gem::Requirement
80
86
  requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '0.9'
84
87
  - - ">="
85
88
  - !ruby/object:Gem::Version
86
89
  version: 0.9.18
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '0.10'
87
93
  - !ruby/object:Gem::Dependency
88
94
  name: redcarpet
89
95
  requirement: !ruby/object:Gem::Requirement
@@ -91,9 +97,9 @@ dependencies:
91
97
  - - ">="
92
98
  - !ruby/object:Gem::Version
93
99
  version: 3.5.0
94
- - - "~>"
100
+ - - "<"
95
101
  - !ruby/object:Gem::Version
96
- version: '3.5'
102
+ version: '3.6'
97
103
  type: :development
98
104
  prerelease: false
99
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -101,69 +107,89 @@ dependencies:
101
107
  - - ">="
102
108
  - !ruby/object:Gem::Version
103
109
  version: 3.5.0
104
- - - "~>"
110
+ - - "<"
105
111
  - !ruby/object:Gem::Version
106
- version: '3.5'
112
+ version: '3.6'
107
113
  - !ruby/object:Gem::Dependency
108
114
  name: ecoportal-api
109
115
  requirement: !ruby/object:Gem::Requirement
110
116
  requirements:
111
117
  - - ">="
112
118
  - !ruby/object:Gem::Version
113
- version: 0.7.0
114
- - - "~>"
119
+ version: 0.7.1
120
+ - - "<"
115
121
  - !ruby/object:Gem::Version
116
- version: '0.7'
122
+ version: '0.8'
117
123
  type: :runtime
118
124
  prerelease: false
119
125
  version_requirements: !ruby/object:Gem::Requirement
120
126
  requirements:
121
127
  - - ">="
122
128
  - !ruby/object:Gem::Version
123
- version: 0.7.0
124
- - - "~>"
129
+ version: 0.7.1
130
+ - - "<"
125
131
  - !ruby/object:Gem::Version
126
- version: '0.7'
132
+ version: '0.8'
127
133
  - !ruby/object:Gem::Dependency
128
- name: aws-sdk-s3
134
+ name: ecoportal-api-oozes
129
135
  requirement: !ruby/object:Gem::Requirement
130
136
  requirements:
131
- - - "~>"
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 0.7.2
140
+ - - "<"
132
141
  - !ruby/object:Gem::Version
133
- version: '1'
142
+ version: '0.8'
143
+ type: :runtime
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 0.7.2
150
+ - - "<"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.8'
153
+ - !ruby/object:Gem::Dependency
154
+ name: aws-sdk-s3
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
134
157
  - - ">="
135
158
  - !ruby/object:Gem::Version
136
159
  version: 1.64.0
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: '2'
137
163
  type: :runtime
138
164
  prerelease: false
139
165
  version_requirements: !ruby/object:Gem::Requirement
140
166
  requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '1'
144
167
  - - ">="
145
168
  - !ruby/object:Gem::Version
146
169
  version: 1.64.0
170
+ - - "<"
171
+ - !ruby/object:Gem::Version
172
+ version: '2'
147
173
  - !ruby/object:Gem::Dependency
148
174
  name: aws-sdk-ses
149
175
  requirement: !ruby/object:Gem::Requirement
150
176
  requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '1'
154
177
  - - ">="
155
178
  - !ruby/object:Gem::Version
156
179
  version: 1.29.0
180
+ - - "<"
181
+ - !ruby/object:Gem::Version
182
+ version: '2'
157
183
  type: :runtime
158
184
  prerelease: false
159
185
  version_requirements: !ruby/object:Gem::Requirement
160
186
  requirements:
161
- - - "~>"
162
- - !ruby/object:Gem::Version
163
- version: '1'
164
187
  - - ">="
165
188
  - !ruby/object:Gem::Version
166
189
  version: 1.29.0
190
+ - - "<"
191
+ - !ruby/object:Gem::Version
192
+ version: '2'
167
193
  - !ruby/object:Gem::Dependency
168
194
  name: dotenv
169
195
  requirement: !ruby/object:Gem::Requirement
@@ -171,9 +197,9 @@ dependencies:
171
197
  - - ">="
172
198
  - !ruby/object:Gem::Version
173
199
  version: 2.7.0
174
- - - "~>"
200
+ - - "<"
175
201
  - !ruby/object:Gem::Version
176
- version: '2.7'
202
+ version: '2.8'
177
203
  type: :runtime
178
204
  prerelease: false
179
205
  version_requirements: !ruby/object:Gem::Requirement
@@ -181,29 +207,29 @@ dependencies:
181
207
  - - ">="
182
208
  - !ruby/object:Gem::Version
183
209
  version: 2.7.0
184
- - - "~>"
210
+ - - "<"
185
211
  - !ruby/object:Gem::Version
186
- version: '2.7'
212
+ version: '2.8'
187
213
  - !ruby/object:Gem::Dependency
188
214
  name: net-sftp
189
215
  requirement: !ruby/object:Gem::Requirement
190
216
  requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '2.1'
194
217
  - - ">="
195
218
  - !ruby/object:Gem::Version
196
219
  version: 2.1.2
220
+ - - "<"
221
+ - !ruby/object:Gem::Version
222
+ version: '2.2'
197
223
  type: :runtime
198
224
  prerelease: false
199
225
  version_requirements: !ruby/object:Gem::Requirement
200
226
  requirements:
201
- - - "~>"
202
- - !ruby/object:Gem::Version
203
- version: '2.1'
204
227
  - - ">="
205
228
  - !ruby/object:Gem::Version
206
229
  version: 2.1.2
230
+ - - "<"
231
+ - !ruby/object:Gem::Version
232
+ version: '2.2'
207
233
  description:
208
234
  email:
209
235
  - oscar@ecoportal.co.nz
@@ -230,8 +256,10 @@ files:
230
256
  - lib/eco/api/common/people/default_parsers/boolean_parser.rb
231
257
  - lib/eco/api/common/people/default_parsers/csv_parser.rb
232
258
  - lib/eco/api/common/people/default_parsers/date_parser.rb
259
+ - lib/eco/api/common/people/default_parsers/freemium_parser.rb
233
260
  - lib/eco/api/common/people/default_parsers/multi_parser.rb
234
261
  - lib/eco/api/common/people/default_parsers/numeric_parser.rb
262
+ - lib/eco/api/common/people/default_parsers/policy_groups_parser.rb
235
263
  - lib/eco/api/common/people/default_parsers/select_parser.rb
236
264
  - lib/eco/api/common/people/default_parsers/send_invites_parser.rb
237
265
  - lib/eco/api/common/people/entries.rb
@@ -261,6 +289,15 @@ files:
261
289
  - lib/eco/api/error.rb
262
290
  - lib/eco/api/error/handler.rb
263
291
  - lib/eco/api/error/handlers.rb
292
+ - lib/eco/api/microcases.rb
293
+ - lib/eco/api/microcases/core_excluded.rb
294
+ - lib/eco/api/microcases/fix_filter_tags.rb
295
+ - lib/eco/api/microcases/set_account.rb
296
+ - lib/eco/api/microcases/set_core.rb
297
+ - lib/eco/api/microcases/set_default_group.rb
298
+ - lib/eco/api/microcases/set_default_tag.rb
299
+ - lib/eco/api/microcases/set_supervisor.rb
300
+ - lib/eco/api/microcases/strict_search.rb
264
301
  - lib/eco/api/organization.rb
265
302
  - lib/eco/api/organization/login_providers.rb
266
303
  - lib/eco/api/organization/people.rb
@@ -329,6 +366,10 @@ files:
329
366
  - lib/eco/api/usecases/default_cases/update_case.rb
330
367
  - lib/eco/api/usecases/default_cases/update_details_case.rb
331
368
  - lib/eco/api/usecases/default_cases/upsert_case.rb
369
+ - lib/eco/api/usecases/microed_cases/hris_case.rb
370
+ - lib/eco/api/usecases/microed_cases/update_case.rb
371
+ - lib/eco/api/usecases/microed_cases/update_details_case.rb
372
+ - lib/eco/api/usecases/microed_cases/upsert_case.rb
332
373
  - lib/eco/api/usecases/use_case.rb
333
374
  - lib/eco/api/usecases/use_case_chain.rb
334
375
  - lib/eco/api/usecases/use_case_io.rb