recognition 0.3.1 → 0.3.2
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.
@@ -11,19 +11,20 @@ module Recognition
|
|
11
11
|
module ClassMethods
|
12
12
|
# to be called from user model
|
13
13
|
def acts_as_recognizable options = {}
|
14
|
-
|
14
|
+
require "recognition/activerecord/recognizable"
|
15
|
+
include Recognition::ActiveRecord::Recognizable
|
15
16
|
self.recognizable = true
|
16
17
|
self.recognitions ||= {}
|
17
18
|
self.recognitions[:initial] = {
|
18
19
|
amount: options[:initial]
|
19
20
|
}
|
20
21
|
after_save :add_initial_points
|
21
|
-
|
22
22
|
end
|
23
23
|
|
24
24
|
# to be called from other models
|
25
25
|
def recognize recognizable, condition
|
26
|
-
|
26
|
+
require "recognition/activerecord/model"
|
27
|
+
include Recognition::ActiveRecord::Model
|
27
28
|
self.recognitions ||= {}
|
28
29
|
self.recognitions[condition[:for]] = {
|
29
30
|
recognizable: recognizable,
|
@@ -55,95 +56,11 @@ module Recognition
|
|
55
56
|
|
56
57
|
# to be called from user-model
|
57
58
|
def acts_as_voucher options = {}
|
58
|
-
|
59
|
+
require "recognition/activerecord/voucher"
|
60
|
+
include Recognition::ActiveRecord::Voucher
|
59
61
|
self.recognitions = options
|
60
62
|
before_create :regenerate_code
|
61
63
|
end
|
62
64
|
end
|
63
|
-
|
64
|
-
module RecognizableInstanceMethods
|
65
|
-
# Determine user current balance of points
|
66
|
-
def points
|
67
|
-
Database.get_user_points self.id
|
68
|
-
end
|
69
|
-
|
70
|
-
def recognition_counter bucket
|
71
|
-
Database.get_user_counter self.id, bucket
|
72
|
-
end
|
73
|
-
|
74
|
-
def add_initial_points
|
75
|
-
Database.update_points self, :initial, self.class.recognitions[:initial]
|
76
|
-
end
|
77
|
-
|
78
|
-
def update_points amount, bucket
|
79
|
-
Database.log(self.id, amount.to_i, bucket)
|
80
|
-
end
|
81
|
-
|
82
|
-
def transactions page = 0, per = 20
|
83
|
-
Database.get_user_transactions self.id, page, per
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
module ObjectInstanceMethods
|
88
|
-
def recognize_creating
|
89
|
-
if self.id_changed? # Unless we are creating
|
90
|
-
Database.update_points self, :create, self.class.recognitions[:create] unless self.class.recognitions[:create].nil?
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def recognize_updating
|
95
|
-
unless self.id_changed? # Unless we are creating
|
96
|
-
Database.update_points self, :update, self.class.recognitions[:update] unless self.class.recognitions[:update].nil?
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def recognize_destroying
|
101
|
-
Database.update_points self, :destroy, self.class.recognitions[:destroy] unless self.class.recognitions[:destroy].nil?
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
|
-
|
106
|
-
module VoucherInstanceMethods
|
107
|
-
def regenerate_code
|
108
|
-
l = self.class.recognitions[:code_length] || 10
|
109
|
-
dict = [('a'..'z'),('A'..'Z'),(0..9)].map{|i| i.to_a}.flatten
|
110
|
-
code = (1..l).map{ dict[rand(dict.length)] }.join
|
111
|
-
# Prevent code collision at all costs
|
112
|
-
if self.class.to_s.constantize.find_all_by_code(code).any?
|
113
|
-
regenerate_code
|
114
|
-
else
|
115
|
-
self.code = code
|
116
|
-
self
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def redeem recognizable
|
121
|
-
# Make sure we have an amount beforehand
|
122
|
-
if defined? self.amount
|
123
|
-
if self.redeemable? recognizable
|
124
|
-
Database.redeem_voucher recognizable.id, self.code, self.amount
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def redeemable? recognizable
|
130
|
-
# default: not redeemable
|
131
|
-
pass = false
|
132
|
-
# has the voucher ever been redeemed?
|
133
|
-
if Database.get_voucher_transactions(self.code).any?
|
134
|
-
# has the voucher ever been redeemed by this user?
|
135
|
-
if Database.get_user_voucher(recognizable.id, code) != 0
|
136
|
-
pass = false
|
137
|
-
# is the voucher reusable?
|
138
|
-
elsif defined?(self.reusable?) && self.reusable?
|
139
|
-
pass = true
|
140
|
-
end
|
141
|
-
else
|
142
|
-
pass = true
|
143
|
-
end
|
144
|
-
pass
|
145
|
-
end
|
146
|
-
|
147
|
-
end
|
148
65
|
end
|
149
66
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Recognition
|
2
|
+
module ActiveRecord
|
3
|
+
module Model
|
4
|
+
def recognize_creating
|
5
|
+
if self.id_changed? # Unless we are creating
|
6
|
+
Database.update_points self, :create, self.class.recognitions[:create] unless self.class.recognitions[:create].nil?
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def recognize_updating
|
11
|
+
unless self.id_changed? # Unless we are creating
|
12
|
+
Database.update_points self, :update, self.class.recognitions[:update] unless self.class.recognitions[:update].nil?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def recognize_destroying
|
17
|
+
Database.update_points self, :destroy, self.class.recognitions[:destroy] unless self.class.recognitions[:destroy].nil?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Recognition
|
2
|
+
module ActiveRecord
|
3
|
+
module Recognizable
|
4
|
+
# Determine user current balance of points
|
5
|
+
def points
|
6
|
+
Database.get_user_points self.id
|
7
|
+
end
|
8
|
+
|
9
|
+
def recognition_counter bucket
|
10
|
+
Database.get_user_counter self.id, bucket
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_initial_points
|
14
|
+
Database.update_points self, :initial, self.class.recognitions[:initial]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_points amount, bucket
|
18
|
+
Database.log(self.id, amount.to_i, bucket)
|
19
|
+
end
|
20
|
+
|
21
|
+
def transactions page = 0, per = 20
|
22
|
+
Database.get_user_transactions self.id, page, per
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Recognition
|
2
|
+
module ActiveRecord
|
3
|
+
module Voucher
|
4
|
+
def regenerate_code
|
5
|
+
l = self.class.recognitions[:code_length] || 10
|
6
|
+
dict = [('a'..'z'),('A'..'Z'),(0..9)].map{|i| i.to_a}.flatten
|
7
|
+
code = (1..l).map{ dict[rand(dict.length)] }.join
|
8
|
+
# Prevent code collision at all costs
|
9
|
+
if self.class.to_s.constantize.find_all_by_code(code).any?
|
10
|
+
regenerate_code
|
11
|
+
else
|
12
|
+
self.code = code
|
13
|
+
self
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def redeem recognizable
|
18
|
+
# Make sure we have an amount beforehand
|
19
|
+
if defined? self.amount
|
20
|
+
if self.redeemable? recognizable
|
21
|
+
Database.redeem_voucher recognizable.id, self.code, self.amount
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def redeemable? recognizable
|
27
|
+
# default: not redeemable
|
28
|
+
pass = false
|
29
|
+
# has the voucher ever been redeemed?
|
30
|
+
if Database.get_voucher_transactions(self.code).any?
|
31
|
+
# has the voucher ever been redeemed by this user?
|
32
|
+
if Database.get_user_voucher(recognizable.id, code) != 0
|
33
|
+
pass = false
|
34
|
+
# is the voucher reusable?
|
35
|
+
elsif defined?(self.reusable?) && self.reusable?
|
36
|
+
pass = true
|
37
|
+
end
|
38
|
+
else
|
39
|
+
pass = true
|
40
|
+
end
|
41
|
+
pass
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/recognition/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recognition
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -151,6 +151,9 @@ files:
|
|
151
151
|
- lib/generators/recognition/templates/recognition.yml
|
152
152
|
- lib/recognition/action_controller_extension.rb
|
153
153
|
- lib/recognition/active_record_extension.rb
|
154
|
+
- lib/recognition/activerecord/model.rb
|
155
|
+
- lib/recognition/activerecord/recognizable.rb
|
156
|
+
- lib/recognition/activerecord/voucher.rb
|
154
157
|
- lib/recognition/backend.rb
|
155
158
|
- lib/recognition/condition.rb
|
156
159
|
- lib/recognition/database.rb
|
@@ -177,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
180
|
version: '0'
|
178
181
|
segments:
|
179
182
|
- 0
|
180
|
-
hash:
|
183
|
+
hash: 4318160502676074066
|
181
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
185
|
none: false
|
183
186
|
requirements:
|
@@ -186,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
189
|
version: '0'
|
187
190
|
segments:
|
188
191
|
- 0
|
189
|
-
hash:
|
192
|
+
hash: 4318160502676074066
|
190
193
|
requirements: []
|
191
194
|
rubyforge_project:
|
192
195
|
rubygems_version: 1.8.23
|