Sha256: 059588932ba0a2b4c646214bcc9273f0cbe24fda1094dbe191445ea4a441ef84

Contents?: true

Size: 1.29 KB

Versions: 17

Compression:

Stored size: 1.29 KB

Contents

require "renalware/letters"
require "attr_extras"

module Renalware
  module Letters
    module Delivery
      # This is a utility class that a host app might want to use to send an approved letter
      # to the patient's practice.
      class EmailLetterToPractice
        pattr_initialize [:letter!]
        delegate :email_letter_to_practice?, :gp_recipient, to: :policy

        def self.call(letter)
          new(letter: letter).call
        end

        # Returns
        #   true: we have sent an email to the patient's practice
        #   false: the patient does not have a practice or the practice has no email address
        def call
          return false unless email_letter_to_practice?
          email_letter_to_the_patients_practice_and_flag_as_sent
          true
        end

        private

        def email_letter_to_the_patients_practice_and_flag_as_sent
          Letter.transaction do
            mail = PracticeMailer.patient_letter(letter: letter, to: practice_email_address)
            mail.deliver_later
            gp_recipient.update(emailed_at: Time.zone.now)
          end
        end

        def practice_email_address
          PracticeEmail.new(letter).address
        end

        def policy
          @policy ||= DeliveryPolicy.new(letter)
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
renalware-core-2.0.8 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.7 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.5 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.4 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.3 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.2 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.1 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc13 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc11 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc10 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc9 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc8 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc7 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc6 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc5 app/models/renalware/letters/delivery/email_letter_to_practice.rb
renalware-core-2.0.0.pre.rc4 app/models/renalware/letters/delivery/email_letter_to_practice.rb