class PanRecipient < Base::PanRecipient
  associations_for legacy: true do |a|
    a.belongs_to :school
  end

  belongs_to :pan_message, foreign_key: :MessageID, optional: true
  belongs_to :recipient, foreign_key: :ToUID, class_name: 'User'
  belongs_to :author, foreign_key: :FromUID, class_name: 'User'

  after_save :trigger_pan_count
  after_save :delete_all_pans, if: :deleted?

  after_commit :send_email_notification, on: :create

  scope :not_deleted, -> { where(deleted: 0) }
  scope :ordered, -> { order(date: :desc) }

  private
    def trigger_pan_count
      return unless new_record? || !closed_was.zero?

      Notification::PanJob.perform_async(recipient.id)
    end

    def delete_all_pans
      return unless pan_message.deleted? && pan_message.pan_recipients.all?(&:deleted?)

      pan_message.destroy
    end

    def send_email_notification
      Internal::Pans::NotificationService.call(school, id)
    end
end
