Class: Users::GenerateEmailTokenService

Inherits:
Object
  • Object
show all
Defined in:
app/services/users/generate_email_token_service.rb

Class Method Summary collapse

Class Method Details

.call(user, email_token_subj_id, bid_id = nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'app/services/users/generate_email_token_service.rb', line 3

def self.call(user, email_token_subj_id, bid_id = nil)
  user_email_token            = ::UserEmailToken.new user: user
  user_email_token.token      = ::TokenGenerator.generate_token
  user_email_token.expires_at = Time.now + 1.week
  user_email_token.subj_id    = email_token_subj_id
  user_email_token.save!

  create_bid_link(user_email_token.id, bid_id) if needed_types.include? email_token_subj_id

  user_email_token.token
end

создадим связку с Предложением, если токен генерится для ссылки на лодку в письме о новом Предложении, отправляемого Клиенту



16
17
18
19
20
21
22
23
24
25
# File 'app/services/users/generate_email_token_service.rb', line 16

def self.create_bid_link(user_email_token_id, bid_id)
  return unless bid_id

  opts = {
    token_id: user_email_token_id,
    bid_id:   bid_id
  }
  sql  = 'INSERT IGNORE INTO user_email_tokens_bids(token_id, bid_id) VALUES(%{token_id}, %{bid_id})' % opts
  ActiveRecord::Base.connection.execute(sql)
end

.db_typesObject

в базе могут лежать такие связки



33
34
35
# File 'app/services/users/generate_email_token_service.rb', line 33

def self.db_types
  [::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID.id, ::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID_BOAT.id]
end

.needed_typesObject

для таких типов генерим связку



28
29
30
# File 'app/services/users/generate_email_token_service.rb', line 28

def self.needed_types
  [::Dicts::EmailTokenSubj::TO_CLIENT_NEW_BID.id]
end