mysociety/alaveteli

View on GitHub
app/models/outgoing_message/template/internal_review.rb

Summary

Maintainability
A
0 mins
Test Coverage
class OutgoingMessage
  module Template
    class InternalReview
      def self.details_placeholder
        _('GIVE DETAILS ABOUT YOUR COMPLAINT HERE')
      end

      def body(opts = {})
        assert_required_keys(opts, :public_body_name, :info_request_title, :url)
        template_string(opts)
      end

      def salutation(replacements = {})
        _("Dear {{public_body_name}},", replacements)
      end

      def letter(replacements = {})
        if replacements[:letter]
          "\n\n#{ replacements[:letter] }"
        else
          msg = _("Please pass this on to the person who conducts Freedom " \
                   "of Information reviews.")
          msg += "\n\n"
          msg += _("I am writing to request an internal review of " \
                   "{{public_body_name}}'s handling of my FOI request " \
                   "'{{info_request_title}}'.",
                   replacements)
          msg += "\n\n\n\n"
          msg += " [ #{ self.class.details_placeholder } ]"

          unless replacements[:embargo]
            msg += "\n\n\n\n"
            msg += _("A full history of my FOI request and all " \
                     "correspondence is available on the Internet at this " \
                     "address: {{url}}",
                     replacements)
          end

          ActiveSupport::SafeBuffer.new("\n\n") << msg
        end
      end

      def signoff(replacements = {})
        _("Yours faithfully,", replacements)
      end

      private

      def template_string(replacements)
        msg = salutation(replacements)
        msg += letter(replacements)
        msg += "\n\n\n"
        msg += signoff(replacements)
        msg += "\n\n"
      end

      def assert_required_keys(hash, *required_keys)
        required_keys.each do |required_key|
          unless hash.key?(required_key)
            raise ArgumentError, "Missing required key: #{required_key}"
          end
        end
      end
    end
  end
end