Module: EnjuCirculation::EnjuUser

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/enju_circulation/enju_user.rb

Instance Method Summary collapse

Instance Method Details

#check_item_before_destroyObject



18
19
20
21
22
23
# File 'app/models/concerns/enju_circulation/enju_user.rb', line 18

def check_item_before_destroy
  # TODO: 貸出記録を残す場合
  if checkouts.size > 0
    raise 'This user has items still checked out.'
  end
end

#checked_item_countObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/models/concerns/enju_circulation/enju_user.rb', line 25

def checked_item_count
  checkout_count = {}
  CheckoutType.all.each do |checkout_type|
    # 資料種別ごとの貸出中の冊数を計算
    checkout_count[:"#{checkout_type.name}"] = checkouts.count_by_sql(["
      SELECT count(item_id) FROM checkouts
        WHERE item_id IN (
          SELECT id FROM items
            WHERE checkout_type_id = ?
        )
        AND user_id = ? AND checkin_id IS NULL", checkout_type.id, id]
    )
  end
  checkout_count
end

#has_overdue?(day = 1) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'app/models/concerns/enju_circulation/enju_user.rb', line 46

def has_overdue?(day = 1)
  true if checkouts.where(checkin_id: nil).where(Checkout.arel_table[:due_date].lt day.days.ago).count >= 1
end

#reached_reservation_limit?(manifestation) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
# File 'app/models/concerns/enju_circulation/enju_user.rb', line 41

def reached_reservation_limit?(manifestation)
  return true if profile.user_group.user_group_has_checkout_types.available_for_carrier_type(manifestation.carrier_type).where(user_group_id: profile.user_group.id).collect(&:reservation_limit).max.to_i <= reserves.waiting.size
  false
end