app/models/wco_email/email_filter.rb



##
## 2023-03-04 _vp_ When I receive one.
##
class WcoEmail::EmailFilter
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Paranoia
  store_in collection: 'office_email_filters' # 'wco_email_email_filters'

  PAGE_PARAM_NAME = :filters_page

  FIELD_OPTS     = [ :subject, :from, :to, :to_and_cc, :body, ]
  MATCHTYPE_OPTS = [ :regex, :exact_insensitive, ]

  field :from_regex
  field :from_exact
  field :subject_regex
  field :subject_exact
  field :body_regex
  field :body_exact

  field :skip_from_regex
  field :skip_to_exact

  has_many :email_filter_conditions
  has_many :email_filter_skip_conditions, class_name: 'WcoEmail::EmailFilterCondition'

  has_and_belongs_to_many :action_tmpls, class_name: 'Wco::OfficeActionTemplate'
  has_and_belongs_to_many :leadsets,     class_name: 'Wco::Leadset'

  belongs_to :tag, class_name: 'Wco::Tag', inverse_of: :email_filters, optional: true

  KIND_AUTORESPOND_TMPL = 'autorespond-template'
  KIND_AUTORESPOND_EACT = 'autorespond-email-action'
  KIND_REMOVE_TAG       = 'remove-tag'
  KIND_ADD_TAG          = 'add-tag'
  KIND_DESTROY_SCHS     = 'destroy-schs'

  ## @deprecated
  KIND_AUTORESPOND = 'autorespond' ## @deprecated, DO NOT USE!
  KIND_DELETE      = 'delete'      ## @deprecated, use add-tag
  KIND_SKIP_INBOX  = 'skip-inbox'  ## @deprecated, use remove-tag

  KINDS = [ nil, KIND_AUTORESPOND_TMPL, KIND_AUTORESPOND_EACT, KIND_ADD_TAG, KIND_REMOVE_TAG, KIND_DESTROY_SCHS]
  field :kind


  belongs_to :email_template,        class_name: 'WcoEmail::EmailTemplate',         optional: true
  belongs_to :email_action_template, class_name: 'WcoEmail::EmailActionTemplate',   optional: true

  has_many :conversations, class_name: 'WcoEmail::Conversation', inverse_of: :filter

end