# frozen_string_literal: true class Email include ActiveModel::Model include ActiveModel::Attributes include ActiveModel::Conversion 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 :clients, default: [] attribute :servers, default: [] attribute :tickets, default: [] 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 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