Sha256: bea126e5e116756bc504b1f87668b9b8117efc15cc88cae4504fcda812f395f1

Contents?: true

Size: 1.28 KB

Versions: 9

Compression:

Stored size: 1.28 KB

Contents

##
# As Contact 是联系方式的领域逻辑关注点。

module Unidom::Contact::Concerns::AsContact

  extend ActiveSupport::Concern

  included do |includer|

    has_many :contact_subscriptions, class_name: 'Unidom::Contact::ContactSubscription', as: :contact

    ##
    # 将当前联系方式与指定的参与者 by 关联起来。 at 是关联时间,缺省为当前时间。 name 是联系方式的备注。 primary 是主要联系标志。
    # 如: phone_number.is_subscribed_as_contact! by: current_person, at: Time.now, name: '私人手机号码', primary: true
    def is_subscribed_as_contact!(by: nil, at: Time.now, name: by.try(:name), primary: true)

      raise ArgumentError.new('The by argument is required.') if by.blank?
      raise ArgumentError.new('The at argument is required.') if at.blank?

      contact_subscriptions.subscribed_by(by).valid_at(now: at).alive.first_or_create! name: name, elemental: primary, opened_at: at

    end

    def is_subscribed_as_contact?(by: nil, at: Time.now, primary: true)

      raise ArgumentError.new('The by argument is required.') if by.blank?
      raise ArgumentError.new('The at argument is required.') if at.blank?

      contact_subscriptions.subscribed_by(by).valid_at(now: at).alive.primary(primary).exists?

    end

  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
unidom-contact-2.0 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4.6 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4.5 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4.4 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4.3 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4.2 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4.1 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.4 app/models/unidom/contact/concerns/as_contact.rb
unidom-contact-1.3.5 app/models/unidom/contact/concerns/as_contact.rb