ucf_messages 0.0.1 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2748d9b5ab8838e5ace4a57d1d804f747c1c1c07639831b259376e40daecc354
4
- data.tar.gz: 6f38d12c95bbc1ef5cb6a1040a44f791e983bc6312928319db6b2c6581a71871
3
+ metadata.gz: b04e618c82d65ed97fbbcc4ab05db1889d68a0ebaf4fe18b335ecf650c1d4256
4
+ data.tar.gz: 03b3c2490516d684f233db8d3aceff5c07df6f904314b9baca0aca981c5ff840
5
5
  SHA512:
6
- metadata.gz: 3892f43d5f208976beb8de97fe659a8dea68751a5dddcc895e8202005e614d0d3df6a0d6bc68a247969988da25b8b5b3022533115f74697fa997202a1f9e1765
7
- data.tar.gz: 541355e76b06638bfa0a2c769eef3ca3a744822087b1dab8c05c4c9fd55236e513510f68668a6a2e4792d4cc830295fe453e55fd7d057d616f6a36c7ee062ea1
6
+ metadata.gz: 30e30f08d42ff7c68c1f7711242d66a46bbd96816bc5f172d0537d88491203087307da398d6f89d6d3e80fd2b1d9e302633b8c97e5b9939e57ab167a42b95116
7
+ data.tar.gz: 5867052d2f0f5676aa62a0aebbc3e600088ff9f4d2444ef3d3cdcc31610a8ba96aac18ab99e44804475e97ac045fa37f605eb82e3f923e806c0f26328d0097ab
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enumerable
4
+ def many?
5
+ cnt = 0
6
+ if block_given?
7
+ any? do |element|
8
+ cnt += 1 if yield element
9
+ cnt > 1
10
+ end
11
+ else
12
+ any? { (cnt += 1) > 1 }
13
+ end
14
+ end
15
+
16
+ def pluck(*keys)
17
+ if keys.many?
18
+ map { |element| keys.map { |key| element[key] } }
19
+ else
20
+ key = keys.first
21
+ map { |element| element[key] }
22
+ end
23
+ end
24
+ end
25
+
26
+ class Array
27
+ def second
28
+ self[1]
29
+ end
30
+ end
data/lib/ucf_messages.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'activesupport_extensions'
4
+
3
5
  class UcfMessages
4
6
  MAX_REWARD_THRESHOLD = 5000
5
7
 
@@ -13,7 +15,9 @@ class UcfMessages
13
15
 
14
16
  private
15
17
 
16
- # TODO: check this calculation! Why is there two rewards?
18
+ # There are two rewards: the first one is the multiplication factor for regular responses.
19
+ # The second one is the multiplication factor for the streak responses, of which the threshold
20
+ # property determines the start of the streak.
17
21
  def streak_size
18
22
  @protocol&.rewards&.second&.threshold || 3
19
23
  end
@@ -30,6 +34,7 @@ class UcfMessages
30
34
  sms_pool += streak_conditions if sms_pool.empty?
31
35
  sms_pool += default_pool if sms_pool.empty?
32
36
 
37
+ # Sample returns a random entry from the array
33
38
  sms_pool.sample
34
39
  end
35
40
  # rubocop:enable Metrics/PerceivedComplexity
@@ -42,7 +47,8 @@ class UcfMessages
42
47
  sms_pool = []
43
48
  1000.step(MAX_REWARD_THRESHOLD, 1000) do |threshold|
44
49
  # 1000 = 10 euro
45
- sms_pool += rewards_threshold_pool(threshold) if rewards_before < threshold && rewards_after >= threshold
50
+ # override the current sms_pool so we only get the message for the highest threshold reached
51
+ sms_pool = rewards_threshold_pool(threshold) if rewards_before < threshold && rewards_after >= threshold
46
52
  end
47
53
  sms_pool
48
54
  end
@@ -68,7 +74,8 @@ class UcfMessages
68
74
  ]
69
75
  when 5000 # 50 euro
70
76
  [
71
- 'Wat heb jij je ontzettend goed ingezet! Inmiddels heb je al bijna 50 euro verdiend!'
77
+ 'Wat heb jij je ontzettend goed ingezet! Inmiddels heb je al bijna 50 euro verdiend! Vul snel de volgende ' \
78
+ 'vragenlijst in.'
72
79
  ]
73
80
  else
74
81
  []
@@ -90,56 +97,66 @@ class UcfMessages
90
97
 
91
98
  def about_to_be_on_streak_pool
92
99
  [
93
- 'Je bent goed bezig {{deze_student}}! Vul deze vragenlijst in en bereik een bonus-streak!'
100
+ 'Je bent goed bezig! Vul deze vragenlijst in en bereik een bonus-streak! Je verdient dan ' \
101
+ 'elke week 50% meer!'
94
102
  ]
95
103
  end
96
104
 
97
105
  def on_streak_pool
98
106
  [
99
- 'Fijn dat je zo behulpzaam bent, {{deze_student}}! Vul je opnieuw de vragenlijst in?',
100
- 'Je zit nog steeds in je bonus-streak! Je u-can-feel spaarpotje raakt al behoorlijk vol ;)',
101
- 'Bedankt voor je inzet! Ga zo door :D',
102
- '{{deze_student}}, je bent een topper! Bedankt voor je goede hulp!',
107
+ 'Fijn dat je zo behulpzaam bent! Vul je opnieuw de vragenlijst in?',
108
+ 'Je zit nog steeds in je bonus-streak! Je u-can-feel spaarpotje raakt al behoorlijk vol ;) Vul direct de ' \
109
+ 'vragenlijst in om je bonus-streak te behouden.',
110
+ 'Bedankt voor je inzet! Ga zo door :D Er staat weer een nieuwe vragenlijst voor je klaar.',
111
+ 'Je bent een topper! Bedankt voor je goede hulp! Vul je direct de vragenlijst weer in?',
103
112
  'Goed bezig met je bonus-streak, ga zo door!',
104
113
  'Super dat je de vragenlijst al zo vaak achter elkaar hebt ingevuld, bedankt en ga zo door!',
105
- 'Hoi {{deze_student}}! Vul je de vragenlijst weer in om geld te verdienen?'
114
+ 'Hoi! Vul je de vragenlijst weer in om geld te verdienen?'
106
115
  ]
107
116
  end
108
117
 
109
118
  def first_invitation_pool
110
119
  [
111
120
  'Welkom bij het u-can-feel dagboekonderzoek! Doe je ook mee? We vragen je om elke week in een paar ' \
112
- 'minuten wat vragen te beantwoorden over hoe het met je gaat. Daarmee help j eons met ons onderzoek ' \
113
- 'én kun je geld verdienen. Via de link kun j emeer informatie krijgen en de eerste vragenlijst ' \
121
+ 'minuten wat vragen te beantwoorden over hoe het met je gaat. Daarmee help je ons met ons onderzoek ' \
122
+ 'én kun je geld verdienen. Via de link kun je meer informatie krijgen en de eerste vragenlijst ' \
114
123
  'invullen.'
115
124
  ]
116
125
  end
117
126
 
118
127
  def default_pool
119
128
  [
120
- 'Hoi {{deze_student}}! Er staat een vragenlijst voor je klaar, vul je hem weer in? :D',
129
+ 'Hoi! Er staat een vragenlijst voor je klaar, vul je hem weer in? :D',
121
130
  'Een u-can-feel tip: vul drie weken achter elkaar een vragenlijst in en verdien een bonus voor elke ' \
122
131
  'vragenlijst!',
123
- 'Hoi {{deze_student}}! Vul direct de vovlgende vragenlijst in. Het kost je maar een paar minuten en je helpt ' \
132
+ 'Hoi! Vul direct de volgende vragenlijst in. Het kost je maar een paar minuten en je helpt ' \
124
133
  'ons enorm!',
125
- 'Hallo {{deze_student}}, verdien een euro! Vul nu de vragenlijst in!',
126
- 'Fijn dat jij meedoet! Door jou kunnen leerlingen met wie het niet zo goed gaat nog betere begeleiding ' \
127
- 'krijgen in de toekomst!',
128
- 'Help {{je_school}} nog beter te worden in wat ze doen en vul nu de vragenlijst in!',
129
- 'Heel fijn dat je meedoet! Hiermee help je {{je_school}} om leerlingen nog beter te begeleiden!'
134
+ 'Wil je een euro verdienen? Vul nu de vragenlijst in!',
135
+ 'Fijn dat jij meedoet! Vul je de vragenlijst weer in? Door jou kunnen leerlingen met wie het niet zo goed ' \
136
+ 'gaat nog betere begeleiding krijgen in de toekomst!',
137
+ 'Help je school nog beter te worden in wat ze doen en vul nu de vragenlijst in!',
138
+ 'Heel fijn dat je meedoet! Vul je de vragenlijst weer in? Hiermee help je je school om leerlingen nog ' \
139
+ 'beter te begeleiden!'
130
140
  ]
131
141
  end
132
142
 
133
143
  def not_everything_missed
134
144
  [
135
- 'Je hebt ons al enorm geholpen met de vragenlijsten die je hebt ingevuld, {{deze_student}}. Wil je ons ' \
136
- 'weer helpen én daarmee geld verdienen?'
145
+ 'Je hebt ons al enorm geholpen met de vragenlijsten die je hebt ingevuld. Wil je ons ' \
146
+ 'weer helpen én daarmee geld verdienen?',
147
+ 'Hallo, doe je deze week weer mee aan het u-can-feel onderzoek? Vul de vragenlijst in en ' \
148
+ 'verdien een euro.',
149
+ 'Hoi! Vul direct de volgende vragenlijst in. Het kost je maar een paar minuten en je helpt ' \
150
+ 'ons enorm!',
151
+ 'Doe je weer mee aan het u-can-feel onderzoek? Daarmee help je ons enorm én verdien je geld.',
152
+ 'We hebben je al even gemist! Help je deze week weer mee met het u-can-feel onderzoek? Het ' \
153
+ 'kost maar een paar minuten van je tijd. Je helpt ons en je school. En je verdient er zelf ook een euro mee.'
137
154
  ]
138
155
  end
139
156
 
140
157
  def missed_everything
141
158
  [
142
- 'Je bent nog niet gestart met het u-can-feel dagboekonderzoek, {{deze_student}}! Doe je alsnog mee? We ' \
159
+ 'Je bent nog niet gestart met het u-can-feel dagboekonderzoek! Doe je alsnog mee? We ' \
143
160
  'vragen je om elke week een paar minuten wat vragen te beantwoorden over hoe het met je gaat. Daarmee help ' \
144
161
  'je ons met ons onderzoek én kun je geld verdienen. Via de link kun je meer informatie krijgen en de eerste ' \
145
162
  'vragenlijst invullen.'
@@ -148,7 +165,7 @@ class UcfMessages
148
165
 
149
166
  def missed_one_after_streak
150
167
  [
151
- 'Je was heel goed bezig met het u-can-feel onderzoek {{deze_student}}. Probeer je opnieuw de bonus-streak ' \
168
+ 'Je was heel goed bezig met het u-can-feel onderzoek. Probeer je opnieuw de bonus-streak ' \
152
169
  'te halen om extra geld te verdienen?'
153
170
  ]
154
171
  end
@@ -163,7 +180,7 @@ class UcfMessages
163
180
  def rejoined_after_missing_one
164
181
  [
165
182
  'Na een weekje rust ben je er sinds vorige week weer bij. Heel fijn dat je weer mee doet met het u-can-feel ' \
166
- 'onderzoek! Daarmee help je ons enorm.'
183
+ 'onderzoek! Daarmee help je ons enorm. Vul je direct de volgende vragenlijst in?'
167
184
  ]
168
185
  end
169
186
 
@@ -215,10 +232,6 @@ class UcfMessages
215
232
  @curidx.zero?
216
233
  end
217
234
 
218
- def completed_some?
219
- @protocol_completion.pluck(:completed).any?
220
- end
221
-
222
235
  def missed_previous_response?
223
236
  # Minimal pattern: .C (X = completed, C = current)
224
237
  # index: 01
@@ -243,16 +256,6 @@ class UcfMessages
243
256
  @protocol_completion[@curidx - 2][:streak] >= streak_size
244
257
  end
245
258
 
246
- # missed more than one in a row (but not all) prior to the current response
247
- def missed_more_than_one?
248
- # Minimal pattern: X..C (X = completed, C = current)
249
- # index: 0123
250
- @curidx > 2 &&
251
- !@protocol_completion[@curidx - 1][:completed] &&
252
- !@protocol_completion[@curidx - 2][:completed] &&
253
- @protocol_completion[0..(@curidx - 3)].pluck(:completed).any?
254
- end
255
-
256
259
  def missed_everything?
257
260
  # Minimal pattern: .C (X = completed, C = current)
258
261
  # index: 01
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ucf_messages
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ando Emerencia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-29 00:00:00.000000000 Z
11
+ date: 2022-01-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: library for determining which invitation text to use
14
14
  email: info@compsy.ch
@@ -16,6 +16,7 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/activesupport_extensions.rb
19
20
  - lib/ucf_messages.rb
20
21
  homepage: https://github.com/compsy/ucf_messages
21
22
  licenses: