lib/active_campaign/models/contact.rb in ractive_campaign-0.1.0 vs lib/active_campaign/models/contact.rb in ractive_campaign-0.1.1
- old
+ new
@@ -1,36 +1,49 @@
# frozen_string_literal: true
module ActiveCampaign
- class Contact < Model # :nodoc:
+ #
+ # @example Contacts
+ #
+ # ActiveCampaign::Contact.find(1)
+ # ActiveCampaign::Contact.find_by email: "contact-1@mail.com"
+ # ActiveCampaign::Contact.find(1).destroy
+ # ActiveCampaign::Contact.find(1).contact_tags
+ #
+ class Contact < Model
define_attributes :email,
:phone,
:firstName,
- :lastName,
- :orgid,
- :orgname,
- :segmentio_id,
- :bounced_hard,
- :bounced_soft,
- :bounced_date,
- :ip,
- :ua,
- :hash,
- :socialdata_lastcheck,
- :email_local,
- :email_domain,
- :sentcnt,
- :rating_tstamp,
- :gravatar,
- :deleted,
- :anonymized,
- :adate,
- :udate,
- :edate,
- :deleted_at,
- :email_empty,
- :mpp_tracking,
- :scoreValues,
- :accountContacts,
- :organization
+ :lastName
+
+ # @example Find contact's tags.
+ #
+ # ActiveCampaign::Contact.find(1).contact_tags
+ # ActiveCampaign::Contact.find(1).contact_tags.last.destroy
+ #
+ def contact_tags
+ ContactTag.get "#{self.class.endpoint}/#{id}/contactTags"
+ end
+
+ # @example Apply a tag to a contact.
+ #
+ # ActiveCampaign::Contact.find(1).add_tag "tag-name"
+ #
+ def add_tag(tag)
+ tag_id = Tag.find_by(tag: tag)&.id
+
+ ActiveCampaign::ContactTag.create contact: id, tag: tag_id if tag_id
+ end
+
+ # @example Remove a tag from a contact.
+ #
+ # ActiveCampaign::Contact.find(1).remove_tag "tag-name"
+ #
+ def remove_tag(tag)
+ tag_id = Tag.find_by(tag: tag)&.id
+
+ contact_tag = contact_tags.filter_map { |ct| ct if ct.tag == tag_id }.last
+
+ contact_tag&.destroy
+ end
end
end