eco-helpers 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
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