Sha256: 4f5df233b7c87386f67a0b4b4e7b0451da3d59bbd782db2f3cd27e19f5a9ee65

Contents?: true

Size: 1.42 KB

Versions: 56

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/letters"

# Represents an Electronic CC - a reference to a letter sent to a recipient (another user on the
# system) as a 'CC'. We use the concept of a 'receipt' which, while mainly being a cross table
# between letter and recipient user, is also a well-named place to store related information
# for example whether the message has been read (e.g. the letter viewed).
module Renalware
  module Letters
    class ElectronicReceipt < ApplicationRecord
      belongs_to :letter, touch: true
      belongs_to :recipient, class_name: "Renalware::User"
      validates :letter, presence: true
      validates :recipient_id, presence: true

      # Merge scope here to make sure we only get approved letters
      scope :sent_by, lambda{ |user_id|
        joins(:letter)
          .merge(Letter::Approved.all)
          .where(letter_letters: { author_id: user_id })
      }
      scope :unread, lambda {
        where(read_at: nil)
          .joins(:letter)
          .merge(Letter.approved_or_completed)
      }
      scope :read, lambda {
        where.not(read_at: nil)
          .joins(:letter)
          .merge(Letter.approved_or_completed)
      }
      scope :for_recipient, ->(user_id) { where(recipient_id: user_id) }
      scope :ordered, -> { order(created_at: :desc) }

      def read?
        read_at.present?
      end

      def unread?
        !read?
      end
    end
  end
end

Version data entries

56 entries across 56 versions & 1 rubygems

Version Path
renalware-core-2.0.77 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.76 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.75 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.74 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.73 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.72 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.71 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.70 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.69 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.68 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.67 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.64 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.63 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.62 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.61 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.60 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.58 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.57 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.56 app/models/renalware/letters/electronic_receipt.rb
renalware-core-2.0.55 app/models/renalware/letters/electronic_receipt.rb