c80_shared 0.1.8 → 0.1.9
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 +5 -5
- data/app/serializers/lease/rebate_serializer.rb +20 -1
- data/app/services/users/find_or_generate_email_token_service.rb +48 -0
- data/app/services/users/generate_email_token_service.rb +37 -0
- data/lib/c80_shared/token_generator.rb +7 -0
- data/lib/c80_shared/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fa7f6666b59ba7a52fb884bf341eaf24a17cfb92
|
4
|
+
data.tar.gz: e407fe01bcddfe7dea7292707e49fcd0bc4c50bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b8d0f09a04894e441b09c38ed23296a8aca88016e6794e59fa26e4c368a9ae92cabd8766f2d5e722695fded593d28c879f94cb2caf1d65705222f3715648a3f
|
7
|
+
data.tar.gz: eadff5f8150ef5ca6d497189ed21caf1b80a32ab0317469518c778aa1d35c3e23a391768b0d05a08a840655a8c0e8e09fb1397250d2a20c489e0509fa118e1c3
|
@@ -11,7 +11,10 @@ module Lease
|
|
11
11
|
:id,
|
12
12
|
:amount,
|
13
13
|
:currency,
|
14
|
-
:human_price
|
14
|
+
:human_price,
|
15
|
+
:old_amount,
|
16
|
+
:old_currency,
|
17
|
+
:old_human_price
|
15
18
|
].freeze
|
16
19
|
end
|
17
20
|
|
@@ -34,6 +37,22 @@ module Lease
|
|
34
37
|
end
|
35
38
|
{ human_price: val }
|
36
39
|
end
|
40
|
+
|
41
|
+
def old_amount(rebate)
|
42
|
+
{ old_amount: rebate.old_amount }
|
43
|
+
end
|
44
|
+
|
45
|
+
def old_currency(rebate)
|
46
|
+
{ old_currency: rebate.old_currency }
|
47
|
+
end
|
48
|
+
|
49
|
+
def old_human_price(rebate)
|
50
|
+
val = nil
|
51
|
+
if rebate.old_amount.present? && rebate.old_currency.present?
|
52
|
+
val = num_to_cur(rebate.old_amount, rebate.old_currency, @opts[:locale])
|
53
|
+
end
|
54
|
+
{ old_human_price: val }
|
55
|
+
end
|
37
56
|
end
|
38
57
|
end
|
39
58
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Users
|
2
|
+
class FindOrGenerateEmailTokenService
|
3
|
+
|
4
|
+
attr_reader :token, :generated
|
5
|
+
|
6
|
+
def perform(user_id, bid_id)
|
7
|
+
_reset_ivars
|
8
|
+
|
9
|
+
new_token = _find_token user_id, bid_id
|
10
|
+
new_token ||= _generate_token user_id, bid_id
|
11
|
+
@token = new_token
|
12
|
+
|
13
|
+
true
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
# @return [Nil]
|
19
|
+
# @return [String]
|
20
|
+
#
|
21
|
+
def _find_token(user_id, bid_id)
|
22
|
+
return unless user_id.present? && bid_id.present?
|
23
|
+
|
24
|
+
sql = 'SELECT user_email_tokens.token FROM user_email_tokens
|
25
|
+
INNER JOIN user_email_tokens_bids ON user_email_tokens.id = user_email_tokens_bids.token_id
|
26
|
+
WHERE user_email_tokens_bids.bid_id = %s
|
27
|
+
AND user_email_tokens.user_id = %s
|
28
|
+
AND user_email_tokens.subj_id IN (%s)
|
29
|
+
LIMIT 1 ' % [bid_id, user_id, Users::GenerateEmailTokenService.db_types.join(',')]
|
30
|
+
|
31
|
+
res = ::ActiveRecord::Base.connection.exec_query(sql)
|
32
|
+
res.as_json.dig(0, 'token')
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [String]
|
36
|
+
#
|
37
|
+
def _generate_token(user_id, bid_id)
|
38
|
+
@generated = true
|
39
|
+
user = ::User.find user_id
|
40
|
+
::Users::GenerateEmailTokenService.call user, ::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID.id, bid_id
|
41
|
+
end
|
42
|
+
|
43
|
+
def _reset_ivars
|
44
|
+
@token = nil
|
45
|
+
@generated = false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Users
|
2
|
+
class GenerateEmailTokenService
|
3
|
+
def self.call(user, email_token_subj_id, bid_id = nil)
|
4
|
+
user_email_token = ::UserEmailToken.new user: user
|
5
|
+
user_email_token.token = ::TokenGenerator.generate_token
|
6
|
+
user_email_token.expires_at = Time.now + 1.week
|
7
|
+
user_email_token.subj_id = email_token_subj_id
|
8
|
+
user_email_token.save!
|
9
|
+
|
10
|
+
create_bid_link(user_email_token.id, bid_id) if needed_types.include? email_token_subj_id
|
11
|
+
|
12
|
+
user_email_token.token
|
13
|
+
end
|
14
|
+
|
15
|
+
# создадим связку с Предложением, если токен генерится для ссылки на лодку в письме о новом Предложении, отправляемого Клиенту
|
16
|
+
def self.create_bid_link(user_email_token_id, bid_id)
|
17
|
+
return unless bid_id
|
18
|
+
|
19
|
+
opts = {
|
20
|
+
token_id: user_email_token_id,
|
21
|
+
bid_id: bid_id
|
22
|
+
}
|
23
|
+
sql = 'INSERT IGNORE INTO user_email_tokens_bids(token_id, bid_id) VALUES(%{token_id}, %{bid_id})' % opts
|
24
|
+
ActiveRecord::Base.connection.execute(sql)
|
25
|
+
end
|
26
|
+
|
27
|
+
# для таких типов генерим связку
|
28
|
+
def self.needed_types
|
29
|
+
[::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID.id]
|
30
|
+
end
|
31
|
+
|
32
|
+
# в базе могут лежать такие связки
|
33
|
+
def self.db_types
|
34
|
+
[::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID.id, ::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID_BOAT.id]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/c80_shared/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c80_shared
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C80609A
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,8 @@ files:
|
|
66
66
|
- app/serializers/lib/boats/dimensions.rb
|
67
67
|
- app/serializers/lib/boats/rent_price_per_season.rb
|
68
68
|
- app/serializers/lib/boats/sale_price.rb
|
69
|
+
- app/services/users/find_or_generate_email_token_service.rb
|
70
|
+
- app/services/users/generate_email_token_service.rb
|
69
71
|
- bin/console
|
70
72
|
- bin/rails
|
71
73
|
- bin/setup
|
@@ -79,6 +81,7 @@ files:
|
|
79
81
|
- lib/c80_shared/engine.rb
|
80
82
|
- lib/c80_shared/geo/distance.rb
|
81
83
|
- lib/c80_shared/middleware/images_proxy.rb
|
84
|
+
- lib/c80_shared/token_generator.rb
|
82
85
|
- lib/c80_shared/version.rb
|
83
86
|
homepage: http://google.com
|
84
87
|
licenses:
|
@@ -100,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
103
|
version: '0'
|
101
104
|
requirements: []
|
102
105
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.5.2.3
|
104
107
|
signing_key:
|
105
108
|
specification_version: 4
|
106
109
|
summary: Write a short summary, because RubyGems requires one.
|