Sha256: 8dc378887eab8a93b10c3733f00f814b3e38a5d954c6b4192c0d48580e1dbefd

Contents?: true

Size: 1.23 KB

Versions: 37

Compression:

Stored size: 1.23 KB

Contents

#
# Base template object for managing all communications templates
#
class Template
  include StandardModel
  #
  # Fields
  #
  field :name, type: String
  field :template, type: String
  #
  # Relationships
  #
  belongs_to :account, inverse_of: :templates
  #
  # Validations
  #
  validates :name, uniqueness: { scope: :account_id }
  validates :name, presence: true
  validates :template, presence: true
  validate :valid_liquid_template

  private

  #
  # Ensure that the template is correct from a liquid statement
  #
  def valid_liquid_template
    Liquid::Template.parse(self.template).nil?
  rescue Exception => error
    self.errors.add(:template, "Invalid liquid text in template: #{error.message}")
    false
  end

  #
  # Retrieve the template out of the project
  #
  def self.from_file(template_name, format: 'liquid', prefix: nil, delivery_channel: 'email')
    file_name = [template_name, prefix, format].compact.join('.')
    if File.exist?(Rails.root.join('lib/templates', delivery_channel, file_name))
      File.open(Rails.root.join('lib/templates', delivery_channel, file_name))
    else
      File.read(File.join(__dir__, '../../lib/templates', delivery_channel, file_name))
    end.read
  rescue StandardError
    nil
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
web47core-1.1.1 lib/app/models/template.rb
web47core-1.1.0 lib/app/models/template.rb
web47core-1.0.18 lib/app/models/template.rb
web47core-1.0.17 lib/app/models/template.rb
web47core-1.0.16 lib/app/models/template.rb
web47core-1.0.15 lib/app/models/template.rb
web47core-1.0.14 lib/app/models/template.rb
web47core-1.0.13 lib/app/models/template.rb
web47core-1.0.12 lib/app/models/template.rb
web47core-1.0.11 lib/app/models/template.rb
web47core-1.0.10 lib/app/models/template.rb
web47core-1.0.8 lib/app/models/template.rb
web47core-1.0.7 lib/app/models/template.rb
web47core-1.0.6 lib/app/models/template.rb
web47core-1.0.5 lib/app/models/template.rb
web47core-1.0.4 lib/app/models/template.rb
web47core-1.0.3 lib/app/models/template.rb
web47core-1.0.2 lib/app/models/template.rb
web47core-1.0.1 lib/app/models/template.rb
web47core-1.0.0 lib/app/models/template.rb