Sha256: 21fabf883a9bee9bbd4f1c5b1dd4194a383bde44047871df53ab27a7e16491d0
Contents?: true
Size: 1.75 KB
Versions: 10
Compression:
Stored size: 1.75 KB
Contents
module EnjuCirculation module EnjuUser extend ActiveSupport::Concern included do has_many :checkouts, :dependent => :nullify has_many :reserves, :dependent => :destroy has_many :reserved_manifestations, :through => :reserves, :source => :manifestation has_many :checkout_stat_has_users has_many :user_checkout_stats, :through => :checkout_stat_has_users has_many :reserve_stat_has_users has_many :user_reserve_stats, :through => :reserve_stat_has_users has_many :baskets, :dependent => :destroy before_destroy :check_item_before_destroy end def check_item_before_destroy # TODO: 貸出記録を残す場合 if checkouts.size > 0 raise 'This user has items still checked out.' end end def checked_item_count checkout_count = {} CheckoutType.all.each do |checkout_type| # 資料種別ごとの貸出中の冊数を計算 checkout_count[:"#{checkout_type.name}"] = self.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, self.id] ) end checkout_count end 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 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 end end
Version data entries
10 entries across 10 versions & 1 rubygems