Module: EnjuCirculation::EnjuUser
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/enju_circulation/enju_user.rb
Instance Method Summary collapse
- #check_item_before_destroy ⇒ Object
- #checked_item_count ⇒ Object
- #has_overdue?(day = 1) ⇒ Boolean
- #reached_reservation_limit?(manifestation) ⇒ Boolean
Instance Method Details
#check_item_before_destroy ⇒ Object
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_count ⇒ Object
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
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
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 |