enju_circulation 0.0.63 → 0.0.64
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/baskets_controller.rb +2 -3
- data/lib/enju_circulation/user.rb +65 -0
- data/lib/enju_circulation/version.rb +1 -1
- data/lib/enju_circulation.rb +2 -0
- data/spec/dummy/app/models/user.rb +1 -46
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/solr/data/test/index/segments_1 +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
- metadata +2 -1
@@ -46,8 +46,8 @@ class BasketsController < ApplicationController
|
|
46
46
|
# POST /baskets
|
47
47
|
# POST /baskets.json
|
48
48
|
def create
|
49
|
-
@basket = Basket.new
|
50
|
-
@user = User.where(:user_number =>
|
49
|
+
@basket = Basket.new(params[:basket])
|
50
|
+
@user = User.where(:user_number => @basket.user_number).first if @basket.user_number
|
51
51
|
if @user
|
52
52
|
if @user.user_number?
|
53
53
|
@basket.user = @user
|
@@ -81,7 +81,6 @@ class BasketsController < ApplicationController
|
|
81
81
|
return
|
82
82
|
end
|
83
83
|
|
84
|
-
#@checkout_count = @basket.user.checkouts.count
|
85
84
|
respond_to do |format|
|
86
85
|
#if @basket.update_attributes({})
|
87
86
|
if @basket.save(:validate => false)
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module EnjuCirculation
|
2
|
+
module User
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def enju_circulation_user
|
9
|
+
include InstanceMethods
|
10
|
+
attr_accessible :save_checkout_history, :checkout_icalendar_token
|
11
|
+
attr_accessible :save_checkout_history, :checkout_icalendar_token,
|
12
|
+
:as => :admin
|
13
|
+
|
14
|
+
has_many :checkouts, :dependent => :nullify
|
15
|
+
has_many :reserves, :dependent => :destroy
|
16
|
+
has_many :reserved_manifestations, :through => :reserves, :source => :manifestation
|
17
|
+
has_many :checkout_stat_has_users
|
18
|
+
has_many :user_checkout_stats, :through => :checkout_stat_has_users
|
19
|
+
has_many :reserve_stat_has_users
|
20
|
+
has_many :user_reserve_stats, :through => :reserve_stat_has_users
|
21
|
+
has_many :baskets, :dependent => :destroy
|
22
|
+
|
23
|
+
before_destroy :check_item_before_destroy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module InstanceMethods
|
28
|
+
def check_item_before_destroy
|
29
|
+
# TODO: 貸出記録を残す場合
|
30
|
+
if checkouts.size > 0
|
31
|
+
raise 'This user has items still checked out.'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def reset_checkout_icalendar_token
|
36
|
+
self.checkout_icalendar_token = Devise.friendly_token
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_checkout_icalendar_token
|
40
|
+
self.checkout_icalendar_token = nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def checked_item_count
|
44
|
+
checkout_count = {}
|
45
|
+
CheckoutType.all.each do |checkout_type|
|
46
|
+
# 資料種別ごとの貸出中の冊数を計算
|
47
|
+
checkout_count[:"#{checkout_type.name}"] = self.checkouts.count_by_sql(["
|
48
|
+
SELECT count(item_id) FROM checkouts
|
49
|
+
WHERE item_id IN (
|
50
|
+
SELECT id FROM items
|
51
|
+
WHERE checkout_type_id = ?
|
52
|
+
)
|
53
|
+
AND user_id = ? AND checkin_id IS NULL", checkout_type.id, self.id]
|
54
|
+
)
|
55
|
+
end
|
56
|
+
return checkout_count
|
57
|
+
end
|
58
|
+
|
59
|
+
def reached_reservation_limit?(manifestation)
|
60
|
+
return true if user_group.user_group_has_checkout_types.available_for_carrier_type(manifestation.carrier_type).where(:user_group_id => user_group.id).collect(&:reservation_limit).max.to_i <= reserves.waiting.size
|
61
|
+
false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/enju_circulation.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "enju_circulation/engine"
|
2
2
|
require "enju_circulation/manifestation"
|
3
|
+
require "enju_circulation/user"
|
3
4
|
require "enju_circulation/controller"
|
4
5
|
|
5
6
|
module EnjuCirculation
|
@@ -7,3 +8,4 @@ end
|
|
7
8
|
|
8
9
|
ActionController::Base.send :include, EnjuCirculation::Controller
|
9
10
|
ActiveRecord::Base.send :include, EnjuCirculation::Manifestation
|
11
|
+
ActiveRecord::Base.send :include, EnjuCirculation::User
|
@@ -12,56 +12,11 @@ class User < ActiveRecord::Base
|
|
12
12
|
has_one :role, :through => :user_has_role
|
13
13
|
belongs_to :user_group
|
14
14
|
belongs_to :required_role, :class_name => 'Role', :foreign_key => 'required_role_id'
|
15
|
-
has_many :checkouts, :dependent => :nullify
|
16
|
-
has_many :reserves, :dependent => :destroy
|
17
|
-
has_many :reserved_manifestations, :through => :reserves, :source => :manifestation
|
18
|
-
has_many :checkout_stat_has_users
|
19
|
-
has_many :user_checkout_stats, :through => :checkout_stat_has_users
|
20
|
-
has_many :reserve_stat_has_users
|
21
|
-
has_many :user_reserve_stats, :through => :reserve_stat_has_users
|
22
|
-
has_many :baskets, :dependent => :destroy
|
23
15
|
belongs_to :library
|
24
16
|
|
25
|
-
before_destroy :check_item_before_destroy
|
26
|
-
|
27
17
|
extend FriendlyId
|
28
18
|
friendly_id :username
|
29
|
-
|
30
|
-
def check_item_before_destroy
|
31
|
-
# TODO: 貸出記録を残す場合
|
32
|
-
if checkouts.size > 0
|
33
|
-
raise 'This user has items still checked out.'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def reset_checkout_icalendar_token
|
38
|
-
self.checkout_icalendar_token = Devise.friendly_token
|
39
|
-
end
|
40
|
-
|
41
|
-
def delete_checkout_icalendar_token
|
42
|
-
self.checkout_icalendar_token = nil
|
43
|
-
end
|
44
|
-
|
45
|
-
def checked_item_count
|
46
|
-
checkout_count = {}
|
47
|
-
CheckoutType.all.each do |checkout_type|
|
48
|
-
# 資料種別ごとの貸出中の冊数を計算
|
49
|
-
checkout_count[:"#{checkout_type.name}"] = self.checkouts.count_by_sql(["
|
50
|
-
SELECT count(item_id) FROM checkouts
|
51
|
-
WHERE item_id IN (
|
52
|
-
SELECT id FROM items
|
53
|
-
WHERE checkout_type_id = ?
|
54
|
-
)
|
55
|
-
AND user_id = ? AND checkin_id IS NULL", checkout_type.id, self.id]
|
56
|
-
)
|
57
|
-
end
|
58
|
-
return checkout_count
|
59
|
-
end
|
60
|
-
|
61
|
-
def reached_reservation_limit?(manifestation)
|
62
|
-
return true if self.user_group.user_group_has_checkout_types.available_for_carrier_type(manifestation.carrier_type).where(:user_group_id => self.user_group.id).collect(&:reservation_limit).max.to_i <= self.reserves.waiting.size
|
63
|
-
false
|
64
|
-
end
|
19
|
+
enju_circulation_user
|
65
20
|
|
66
21
|
def has_role?(role_in_question)
|
67
22
|
return false unless role
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enju_circulation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.64
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -450,6 +450,7 @@ files:
|
|
450
450
|
- lib/enju_circulation/controller.rb
|
451
451
|
- lib/enju_circulation/engine.rb
|
452
452
|
- lib/enju_circulation/manifestation.rb
|
453
|
+
- lib/enju_circulation/user.rb
|
453
454
|
- lib/enju_circulation/version.rb
|
454
455
|
- lib/enju_circulation.rb
|
455
456
|
- lib/tasks/enju_circulation_tasks.rake
|