Class: MessageRequest

Inherits:
ApplicationRecord
  • Object
show all
Includes:
Statesman::Adapters::ActiveRecordQueries
Defined in:
app/models/message_request.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.send_messagesObject



58
59
60
61
62
63
64
# File 'app/models/message_request.rb', line 58

def self.send_messages
  count = MessageRequest.not_sent.size
  MessageRequest.not_sent.each do |request|
    request.transition_to!(:sent)
  end
  logger.info "#{Time.zone.now} sent #{count} messages!"
end

Instance Method Details

#save_message_body(options = {}) ⇒ Object



50
51
52
53
54
55
56
# File 'app/models/message_request.rb', line 50

def save_message_body(options = {})
  options = {
    receiver: receiver,
    locale: receiver.profile.locale
  }.merge(options)
  update!({body: message_template.embed_body(options)})
end

#send_messageObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/models/message_request.rb', line 25

def send_message
  message = nil
  MessageRequest.transaction do
    message = Message.create!(
      sender: sender,
      recipient: receiver.username,
      subject: subject,
      body: body,
      message_request: self
    )
    update!(sent_at: Time.zone.now)
    if ['reservation_expired_for_patron', 'reservation_expired_for_patron'].include?(message_template.status)
      self.receiver.reserves.each do |reserve|
        reserve.expiration_notice_to_patron = true
        reserve.save(validate: false)
      end
    end
  end
  return message
end

#state_machineObject



18
19
20
# File 'app/models/message_request.rb', line 18

def state_machine
  @state_machine ||= MessageRequestStateMachine.new(self, transition_class: MessageRequestTransition)
end

#subjectObject



46
47
48
# File 'app/models/message_request.rb', line 46

def subject
  message_template.title
end