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

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

Делаем это только для того, чтобы найти уже сгенерированный токен, зная id Предложения, чтобы повторно его использовать (т.е. вставить в письмо-уведомление о предоставленной скидке)



23
24
25
26
27
28
29
30
31
32
# File 'app/services/users/generate_email_token_service.rb', line 23

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

.needed_typesObject

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



35
36
37
# File 'app/services/users/generate_email_token_service.rb', line 35

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