Class: UserMessage

Inherits:
ApplicationRecord show all
Includes:
Toggleable
Defined in:
app/models/user_message.rb

Constant Summary collapse

PER_PAGE =
20

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.creation_parametersObject



51
52
53
# File 'app/models/user_message.rb', line 51

def self.creation_parameters
  entity_parameters + %i(receiver_id)
end

.dialog_page(user, other_user, page) ⇒ Object

Parameters:

  • user (User)
  • other_user (User)
  • page (Integer)


39
40
41
42
43
44
45
# File 'app/models/user_message.rb', line 39

def self.dialog_page(user, other_user, page)
  clause      = 'sender_id = ? and receiver_id = ?'
  as_sender   = "(#{clause} and deleted_by_sender = false)"
  as_receiver = "(#{clause} and deleted_by_receiver = false)"
  where("#{as_sender} or #{as_receiver}", user, other_user, other_user, user).
      recent.page(page).per(PER_PAGE)
end

.entity_parametersObject



47
48
49
# File 'app/models/user_message.rb', line 47

def self.entity_parameters
  %i(body)
end

.page_for_administration(page, filter = {}) ⇒ Object

Parameters:

  • page (Integer)
  • filter (Hash) (defaults to: {})


26
27
28
# File 'app/models/user_message.rb', line 26

def self.page_for_administration(page, filter = {})
  filtered(filter).recent.page(page).per(PER_PAGE)
end

.page_for_owner(user, page) ⇒ Object

Parameters:

  • user (User)
  • page (Integer)


32
33
34
# File 'app/models/user_message.rb', line 32

def self.page_for_owner(user, page)
  visible_to_user(user).recent.page(page).per(PER_PAGE)
end

Instance Method Details

#destroy_by_user(user) ⇒ Object

Parameters:

  • user (User)


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

def destroy_by_user(user)
  if sender?(user)
    update(deleted_by_sender: true)
    receiver.slug
  elsif receiver?(user)
    update(deleted_by_receiver: true)
    sender.slug
  end
end

#receiver?(user) ⇒ Boolean

Parameters:

  • user (User)

Returns:

  • (Boolean)


83
84
85
# File 'app/models/user_message.rb', line 83

def receiver?(user)
  user == receiver
end

#sender?(user) ⇒ Boolean

Parameters:

  • user (User)

Returns:

  • (Boolean)


78
79
80
# File 'app/models/user_message.rb', line 78

def sender?(user)
  user == sender
end

#visible_to?(user) ⇒ Boolean

Parameters:

  • user (User)

Returns:

  • (Boolean)


67
68
69
70
71
72
73
74
75
# File 'app/models/user_message.rb', line 67

def visible_to?(user)
  if sender?(user)
    !deleted_by_sender?
  elsif receiver?(user)
    !deleted_by_receiver?
  else
    false
  end
end