enju_circulation 0.1.0.pre41 → 0.1.0.pre42
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/carrier_type_has_checkout_types_controller.rb +10 -4
- data/app/controllers/checked_items_controller.rb +8 -1
- data/app/controllers/checkins_controller.rb +6 -1
- data/app/controllers/checkout_types_controller.rb +8 -3
- data/app/controllers/checkouts_controller.rb +11 -4
- data/app/controllers/circulation_statuses_controller.rb +7 -2
- data/app/controllers/demands_controller.rb +85 -0
- data/app/controllers/item_has_use_restrictions_controller.rb +9 -3
- data/app/controllers/lending_policies_controller.rb +8 -1
- data/app/controllers/manifestation_checkout_stats_controller.rb +11 -2
- data/app/controllers/manifestation_reserve_stats_controller.rb +9 -2
- data/app/controllers/reserves_controller.rb +37 -9
- data/app/controllers/use_restrictions_controller.rb +7 -2
- data/app/controllers/user_checkout_stats_controller.rb +9 -2
- data/app/controllers/user_group_has_checkout_types_controller.rb +12 -2
- data/app/controllers/user_reserve_stats_controller.rb +9 -2
- data/app/helpers/items_helper.rb +17 -0
- data/app/models/carrier_type_has_checkout_type.rb +0 -1
- data/app/models/checked_item.rb +1 -2
- data/app/models/checkin.rb +0 -1
- data/app/models/checkout.rb +0 -1
- data/app/models/checkout_stat_has_manifestation.rb +2 -2
- data/app/models/checkout_stat_has_user.rb +2 -2
- data/app/models/checkout_type.rb +0 -2
- data/app/models/circulation_status.rb +0 -1
- data/app/models/demand.rb +5 -0
- data/app/models/enju_circulation/ability.rb +2 -0
- data/app/models/item_has_use_restriction.rb +0 -1
- data/app/models/lending_policy.rb +0 -2
- data/app/models/manifestation_checkout_stat.rb +5 -2
- data/app/models/manifestation_checkout_stat_transition.rb +1 -1
- data/app/models/manifestation_reserve_stat.rb +5 -2
- data/app/models/manifestation_reserve_stat_transition.rb +1 -1
- data/app/models/reserve.rb +24 -27
- data/app/models/reserve_stat_has_manifestation.rb +0 -3
- data/app/models/reserve_stat_has_user.rb +3 -3
- data/app/models/reserve_state_machine.rb +7 -7
- data/app/models/reserve_transition.rb +1 -1
- data/app/models/use_restriction.rb +0 -2
- data/app/models/user_checkout_stat.rb +5 -2
- data/app/models/user_checkout_stat_transition.rb +1 -1
- data/app/models/user_group_has_checkout_type.rb +0 -5
- data/app/models/user_reserve_stat.rb +5 -2
- data/app/models/user_reserve_stat_transition.rb +1 -1
- data/app/views/checkouts/_index.html.erb +1 -1
- data/app/views/checkouts/_index_item.html.erb +1 -1
- data/app/views/checkouts/_index_overdue.html.erb +1 -1
- data/app/views/checkouts/_index_user.html.erb +1 -1
- data/app/views/checkouts/_list.html.erb +2 -4
- data/app/views/demands/_form.html.erb +29 -0
- data/app/views/demands/edit.html.erb +6 -0
- data/app/views/demands/index.html.erb +31 -0
- data/app/views/demands/new.html.erb +5 -0
- data/app/views/demands/show.html.erb +19 -0
- data/app/views/manifestation_checkout_stats/_group_by_carrier_type.html.erb +29 -28
- data/app/views/manifestation_checkout_stats/_group_by_checkout_type.html.erb +29 -28
- data/config/locales/translation_en.yml +1 -0
- data/config/locales/translation_ja.yml +1 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20150106001709_create_demands.rb +14 -0
- data/lib/enju_circulation/accept.rb +1 -0
- data/lib/enju_circulation/carrier_type.rb +15 -0
- data/lib/enju_circulation/item.rb +3 -2
- data/lib/enju_circulation/profile.rb +0 -3
- data/lib/enju_circulation/user.rb +7 -3
- data/lib/enju_circulation/user_group.rb +0 -1
- data/lib/enju_circulation/version.rb +1 -1
- data/lib/enju_circulation.rb +2 -0
- data/spec/controllers/checked_items_controller_spec.rb +18 -18
- data/spec/controllers/checkouts_controller_spec.rb +3 -3
- data/spec/dummy/app/models/user.rb +0 -1
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config/application.rb +1 -1
- data/spec/dummy/config/environments/development.rb +2 -2
- data/spec/dummy/config/routes.rb +2 -0
- data/spec/dummy/db/migrate/{20111201155456_devise_create_users.rb → 002_devise_create_users.rb} +6 -2
- data/spec/dummy/db/migrate/041_create_roles.rb +13 -0
- data/spec/dummy/db/migrate/059_create_libraries.rb +1 -5
- data/spec/dummy/db/migrate/069_create_shelves.rb +1 -5
- data/spec/dummy/db/migrate/077_create_user_groups.rb +3 -7
- data/spec/dummy/db/migrate/080_create_library_groups.rb +2 -10
- data/spec/dummy/db/migrate/113_create_events.rb +2 -2
- data/spec/dummy/db/migrate/124_create_bookstores.rb +17 -0
- data/spec/dummy/db/migrate/130_create_request_status_types.rb +1 -5
- data/spec/dummy/db/migrate/131_create_request_types.rb +1 -5
- data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +17 -0
- data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +14 -0
- data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +17 -0
- data/spec/dummy/db/migrate/20081028093607_create_event_import_files.rb +25 -0
- data/spec/dummy/db/migrate/20090519203307_create_participates.rb +17 -0
- data/spec/dummy/db/migrate/20100314190054_add_opening_hour_to_library.rb +9 -0
- data/spec/dummy/db/migrate/{20111201163718_create_user_has_roles.rb → 20100606065209_create_user_has_roles.rb} +2 -0
- data/spec/dummy/db/migrate/20100925074639_create_event_import_results.rb +15 -0
- data/spec/dummy/db/migrate/{20111201121844_create_roles.rb → 20120129014038_create_budget_types.rb} +2 -2
- data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +14 -0
- data/spec/dummy/db/migrate/20120413051535_add_event_import_fingerprint_to_event_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413170734_add_error_message_to_event_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120415060342_rename_event_import_file_imported_at_to_executed_at.rb +9 -0
- data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +5 -0
- data/spec/dummy/db/migrate/20130412083556_add_latitude_and_longitude_to_library.rb +6 -0
- data/spec/dummy/db/migrate/20140110122216_create_user_import_files.rb +18 -0
- data/spec/dummy/db/migrate/20140110131010_create_user_import_results.rb +11 -0
- data/spec/dummy/db/migrate/20140122054321_create_profiles.rb +1 -1
- data/spec/dummy/db/migrate/20140523171309_create_event_import_file_transitions.rb +18 -0
- data/spec/dummy/db/migrate/20140524074813_create_user_import_file_transitions.rb +18 -0
- data/spec/dummy/db/migrate/20140628071719_add_user_encoding_to_event_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140628072217_add_user_encoding_to_user_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140709113413_create_user_export_files.rb +11 -0
- data/spec/dummy/db/migrate/20140709113905_create_user_export_file_transitions.rb +18 -0
- data/spec/dummy/db/migrate/20140720170714_add_default_library_id_to_user_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140720170735_add_default_user_group_id_to_user_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140720192418_add_default_library_id_to_event_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140812152348_create_event_export_files.rb +11 -0
- data/spec/dummy/db/migrate/20140812153137_create_event_export_file_transitions.rb +18 -0
- data/spec/dummy/db/migrate/20140814070854_add_default_event_category_id_to_event_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140821151023_create_colors.rb +14 -0
- data/spec/dummy/db/migrate/20141003181336_add_full_name_transcription_to_profile.rb +5 -0
- data/spec/dummy/db/migrate/20141003182825_add_date_of_birth_to_profile.rb +5 -0
- data/spec/dummy/db/schema.rb +246 -58
- data/spec/fixtures/checkouts.yml +1 -1
- data/spec/fixtures/demands.yml +11 -0
- data/spec/fixtures/events.yml +13 -39
- data/spec/fixtures/library_groups.yml +0 -2
- metadata +105 -43
- data/db/migrate/20111217234412_add_save_checkout_history_to_user.rb +0 -5
- data/db/migrate/20111218002349_add_checkout_icalendar_token_to_user.rb +0 -6
- data/spec/dummy/db/migrate/20090719201843_create_extents.rb +0 -12
- data/spec/dummy/db/migrate/20100222124420_add_allow_bookmark_external_url_to_library_group.rb +0 -9
- data/spec/dummy/db/migrate/20110115022329_add_position_to_library_group.rb +0 -9
- data/spec/dummy/db/migrate/20110425133109_add_issn_to_series_statement.rb +0 -9
- data/spec/dummy/db/migrate/20110618091240_add_periodical_to_series_statement.rb +0 -9
- data/spec/dummy/db/migrate/20110820131417_create_series_has_manifestations.rb +0 -13
- data/spec/dummy/db/migrate/20111020063828_remove_dsbl_from_library_group.rb +0 -11
- data/spec/dummy/db/migrate/20120224094141_create_delayed_jobs.rb +0 -22
- data/spec/dummy/script/delayed_job +0 -5
- data/spec/dummy/script/rails +0 -6
data/app/models/checkout_type.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
class CheckoutType < ActiveRecord::Base
|
2
|
-
attr_accessible :name, :display_name, :note
|
3
2
|
include MasterModel
|
4
|
-
default_scope { order('checkout_types.position') }
|
5
3
|
scope :available_for_carrier_type, lambda {|carrier_type| includes(:carrier_types).where('carrier_types.name = ?', carrier_type.name).order('carrier_types.position')}
|
6
4
|
scope :available_for_user_group, lambda {|user_group| includes(:user_groups).where('user_groups.name = ?', user_group.name).order('user_group.position')}
|
7
5
|
|
@@ -19,6 +19,7 @@ module EnjuCirculation
|
|
19
19
|
CheckoutStatHasManifestation,
|
20
20
|
CheckoutStatHasUser,
|
21
21
|
CheckoutType,
|
22
|
+
Demand,
|
22
23
|
ItemHasUseRestriction,
|
23
24
|
ManifestationCheckoutStat,
|
24
25
|
ManifestationReserveStat,
|
@@ -50,6 +51,7 @@ module EnjuCirculation
|
|
50
51
|
Basket,
|
51
52
|
CheckedItem,
|
52
53
|
Checkin,
|
54
|
+
Demand,
|
53
55
|
ManifestationCheckoutStat,
|
54
56
|
ManifestationReserveStat,
|
55
57
|
Reserve
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class ManifestationCheckoutStat < ActiveRecord::Base
|
2
|
-
include Statesman::Adapters::
|
2
|
+
include Statesman::Adapters::ActiveRecordQueries
|
3
3
|
include CalculateStat
|
4
|
-
attr_accessible :start_date, :end_date, :note, :mode
|
5
4
|
default_scope {order('manifestation_checkout_stats.id DESC')}
|
6
5
|
scope :not_calculated, -> {in_state(:pending)}
|
7
6
|
has_many :checkout_stat_has_manifestations
|
@@ -42,6 +41,10 @@ class ManifestationCheckoutStat < ActiveRecord::Base
|
|
42
41
|
def self.transition_class
|
43
42
|
ManifestationCheckoutStatTransition
|
44
43
|
end
|
44
|
+
|
45
|
+
def self.initial_state
|
46
|
+
:pending
|
47
|
+
end
|
45
48
|
end
|
46
49
|
|
47
50
|
# == Schema Information
|
@@ -3,7 +3,7 @@ class ManifestationCheckoutStatTransition < ActiveRecord::Base
|
|
3
3
|
|
4
4
|
|
5
5
|
belongs_to :manifestation_cehckout_stat, inverse_of: :manifestation_checkout_stat_transitions
|
6
|
-
attr_accessible :to_state, :sort_key, :metadata
|
6
|
+
#attr_accessible :to_state, :sort_key, :metadata
|
7
7
|
end
|
8
8
|
|
9
9
|
# == Schema Information
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class ManifestationReserveStat < ActiveRecord::Base
|
2
|
-
include Statesman::Adapters::
|
2
|
+
include Statesman::Adapters::ActiveRecordQueries
|
3
3
|
include CalculateStat
|
4
|
-
attr_accessible :start_date, :end_date, :note, :mode
|
5
4
|
default_scope {order('manifestation_reserve_stats.id DESC')}
|
6
5
|
scope :not_calculated, -> {in_state(:pending)}
|
7
6
|
has_many :reserve_stat_has_manifestations
|
@@ -42,6 +41,10 @@ class ManifestationReserveStat < ActiveRecord::Base
|
|
42
41
|
def self.transition_class
|
43
42
|
ManifestationReserveStatTransition
|
44
43
|
end
|
44
|
+
|
45
|
+
def self.initial_state
|
46
|
+
:pending
|
47
|
+
end
|
45
48
|
end
|
46
49
|
|
47
50
|
# == Schema Information
|
@@ -3,7 +3,7 @@ class ManifestationReserveStatTransition < ActiveRecord::Base
|
|
3
3
|
|
4
4
|
|
5
5
|
belongs_to :manifestation_reserve_stat, inverse_of: :manifestation_reserve_stat_transitions
|
6
|
-
attr_accessible :to_state, :sort_key, :metadata
|
6
|
+
#attr_accessible :to_state, :sort_key, :metadata
|
7
7
|
end
|
8
8
|
|
9
9
|
# == Schema Information
|
data/app/models/reserve.rb
CHANGED
@@ -1,14 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
class Reserve < ActiveRecord::Base
|
3
|
-
include Statesman::Adapters::
|
4
|
-
attr_accessible :manifestation_id, :user_number, :expired_at,
|
5
|
-
:pickup_location_id
|
6
|
-
attr_accessible :expired_at, :pickup_location_id, as: :user_update
|
7
|
-
attr_accessible :manifestation_id, :item_identifier, :user_number,
|
8
|
-
:expired_at, :request_status_type, :canceled_at, :checked_out_at,
|
9
|
-
:expiration_notice_to_patron, :expiration_notice_to_library, :item_id,
|
10
|
-
:retained_at, :postponed_at, :force_retaining, :pickup_location_id,
|
11
|
-
as: :admin
|
3
|
+
include Statesman::Adapters::ActiveRecordQueries
|
12
4
|
scope :hold, -> { where('item_id IS NOT NULL') }
|
13
5
|
scope :not_hold, -> { where(item_id: nil) }
|
14
6
|
scope :waiting, -> {not_in_state(:completed, :expired).where('canceled_at IS NULL AND expired_at > ?', Time.zone.now).order('reserves.id DESC')}
|
@@ -107,6 +99,7 @@ class Reserve < ActiveRecord::Base
|
|
107
99
|
string :title_transcription do
|
108
100
|
manifestation.try(:title_transcription)
|
109
101
|
end
|
102
|
+
integer :manifestation_id
|
110
103
|
end
|
111
104
|
|
112
105
|
def set_manifestation
|
@@ -176,58 +169,58 @@ class Reserve < ActiveRecord::Base
|
|
176
169
|
when 'requested'
|
177
170
|
message_template_to_patron = MessageTemplate.localized_template('reservation_accepted_for_patron', user.profile.locale)
|
178
171
|
request = MessageRequest.new
|
179
|
-
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron}
|
172
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron})
|
180
173
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
181
174
|
request.transition_to!(:sent) # 受付時は即時送信
|
182
175
|
message_template_to_library = MessageTemplate.localized_template('reservation_accepted_for_library', user.profile.locale)
|
183
176
|
request = MessageRequest.new
|
184
|
-
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}
|
177
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
|
185
178
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
186
179
|
request.transition_to!(:sent) # 受付時は即時送信
|
187
180
|
when 'canceled'
|
188
181
|
message_template_to_patron = MessageTemplate.localized_template('reservation_canceled_for_patron', user.profile.locale)
|
189
182
|
request = MessageRequest.new
|
190
|
-
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron}
|
183
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron})
|
191
184
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
192
185
|
request.transition_to!(:sent) # キャンセル時は即時送信
|
193
186
|
message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', user.profile.locale)
|
194
187
|
request = MessageRequest.new
|
195
|
-
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}
|
188
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
|
196
189
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
197
190
|
request.transition_to!(:sent) # キャンセル時は即時送信
|
198
191
|
when 'expired'
|
199
192
|
message_template_to_patron = MessageTemplate.localized_template('reservation_expired_for_patron', user.profile.locale)
|
200
193
|
request = MessageRequest.new
|
201
|
-
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron}
|
194
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron})
|
202
195
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
203
196
|
request.transition_to!(:sent)
|
204
197
|
reload
|
205
198
|
self.update_attribute(:expiration_notice_to_patron, true)
|
206
199
|
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.profile.locale)
|
207
200
|
request = MessageRequest.new
|
208
|
-
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}
|
201
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
|
209
202
|
request.save_message_body(manifestations: Array[manifestation], user: sender)
|
210
203
|
request.transition_to!(:sent)
|
211
204
|
when 'retained'
|
212
205
|
message_template_for_patron = MessageTemplate.localized_template('item_received_for_patron', user.profile.locale)
|
213
206
|
request = MessageRequest.new
|
214
|
-
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron}
|
207
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron})
|
215
208
|
request.save_message_body(manifestations: Array[item.manifestation], user: user)
|
216
209
|
request.transition_to!(:sent)
|
217
210
|
message_template_for_library = MessageTemplate.localized_template('item_received_for_library', user.profile.locale)
|
218
211
|
request = MessageRequest.new
|
219
|
-
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library}
|
212
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library})
|
220
213
|
request.save_message_body(manifestations: Array[item.manifestation], user: user)
|
221
214
|
request.transition_to!(:sent)
|
222
215
|
when 'postponed'
|
223
216
|
message_template_for_patron = MessageTemplate.localized_template('reservation_postponed_for_patron', user.profile.locale)
|
224
217
|
request = MessageRequest.new
|
225
|
-
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron}
|
218
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron})
|
226
219
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
227
220
|
request.transition_to!(:sent)
|
228
221
|
message_template_for_library = MessageTemplate.localized_template('reservation_postponed_for_library', user.profile.locale)
|
229
222
|
request = MessageRequest.new
|
230
|
-
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library}
|
223
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library})
|
231
224
|
request.save_message_body(manifestations: Array[manifestation], user: user)
|
232
225
|
request.transition_to!(:sent)
|
233
226
|
else
|
@@ -242,7 +235,7 @@ class Reserve < ActiveRecord::Base
|
|
242
235
|
when 'expired'
|
243
236
|
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.profile.locale)
|
244
237
|
request = MessageRequest.new
|
245
|
-
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}
|
238
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
|
246
239
|
request.save_message_body(manifestations: options[:manifestations])
|
247
240
|
self.not_sent_expiration_notice_to_library.readonly(false).each do |reserve|
|
248
241
|
reserve.expiration_notice_to_library = true
|
@@ -251,7 +244,7 @@ class Reserve < ActiveRecord::Base
|
|
251
244
|
#when 'canceled'
|
252
245
|
# message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', sender.locale)
|
253
246
|
# request = MessageRequest.new
|
254
|
-
# request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}
|
247
|
+
# request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
|
255
248
|
# request.save_message_body(manifestations: self.not_sent_expiration_notice_to_library.collect(&:manifestation))
|
256
249
|
# self.not_sent_cancel_notice_to_library.each do |reserve|
|
257
250
|
# reserve.update_attribute(:expiration_notice_to_library, true)
|
@@ -319,13 +312,13 @@ class Reserve < ActiveRecord::Base
|
|
319
312
|
|
320
313
|
private
|
321
314
|
def do_request
|
322
|
-
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, item_id: nil, retained_at: nil}
|
315
|
+
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, item_id: nil, retained_at: nil})
|
323
316
|
save!
|
324
317
|
end
|
325
318
|
|
326
319
|
def retain
|
327
320
|
# TODO: 「取り置き中」の状態を正しく表す
|
328
|
-
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now}
|
321
|
+
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now})
|
329
322
|
Reserve.transaction do
|
330
323
|
if item.try(:next_reservation)
|
331
324
|
reservation = item.next_reservation
|
@@ -337,7 +330,7 @@ class Reserve < ActiveRecord::Base
|
|
337
330
|
|
338
331
|
def expire
|
339
332
|
Reserve.transaction do
|
340
|
-
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now}
|
333
|
+
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now})
|
341
334
|
reserve = next_reservation
|
342
335
|
if reserve
|
343
336
|
reserve.item = item
|
@@ -351,7 +344,7 @@ class Reserve < ActiveRecord::Base
|
|
351
344
|
|
352
345
|
def cancel
|
353
346
|
Reserve.transaction do
|
354
|
-
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now}
|
347
|
+
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now})
|
355
348
|
save!
|
356
349
|
reserve = next_reservation
|
357
350
|
if reserve
|
@@ -364,7 +357,7 @@ class Reserve < ActiveRecord::Base
|
|
364
357
|
end
|
365
358
|
|
366
359
|
def checkout
|
367
|
-
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Available For Pickup').first, checked_out_at: Time.zone.now}
|
360
|
+
self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Available For Pickup').first, checked_out_at: Time.zone.now})
|
368
361
|
save!
|
369
362
|
end
|
370
363
|
|
@@ -374,7 +367,7 @@ class Reserve < ActiveRecord::Base
|
|
374
367
|
item_id: nil,
|
375
368
|
retained_at: nil,
|
376
369
|
postponed_at: Time.zone.now
|
377
|
-
}
|
370
|
+
})
|
378
371
|
save!
|
379
372
|
end
|
380
373
|
|
@@ -391,6 +384,10 @@ class Reserve < ActiveRecord::Base
|
|
391
384
|
def self.transition_class
|
392
385
|
ReserveTransition
|
393
386
|
end
|
387
|
+
|
388
|
+
def self.initial_state
|
389
|
+
:pending
|
390
|
+
end
|
394
391
|
end
|
395
392
|
|
396
393
|
# == Schema Information
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class ReserveStatHasUser < ActiveRecord::Base
|
2
|
-
attr_accessible
|
3
|
-
attr_accessible :user_reserve_stat_id, :user_id,
|
4
|
-
|
2
|
+
#attr_accessible
|
3
|
+
#attr_accessible :user_reserve_stat_id, :user_id,
|
4
|
+
# as: :admin
|
5
5
|
belongs_to :user_reserve_stat
|
6
6
|
belongs_to :user
|
7
7
|
|
@@ -14,12 +14,12 @@ class ReserveStateMachine
|
|
14
14
|
transition from: :requested, to: [:retained, :canceled, :expired, :completed]
|
15
15
|
|
16
16
|
after_transition(to: :requested) do |reserve|
|
17
|
-
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, item_id: nil, retained_at: nil}
|
17
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, item_id: nil, retained_at: nil})
|
18
18
|
end
|
19
19
|
|
20
20
|
after_transition(to: :retained) do |reserve|
|
21
21
|
# TODO: 「取り置き中」の状態を正しく表す
|
22
|
-
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now}
|
22
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now})
|
23
23
|
Reserve.transaction do
|
24
24
|
if reserve.item and reserve.next_reservation
|
25
25
|
reserve.item.reserves.waiting.readonly(false).map{|r|
|
@@ -35,7 +35,7 @@ class ReserveStateMachine
|
|
35
35
|
|
36
36
|
after_transition(to: :canceled) do |reserve|
|
37
37
|
Reserve.transaction do
|
38
|
-
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now}
|
38
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now})
|
39
39
|
next_reserve = reserve.next_reservation
|
40
40
|
if next_reserve
|
41
41
|
next_reserve.item = reserve.item
|
@@ -48,7 +48,7 @@ class ReserveStateMachine
|
|
48
48
|
|
49
49
|
after_transition(to: :expired) do |reserve|
|
50
50
|
Reserve.transaction do
|
51
|
-
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now}
|
51
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now})
|
52
52
|
next_reserve = reserve.next_reservation
|
53
53
|
if next_reserve
|
54
54
|
next_reserve.item = reserve.item
|
@@ -61,14 +61,14 @@ class ReserveStateMachine
|
|
61
61
|
end
|
62
62
|
|
63
63
|
after_transition(to: :postponed) do |reserve|
|
64
|
-
reserve.update_attributes(item_id: nil, retained_at: nil, postponed_at: Time.zone.now, force_retaining: "1"
|
64
|
+
reserve.update_attributes(item_id: nil, retained_at: nil, postponed_at: Time.zone.now, force_retaining: "1")
|
65
65
|
end
|
66
66
|
|
67
67
|
after_transition(to: :completed) do |reserve|
|
68
68
|
reserve.update_attributes(
|
69
69
|
request_status_type: RequestStatusType.where(name: 'Available For Pickup').first,
|
70
|
-
checked_out_at: Time.zone.now
|
71
|
-
|
70
|
+
checked_out_at: Time.zone.now
|
71
|
+
)
|
72
72
|
end
|
73
73
|
|
74
74
|
after_transition(to: :requested) do |reserve|
|
@@ -1,9 +1,7 @@
|
|
1
1
|
class UseRestriction < ActiveRecord::Base
|
2
|
-
attr_accessible :name, :display_name, :note
|
3
2
|
include MasterModel
|
4
3
|
validates :name, presence: true, format: { with: /\A[0-9A-Za-z][0-9A-Za-z_\-\s,]*[0-9a-z]\Z/ }
|
5
4
|
|
6
|
-
default_scope { order('use_restrictions.position') }
|
7
5
|
scope :available, -> {where(name: ['Not For Loan', 'Limited Circulation, Normal Loan Period'])}
|
8
6
|
has_many :item_has_use_restrictions
|
9
7
|
has_many :items, through: :item_has_use_restrictions
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class UserCheckoutStat < ActiveRecord::Base
|
2
|
-
include Statesman::Adapters::
|
2
|
+
include Statesman::Adapters::ActiveRecordQueries
|
3
3
|
include CalculateStat
|
4
|
-
attr_accessible :start_date, :end_date, :note, :mode
|
5
4
|
default_scope {order('user_checkout_stats.id DESC')}
|
6
5
|
scope :not_calculated, -> {in_state(:pending)}
|
7
6
|
has_many :checkout_stat_has_users
|
@@ -41,6 +40,10 @@ class UserCheckoutStat < ActiveRecord::Base
|
|
41
40
|
def self.transition_class
|
42
41
|
UserCheckoutStatTransition
|
43
42
|
end
|
43
|
+
|
44
|
+
def self.initial_state
|
45
|
+
:pending
|
46
|
+
end
|
44
47
|
end
|
45
48
|
|
46
49
|
# == Schema Information
|
@@ -3,7 +3,7 @@ class UserCheckoutStatTransition < ActiveRecord::Base
|
|
3
3
|
|
4
4
|
|
5
5
|
belongs_to :user_checkout_stat, inverse_of: :user_checkout_stat_transitions
|
6
|
-
attr_accessible :to_state, :sort_key, :metadata
|
6
|
+
#attr_accessible :to_state, :sort_key, :metadata
|
7
7
|
end
|
8
8
|
|
9
9
|
# == Schema Information
|
@@ -1,9 +1,4 @@
|
|
1
1
|
class UserGroupHasCheckoutType < ActiveRecord::Base
|
2
|
-
attr_accessible :user_group_id, :checkout_type_id,
|
3
|
-
:checkout_limit, :checkout_period, :checkout_renewal_limit,
|
4
|
-
:reservation_limit, :reservation_expired_period,
|
5
|
-
:set_due_date_before_closing_day, :fixed_due_date, :note, :position,
|
6
|
-
:user_group, :checkout_type
|
7
2
|
scope :available_for_item, lambda{|item| where(checkout_type_id: item.checkout_type.id)}
|
8
3
|
scope :available_for_carrier_type, lambda{|carrier_type| includes(checkout_type: :carrier_types).where('carrier_types.id' => carrier_type.id)}
|
9
4
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class UserReserveStat < ActiveRecord::Base
|
2
|
-
include Statesman::Adapters::
|
2
|
+
include Statesman::Adapters::ActiveRecordQueries
|
3
3
|
include CalculateStat
|
4
|
-
attr_accessible :start_date, :end_date, :note, :mode
|
5
4
|
default_scope {order('user_reserve_stats.id DESC')}
|
6
5
|
scope :not_calculated, -> {in_state(:pending)}
|
7
6
|
has_many :reserve_stat_has_users
|
@@ -41,6 +40,10 @@ class UserReserveStat < ActiveRecord::Base
|
|
41
40
|
def self.transition_class
|
42
41
|
UserReserveStatTransition
|
43
42
|
end
|
43
|
+
|
44
|
+
def self.initial_state
|
45
|
+
:pending
|
46
|
+
end
|
44
47
|
end
|
45
48
|
|
46
49
|
# == Schema Information
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<h1 class="title"><%= t('page.listing', model: t('activerecord.models.checkout')) -%></h1>
|
3
3
|
<div id="content_list">
|
4
4
|
<p id="notice"><%= notice %></p>
|
5
|
-
<%= render 'list' -%>
|
5
|
+
<%= render 'list', checkouts: @checkouts -%>
|
6
6
|
|
7
7
|
<%- if @checkouts.size == 0 -%>
|
8
8
|
<p><%= t('checkout.no_checkout') -%></p>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<h2><%= link_to item.item_identifier, item %></h2>
|
7
7
|
<p>(<%= link_to item.manifestation.original_title, item.manifestation %>)
|
8
8
|
|
9
|
-
<%= render 'list' -%>
|
9
|
+
<%= render 'list', checkouts: @checkouts -%>
|
10
10
|
|
11
11
|
<%- if @checkouts.size == 0 -%>
|
12
12
|
<p><%= t('checkout.no_checkout') -%></p>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<h1 class="title"><%= t('page.listing', model: t('activerecord.models.checkout')) -%></h1>
|
3
3
|
<div id="content_list">
|
4
4
|
<p id="notice"><%= notice %></p>
|
5
|
-
<%= render 'list' -%>
|
5
|
+
<%= render 'list', checkouts: @checkouts -%>
|
6
6
|
|
7
7
|
<%- if @checkouts.size == 0 -%>
|
8
8
|
<p><%= t('checkout.no_checkout') -%></p>
|
@@ -6,8 +6,7 @@
|
|
6
6
|
<th></th>
|
7
7
|
</tr>
|
8
8
|
|
9
|
-
<%-
|
10
|
-
<%- @checkouts.each_with_index do |checkout, i| %>
|
9
|
+
<%- checkouts.each_with_index do |checkout, i| %>
|
11
10
|
<tr class="line<%= cycle("0", "1") -%>">
|
12
11
|
<td>
|
13
12
|
<% if checkout.user %>
|
@@ -46,7 +45,6 @@
|
|
46
45
|
</td>
|
47
46
|
</tr>
|
48
47
|
<%- end -%>
|
49
|
-
<%- end -%>
|
50
48
|
</table>
|
51
49
|
|
52
|
-
<%= paginate(
|
50
|
+
<%= paginate(checkouts) %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<%= form_for(@demand) do |f| %>
|
2
|
+
<% if @demand.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@demand.errors.count, "error") %> prohibited this demand from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @demand.errors.full_messages.each do |message| %>
|
8
|
+
<li><%= message %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="field">
|
15
|
+
<%= f.label :user_id %><br>
|
16
|
+
<%= f.number_field :user_id %>
|
17
|
+
</div>
|
18
|
+
<div class="field">
|
19
|
+
<%= f.label :item_id %><br>
|
20
|
+
<%= f.number_field :item_id %>
|
21
|
+
</div>
|
22
|
+
<div class="field">
|
23
|
+
<%= f.label :message_id %><br>
|
24
|
+
<%= f.number_field :message_id %>
|
25
|
+
</div>
|
26
|
+
<div class="actions">
|
27
|
+
<%= f.submit %>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
2
|
+
|
3
|
+
<h1>Listing Demands</h1>
|
4
|
+
|
5
|
+
<table>
|
6
|
+
<thead>
|
7
|
+
<tr>
|
8
|
+
<th>User</th>
|
9
|
+
<th>Item</th>
|
10
|
+
<th>Message</th>
|
11
|
+
<th colspan="3"></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
|
15
|
+
<tbody>
|
16
|
+
<% @demands.each do |demand| %>
|
17
|
+
<tr>
|
18
|
+
<td><%= demand.user_id %></td>
|
19
|
+
<td><%= demand.item_id %></td>
|
20
|
+
<td><%= demand.message_id %></td>
|
21
|
+
<td><%= link_to 'Show', demand %></td>
|
22
|
+
<td><%= link_to 'Edit', edit_demand_path(demand) %></td>
|
23
|
+
<td><%= link_to 'Destroy', demand, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
24
|
+
</tr>
|
25
|
+
<% end %>
|
26
|
+
</tbody>
|
27
|
+
</table>
|
28
|
+
|
29
|
+
<br>
|
30
|
+
|
31
|
+
<%= link_to 'New Demand', new_demand_path %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
2
|
+
|
3
|
+
<p>
|
4
|
+
<strong>User:</strong>
|
5
|
+
<%= @demand.user_id %>
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<p>
|
9
|
+
<strong>Item:</strong>
|
10
|
+
<%= @demand.item_id %>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<p>
|
14
|
+
<strong>Message:</strong>
|
15
|
+
<%= @demand.message_id %>
|
16
|
+
</p>
|
17
|
+
|
18
|
+
<%= link_to 'Edit', edit_demand_path(@demand) %> |
|
19
|
+
<%= link_to 'Back', demands_path %>
|