31 lines
733 B
Ruby
31 lines
733 B
Ruby
class Mailbox < ApplicationRecord
|
|
has_many :emails, dependent: :destroy
|
|
|
|
validates :name, presence: true
|
|
|
|
validates :sendgrid_mock_api_token, presence: true
|
|
validates :sendgrid_mock_api_token, uniqueness: true
|
|
|
|
validates :sendgrid_api_token, presence: true
|
|
|
|
before_validation :generate_sendgrid_mock_api_token
|
|
|
|
def unread_count
|
|
self.emails.unread.count
|
|
end
|
|
|
|
def mark_all_as_read!
|
|
self.emails.unread.update_all(read_at: Time.zone.now)
|
|
end
|
|
|
|
private
|
|
|
|
def generate_sendgrid_mock_api_token
|
|
return if sendgrid_mock_api_token.present?
|
|
self.sendgrid_mock_api_token = loop do
|
|
token = SecureRandom.uuid
|
|
break token unless self.class.exists?(sendgrid_mock_api_token: token)
|
|
end
|
|
end
|
|
end
|