EvoBal/app/models/email.rb

72 lines
1.5 KiB
Ruby

# frozen_string_literal: true
class Email
include ActiveModel::Model
include ActiveModel::Attributes
include ActiveModel::Conversion
include ActiveModel::Dirty
include GlobalID::Identification
attribute :id
attribute :message_id
attribute :subject
attribute :date, :datetime
attribute :to
attribute :delivered_to
attribute :from
attribute :headers, default: []
attribute :plain_body
attribute :cron, :boolean, default: false
attribute :mailing_list, :boolean, default: false
attribute :junk, :boolean, default: false
attribute :organisations, default: []
attribute :servers, default: []
attribute :issues, default: []
attribute :postponed_until, :datetime
attribute :created_at, :datetime, default: DateTime.now
attribute :updated_at, :datetime, default: DateTime.now
validates :message_id, presence: true
validates :subject, presence: true
validates :date, presence: true
validates :delivered_to, presence: true
validates :from, presence: true
validates :headers, presence: true
def to_hash
attributes
end
def persisted?
id.present?
end
def cron?
cron
end
def mailing_list?
mailing_list
end
def junk?
junk
end
def postponed?
postponed_until.present? && postponed_until > DateTime.now
end
def header_values(header_name)
headers.select { |header|
header["name"] == header_name
}.filter_map { |header|
header["value"]
}
end
def self.find(id)
EmailRepository.new.find(id)
end
end