enju_circulation 0.1.0.pre36 → 0.1.0.pre37
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 +11 -11
- data/app/controllers/checked_items_controller.rb +13 -13
- data/app/controllers/checkins_controller.rb +14 -15
- data/app/controllers/checkout_types_controller.rb +10 -10
- data/app/controllers/checkouts_controller.rb +18 -19
- data/app/controllers/item_has_use_restrictions_controller.rb +10 -10
- data/app/controllers/lending_policies_controller.rb +1 -1
- data/app/controllers/manifestation_checkout_stats_controller.rb +15 -13
- data/app/controllers/manifestation_reserve_stats_controller.rb +15 -13
- data/app/controllers/reserves_controller.rb +27 -28
- data/app/controllers/user_checkout_stats_controller.rb +15 -13
- data/app/controllers/user_group_has_checkout_types_controller.rb +11 -11
- data/app/controllers/user_reserve_stats_controller.rb +15 -13
- data/app/models/carrier_type_has_checkout_type.rb +6 -6
- data/app/models/checked_item.rb +20 -18
- data/app/models/checkin.rb +13 -14
- data/app/models/checkout.rb +20 -21
- 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 +9 -9
- data/app/models/circulation_status.rb +13 -3
- data/app/models/enju_circulation/ability.rb +1 -1
- data/app/models/item_has_use_restriction.rb +3 -3
- data/app/models/lending_policy.rb +4 -4
- data/app/models/manifestation_checkout_stat.rb +4 -3
- data/app/models/manifestation_checkout_stat_transition.rb +13 -0
- data/app/models/manifestation_reserve_stat.rb +4 -3
- data/app/models/manifestation_reserve_stat_transition.rb +13 -0
- data/app/models/reserve.rb +123 -157
- data/app/models/reserve_stat_has_manifestation.rb +2 -2
- data/app/models/reserve_stat_has_user.rb +2 -2
- data/app/models/reserve_state_machine.rb +93 -0
- data/app/models/reserve_transition.rb +20 -0
- data/app/models/use_restriction.rb +5 -5
- data/app/models/user_checkout_stat.rb +4 -3
- data/app/models/user_checkout_stat_transition.rb +13 -0
- data/app/models/user_group_has_checkout_type.rb +8 -8
- data/app/models/user_reserve_stat.rb +4 -3
- data/app/models/user_reserve_stat_transition.rb +13 -0
- data/app/views/carrier_type_has_checkout_types/_form.html.erb +3 -3
- data/app/views/carrier_type_has_checkout_types/edit.html.erb +1 -1
- data/app/views/carrier_type_has_checkout_types/index.html.erb +3 -3
- data/app/views/carrier_type_has_checkout_types/new.html.erb +1 -1
- data/app/views/carrier_type_has_checkout_types/show.html.erb +1 -1
- data/app/views/carrier_types/_checkout_form.html.erb +1 -1
- data/app/views/checked_items/_checked_item.html.erb +3 -3
- data/app/views/checked_items/_checkout.html.erb +3 -3
- data/app/views/checked_items/_list.html.erb +3 -3
- data/app/views/checked_items/edit.html.erb +1 -1
- data/app/views/checked_items/index.html.erb +1 -1
- data/app/views/checked_items/new.html.erb +3 -3
- data/app/views/checked_items/show.html.erb +1 -1
- data/app/views/checkins/_checkin.html.erb +3 -3
- data/app/views/checkins/_form.html.erb +1 -1
- data/app/views/checkins/_list.html.erb +2 -2
- data/app/views/checkins/edit.html.erb +1 -1
- data/app/views/checkins/index.html.erb +2 -2
- data/app/views/checkins/new.html.erb +3 -3
- data/app/views/checkins/show.html.erb +1 -1
- data/app/views/checkout_types/_form.html.erb +2 -2
- data/app/views/checkout_types/edit.html.erb +1 -1
- data/app/views/checkout_types/index.html.erb +4 -4
- data/app/views/checkout_types/new.html.erb +1 -1
- data/app/views/checkout_types/show.html.erb +2 -2
- data/app/views/checkouts/_index.html.erb +7 -7
- data/app/views/checkouts/_index_item.html.erb +5 -5
- data/app/views/checkouts/_index_overdue.html.erb +7 -7
- data/app/views/checkouts/_index_user.html.erb +13 -13
- data/app/views/checkouts/_list.html.erb +5 -5
- data/app/views/checkouts/_reserved_facet.html.erb +2 -2
- data/app/views/checkouts/edit.html.erb +8 -8
- data/app/views/checkouts/index.atom.builder +3 -3
- data/app/views/checkouts/index.html.erb +3 -3
- data/app/views/checkouts/index.rss.builder +9 -9
- data/app/views/checkouts/index.txt.erb +4 -0
- data/app/views/checkouts/new.html.erb +2 -2
- data/app/views/checkouts/show.html.erb +7 -7
- data/app/views/circulation_statuses/_form.html.erb +2 -2
- data/app/views/circulation_statuses/edit.html.erb +1 -1
- data/app/views/circulation_statuses/index.html.erb +3 -3
- data/app/views/circulation_statuses/new.html.erb +1 -1
- data/app/views/circulation_statuses/show.html.erb +1 -1
- data/app/views/item_has_use_restrictions/edit.html.erb +1 -1
- data/app/views/item_has_use_restrictions/index.html.erb +4 -4
- data/app/views/item_has_use_restrictions/new.html.erb +2 -2
- data/app/views/item_has_use_restrictions/show.html.erb +1 -1
- data/app/views/lending_policies/_form.html.erb +1 -1
- data/app/views/lending_policies/edit.html.erb +1 -1
- data/app/views/lending_policies/index.html.erb +2 -2
- data/app/views/lending_policies/new.html.erb +1 -1
- data/app/views/lending_policies/show.html.erb +2 -2
- data/app/views/manifestation_checkout_stats/_form.html.erb +1 -1
- data/app/views/manifestation_checkout_stats/edit.html.erb +1 -1
- data/app/views/manifestation_checkout_stats/index.html.erb +3 -4
- data/app/views/manifestation_checkout_stats/new.html.erb +1 -1
- data/app/views/manifestation_checkout_stats/show.html.erb +3 -4
- data/app/views/manifestation_checkout_stats/show.txt.erb +4 -0
- data/app/views/manifestation_reserve_stats/_form.html.erb +1 -1
- data/app/views/manifestation_reserve_stats/edit.html.erb +1 -1
- data/app/views/manifestation_reserve_stats/index.html.erb +3 -4
- data/app/views/manifestation_reserve_stats/new.html.erb +1 -1
- data/app/views/manifestation_reserve_stats/show.html.erb +3 -4
- data/app/views/manifestation_reserve_stats/show.txt.erb +4 -0
- data/app/views/my_accounts/_feed_token.html.erb +3 -3
- data/app/views/reserves/_form.html.erb +1 -1
- data/app/views/reserves/_new.html.erb +9 -9
- data/app/views/reserves/_new_user.html.erb +13 -13
- data/app/views/reserves/_state_facet.html.erb +2 -2
- data/app/views/reserves/_title.html.erb +1 -1
- data/app/views/reserves/edit.html.erb +7 -7
- data/app/views/reserves/index.atom.builder +3 -3
- data/app/views/reserves/index.html.erb +26 -26
- data/app/views/reserves/index.rss.builder +10 -10
- data/app/views/reserves/index.txt.erb +4 -0
- data/app/views/reserves/show.html.erb +9 -9
- data/app/views/use_restrictions/_form.html.erb +2 -2
- data/app/views/use_restrictions/edit.html.erb +1 -1
- data/app/views/use_restrictions/index.html.erb +3 -3
- data/app/views/use_restrictions/new.html.erb +1 -1
- data/app/views/use_restrictions/show.html.erb +1 -1
- data/app/views/user_checkout_stats/_form.html.erb +1 -1
- data/app/views/user_checkout_stats/edit.html.erb +1 -1
- data/app/views/user_checkout_stats/index.html.erb +3 -4
- data/app/views/user_checkout_stats/new.html.erb +1 -1
- data/app/views/user_checkout_stats/show.html.erb +3 -4
- data/app/views/user_checkout_stats/show.txt.erb +4 -0
- data/app/views/user_group_has_checkout_types/edit.html.erb +7 -7
- data/app/views/user_group_has_checkout_types/index.html.erb +3 -3
- data/app/views/user_group_has_checkout_types/new.html.erb +9 -9
- data/app/views/user_group_has_checkout_types/show.html.erb +1 -1
- data/app/views/user_groups/_checkout_form.html.erb +6 -6
- data/app/views/user_reserve_stats/_form.html.erb +1 -1
- data/app/views/user_reserve_stats/edit.html.erb +1 -1
- data/app/views/user_reserve_stats/index.html.erb +3 -4
- data/app/views/user_reserve_stats/new.html.erb +1 -1
- data/app/views/user_reserve_stats/show.html.erb +3 -4
- data/app/views/user_reserve_stats/show.txt.erb +4 -0
- data/app/views/users/_feed_token.html.erb +3 -3
- data/config/initializers/inflections.rb +3 -0
- data/config/locales/translation_en.yml +6 -0
- data/config/locales/translation_ja.yml +6 -0
- data/config/routes.rb +8 -10
- data/db/migrate/035_create_reserves.rb +0 -1
- data/db/migrate/20081212080038_create_manifestation_checkout_stats.rb +0 -1
- data/db/migrate/20081215094302_create_user_checkout_stats.rb +0 -1
- data/db/migrate/20081216190724_create_manifestation_reserve_stats.rb +0 -1
- data/db/migrate/20081220023628_create_user_reserve_stats.rb +0 -1
- data/db/migrate/20090321130448_add_completed_at_to_user_checkout_stat.rb +0 -4
- data/db/migrate/20140518050147_create_reserve_transitions.rb +14 -0
- data/db/migrate/20140810061942_add_user_id_to_user_checkout_stat.rb +12 -0
- data/db/migrate/20140810091231_add_checkout_icalendar_token_to_profile.rb +6 -0
- data/db/migrate/20140810091417_add_save_checkout_history_to_profile.rb +5 -0
- data/lib/enju_circulation/engine.rb +0 -4
- data/lib/enju_circulation/item.rb +4 -4
- data/lib/enju_circulation/manifestation.rb +2 -2
- data/lib/enju_circulation/profile.rb +26 -0
- data/lib/enju_circulation/user.rb +1 -1
- data/lib/enju_circulation/version.rb +1 -1
- data/lib/enju_circulation.rb +2 -0
- data/lib/generators/enju_circulation/setup/setup_generator.rb +2 -0
- data/lib/generators/enju_circulation/setup/templates/db/fixtures/circulation_statuses.yml +48 -25
- data/lib/generators/enju_circulation/setup/templates/db/fixtures/use_restrictions.yml +39 -13
- data/lib/tasks/circulation_status.rb +6 -0
- data/lib/tasks/enju_circulation_tasks.rake +14 -0
- data/lib/tasks/reserve.rb +5 -0
- data/lib/tasks/use_restriction.rb +6 -0
- data/spec/controllers/carrier_type_has_checkout_types_controller_spec.rb +21 -21
- data/spec/controllers/checkins_controller_spec.rb +22 -22
- data/spec/controllers/checkout_types_controller_spec.rb +21 -21
- data/spec/controllers/checkouts_controller_spec.rb +14 -14
- data/spec/controllers/circulation_statuses_controller_spec.rb +21 -21
- data/spec/controllers/item_has_use_restrictions_controller_spec.rb +21 -21
- data/spec/controllers/lending_policies_controller_spec.rb +21 -21
- data/spec/controllers/manifestation_checkout_stats_controller_spec.rb +21 -21
- data/spec/controllers/manifestation_reserve_stats_controller_spec.rb +21 -21
- data/spec/controllers/reserves_controller_spec.rb +32 -32
- data/spec/controllers/use_restrictions_controller_spec.rb +21 -21
- data/spec/controllers/user_checkout_stats_controller_spec.rb +21 -21
- data/spec/controllers/user_group_has_checkout_types_controller_spec.rb +21 -21
- data/spec/controllers/user_reserve_stats_controller_spec.rb +21 -21
- data/spec/dummy/app/models/user.rb +2 -46
- data/spec/dummy/config/environments/test.rb +2 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/001_create_agents.rb +0 -8
- data/spec/dummy/db/migrate/005_create_manifestations.rb +7 -12
- data/spec/dummy/db/migrate/006_create_items.rb +0 -6
- data/spec/dummy/db/migrate/112_create_frequencies.rb +12 -0
- data/spec/dummy/db/migrate/117_create_form_of_works.rb +12 -0
- data/spec/dummy/db/migrate/154_create_messages.rb +0 -1
- data/spec/dummy/db/migrate/20080819181903_create_message_requests.rb +0 -2
- data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +20 -0
- data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +20 -0
- data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +15 -0
- data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +15 -0
- data/spec/dummy/db/migrate/20090719201843_create_extents.rb +12 -0
- data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +12 -0
- data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +12 -0
- data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +12 -0
- data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +14 -0
- data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +15 -0
- data/spec/dummy/db/migrate/20100925074559_create_agent_import_results.rb +12 -0
- data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +9 -0
- data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +11 -0
- data/spec/dummy/db/migrate/20111201155456_devise_create_users.rb +42 -0
- data/spec/dummy/db/migrate/20120125050502_add_depth_to_message.rb +6 -0
- data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +6 -0
- data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +6 -0
- data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413170720_add_error_message_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20120511072422_add_agent_identifier_to_agent.rb +6 -0
- data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20121116031206_add_fulltext_content_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20130221154434_add_additional_attributes_to_user.rb +16 -0
- data/spec/dummy/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +7 -0
- data/spec/dummy/db/migrate/20130421164124_add_series_master_to_series_statement.rb +5 -0
- data/spec/dummy/db/migrate/20130429020822_add_root_manifestation_id_to_series_statement.rb +6 -0
- data/spec/dummy/db/migrate/20140122054321_create_profiles.rb +20 -0
- data/spec/dummy/db/migrate/20140518111006_create_message_transitions.rb +14 -0
- data/spec/dummy/db/migrate/20140518135713_create_message_request_transitions.rb +14 -0
- data/spec/dummy/db/migrate/20140519170214_create_resource_import_file_transitions.rb +14 -0
- data/spec/dummy/db/migrate/20140519171220_create_import_request_transitions.rb +14 -0
- data/spec/dummy/db/migrate/20140524020735_create_agent_import_file_transitions.rb +14 -0
- data/spec/dummy/db/migrate/20140614065404_create_resource_export_files.rb +11 -0
- data/spec/dummy/db/migrate/20140614141500_create_resource_export_file_transitions.rb +14 -0
- data/spec/dummy/db/migrate/20140628073524_add_user_encoding_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140628073535_add_user_encoding_to_resource_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140720140916_add_binding_item_identifier_to_item.rb +8 -0
- data/spec/dummy/db/migrate/20140721151416_add_default_shelf_id_to_resource_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20140802082007_add_manifestation_id_to_item.rb +6 -0
- data/spec/dummy/db/migrate/20140811031145_add_expired_at_to_profile.rb +5 -0
- data/spec/dummy/db/schema.rb +315 -56
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/solr/conf/admin-extra.html +31 -0
- data/spec/dummy/solr/conf/elevate.xml +36 -0
- data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/spec/dummy/solr/conf/protwords.txt +21 -0
- data/spec/dummy/solr/conf/schema.xml +255 -0
- data/spec/dummy/solr/conf/scripts.conf +24 -0
- data/spec/dummy/solr/conf/solrconfig.xml +667 -0
- data/spec/dummy/solr/conf/spellings.txt +2 -0
- data/spec/dummy/solr/conf/stopwords.txt +58 -0
- data/spec/dummy/solr/conf/synonyms.txt +31 -0
- data/spec/dummy/solr/default/data/index/_7f0.fdt +0 -0
- data/spec/dummy/solr/default/data/index/_7f0.fdx +0 -0
- data/spec/dummy/solr/default/data/index/_7f0.fnm +0 -0
- data/spec/dummy/solr/default/data/index/_7f0.nvd +0 -0
- data/spec/dummy/solr/default/data/index/_7f0.nvm +0 -0
- data/spec/dummy/solr/default/data/index/_7f0.si +0 -0
- data/spec/dummy/solr/default/data/index/_7f0_Lucene41_0.doc +0 -0
- data/spec/dummy/solr/default/data/index/_7f0_Lucene41_0.pos +0 -0
- data/spec/dummy/solr/default/data/index/_7f0_Lucene41_0.tim +0 -0
- data/spec/dummy/solr/default/data/index/_7f0_Lucene41_0.tip +0 -0
- data/spec/dummy/solr/default/data/index/segments.gen +0 -0
- data/spec/dummy/solr/default/data/index/segments_bvw +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015394 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015395 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015396 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015397 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015398 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015399 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015400 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015401 +0 -0
- data/spec/dummy/solr/default/data/tlog/tlog.0000000000000015402 +0 -0
- data/spec/dummy/solr/development/data/index/segments.gen +0 -0
- data/spec/dummy/solr/development/data/index/segments_1 +0 -0
- data/spec/dummy/solr/solr.xml +8 -0
- data/spec/dummy/solr/test/data/index/segments.gen +0 -0
- data/spec/dummy/solr/test/data/index/segments_1 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/0007f9aec08cc2727b3d00cd62cf1d0f +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/0440b81b0aae840cf287a686585a8cec +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/0e3e358e4fe4601ba5e435f6d0c86f12 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/129cec5384c0f26fcfb0ce65048298c5 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/1572dfd6f1e555f4be1aa60ddc3cb0c0 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/181c975b1296d7ebe81714d5e64bc098 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/1c1fbab93e4552626da626e0dbe70c74 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/1e58a07a3701da9fb9c176d67162af2b +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2b35ad8fee7e1228e205669278e2adda +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f09f58943a88f21e3a0318621391785 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2ffe508d0533d0afd2a37bb574eda40d +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/3753d928863ee65118b9f2da1c6e504d +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/40e90f0c329b14292a9ff1a2fe907b39 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/45f3c74e1e31b58d9bda6908d5623290 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/49a3464eb6bcffb3d9f5b47b133edabb +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/49d32c13d390c1b80d8b2705aac86579 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/4aa18096a209e515f5f1df487622cdf4 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/50e64f45f0cb4cee52fd3f3908f89a82 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/51f7d34a9e9bebb47b7201cfebfec34d +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/5995180d1cfd7cad71ec6d9e1a538f0e +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/604e0e4b3c01d488d6fb087e9fdaeb94 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/6401fc09d2b894df2ad251b007df145a +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/65a8d4d288e5f082f0166aa7be7a2464 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/6f5d66df18892df6af39c9cfd784f0f5 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/6fcdd2234a7c25f9d4179ca12fd9f7b4 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/6fdb4513af157010ef79b56df44d665e +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/750439d8043ed022910956fbb55faa65 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/811e5198d0dc4efe02d28c0c2215e207 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/83ea20e0b25e77f5dce5bf733b088292 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/9604073a83f822f13caaabd7e157bbbb +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/98d02556564ee10aef4c3397bb94d5b9 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/9cfe4d48f5258863dbfb3623c797fb15 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/a296264dcc89e1f8ab6382e678ffbe38 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/aa2e1ada35daa496bb08e85fcb817536 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/abee2d4cb18d15789dcdc9c680f3e6de +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/c1ab0ecf3cf57db41d9e4cd9306d8829 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/c4a984c6feb506f3e1f9120a8d029bda +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/ccdcb26ebc6ef3b684368b368edf4f99 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d34b5413caa9407126db68d5d590804a +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d4ac74c17332ad931b72f42d7997fcc0 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/dd672deb061233e0db1d2f413d27213f +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e1fcfb0faa3c12467a1c35251e04c8b1 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e2d21478696ac96ad895f7c3b8d31594 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e577e9ce00153ad2e59111f761d0fb15 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e9738177de2083b68d42e053a1529244 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e9ce2df3f0160329df69b22a911dbd04 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f2e83d3b5fe984832bfeff09b0e3b8d2 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f90eee17e0e5eaea50e6064ded54617c +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/fa8e81ce1d45228121b9df5618542190 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/fbdc1d9347cb228f06807b76c6c2974e +0 -0
- data/spec/dummy/tmp/cache/stdout +1262 -0
- data/spec/dummy/tmp/pids/redis-test.pid +1 -0
- data/spec/factories/profile.rb +9 -0
- data/spec/factories/reserve.rb +7 -1
- data/spec/factories/user.rb +3 -9
- data/spec/fixtures/agents.yml +0 -12
- data/spec/fixtures/checkouts.yml +12 -1
- data/spec/fixtures/items.yml +48 -25
- data/spec/fixtures/manifestation_checkout_stats.yml +3 -4
- data/spec/fixtures/manifestation_reserve_stats.yml +3 -4
- data/spec/fixtures/message_requests.yml +0 -3
- data/spec/fixtures/message_templates.yml +41 -20
- data/spec/fixtures/profiles.yml +83 -0
- data/spec/fixtures/reserve_transitions.yml +88 -0
- data/spec/fixtures/reserves.yml +1 -18
- data/spec/fixtures/user_checkout_stats.yml +3 -4
- data/spec/fixtures/user_groups.yml +3 -3
- data/spec/fixtures/user_reserve_stats.yml +3 -4
- data/spec/fixtures/users.yml +0 -55
- data/spec/models/checked_item_spec.rb +2 -1
- data/spec/models/checkout_spec.rb +0 -1
- data/spec/models/manifestation_checkout_stat_spec.rb +4 -2
- data/spec/models/manifestation_reserve_stat_spec.rb +4 -2
- data/spec/models/reserve_spec.rb +9 -11
- data/spec/models/user_checkout_stat_spec.rb +4 -2
- data/spec/models/user_reserve_stat_spec.rb +4 -2
- data/spec/support/resque.rb +25 -22
- metadata +325 -92
- data/app/controllers/checkout_stat_has_manifestations_controller.rb +0 -81
- data/app/controllers/checkout_stat_has_users_controller.rb +0 -81
- data/app/controllers/reserve_stat_has_manifestations_controller.rb +0 -81
- data/app/controllers/reserve_stat_has_users_controller.rb +0 -81
- data/app/models/circulation_sweeper.rb +0 -24
- data/app/views/checkout_stat_has_manifestations/_form.html.erb +0 -15
- data/app/views/checkout_stat_has_manifestations/edit.html.erb +0 -13
- data/app/views/checkout_stat_has_manifestations/index.html.erb +0 -33
- data/app/views/checkout_stat_has_manifestations/new.html.erb +0 -12
- data/app/views/checkout_stat_has_manifestations/show.html.erb +0 -28
- data/app/views/checkout_stat_has_users/_form.html.erb +0 -15
- data/app/views/checkout_stat_has_users/edit.html.erb +0 -13
- data/app/views/checkout_stat_has_users/index.html.erb +0 -33
- data/app/views/checkout_stat_has_users/new.html.erb +0 -12
- data/app/views/checkout_stat_has_users/show.html.erb +0 -28
- data/app/views/checkouts/index.csv.erb +0 -4
- data/app/views/manifestation_checkout_stats/show.csv.erb +0 -4
- data/app/views/manifestation_reserve_stats/show.csv.erb +0 -4
- data/app/views/reserve_stat_has_manifestations/_form.html.erb +0 -15
- data/app/views/reserve_stat_has_manifestations/edit.html.erb +0 -13
- data/app/views/reserve_stat_has_manifestations/index.html.erb +0 -33
- data/app/views/reserve_stat_has_manifestations/new.html.erb +0 -12
- data/app/views/reserve_stat_has_manifestations/show.html.erb +0 -28
- data/app/views/reserve_stat_has_users/_form.html.erb +0 -15
- data/app/views/reserve_stat_has_users/edit.html.erb +0 -13
- data/app/views/reserve_stat_has_users/index.html.erb +0 -33
- data/app/views/reserve_stat_has_users/new.html.erb +0 -12
- data/app/views/reserve_stat_has_users/show.html.erb +0 -28
- data/app/views/reserves/index.csv.erb +0 -4
- data/app/views/user_checkout_stats/show.csv.erb +0 -4
- data/app/views/user_reserve_stats/show.csv.erb +0 -4
- data/db/fixtures/carrier_type_has_checkout_types.yml +0 -8
- data/db/fixtures/checkout_types.yml +0 -22
- data/db/fixtures/circulation_statuses.yml +0 -92
- data/db/fixtures/use_restrictions.yml +0 -79
- data/db/migrate/20130303104849_add_state_index_to_reserve.rb +0 -5
- data/spec/controllers/checkout_stat_has_manifestations_controller_spec.rb +0 -441
- data/spec/controllers/checkout_stat_has_users_controller_spec.rb +0 -441
- data/spec/controllers/reserve_stat_has_manifestations_controller_spec.rb +0 -441
- data/spec/controllers/reserve_stat_has_users_controller_spec.rb +0 -441
- data/spec/dummy/app/mailers/notifier.rb +0 -29
- data/spec/dummy/db/migrate/20110916053430_rename_manifestation_number_list_to_number_string.rb +0 -13
- data/spec/dummy/db/migrate/20111201155456_create_users.rb +0 -16
- data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +0 -44
data/app/models/reserve.rb
CHANGED
@@ -1,46 +1,46 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
class Reserve < ActiveRecord::Base
|
3
|
+
include Statesman::Adapters::ActiveRecordModel
|
3
4
|
attr_accessible :manifestation_id, :user_number, :expired_at
|
4
|
-
attr_accessible :expired_at, :
|
5
|
+
attr_accessible :expired_at, as: :user_update
|
5
6
|
attr_accessible :manifestation_id, :item_identifier, :user_number,
|
6
7
|
:expired_at, :request_status_type, :canceled_at, :checked_out_at,
|
7
8
|
:expiration_notice_to_patron, :expiration_notice_to_library, :item_id,
|
8
9
|
:retained_at, :postponed_at, :force_retaining,
|
9
|
-
:
|
10
|
+
as: :admin
|
10
11
|
scope :hold, where('item_id IS NOT NULL')
|
11
|
-
scope :not_hold, where(:
|
12
|
-
scope :waiting, where('canceled_at IS NULL AND expired_at > ?
|
13
|
-
scope :retained, where('retained_at IS NOT NULL
|
14
|
-
scope :completed, where('checked_out_at IS NOT NULL
|
15
|
-
scope :canceled, where('canceled_at IS NOT NULL
|
16
|
-
scope :postponed, where('postponed_at IS NOT NULL
|
17
|
-
scope :will_expire_retained, lambda {|datetime|
|
18
|
-
scope :will_expire_pending, lambda {|datetime|
|
19
|
-
scope :created, lambda {|start_date, end_date| {:
|
20
|
-
scope :not_sent_expiration_notice_to_patron,
|
21
|
-
scope :not_sent_expiration_notice_to_library,
|
22
|
-
scope :sent_expiration_notice_to_patron,
|
23
|
-
scope :sent_expiration_notice_to_library,
|
24
|
-
scope :
|
25
|
-
scope :not_sent_cancel_notice_to_library,
|
26
|
-
|
27
|
-
belongs_to :
|
28
|
-
belongs_to :
|
29
|
-
belongs_to :
|
30
|
-
belongs_to :item #, :validate => true
|
12
|
+
scope :not_hold, where(item_id: nil)
|
13
|
+
scope :waiting, -> {not_in_state(:completed, :expired).where('canceled_at IS NULL AND expired_at > ?', Time.zone.now).order('reserves.id DESC')}
|
14
|
+
scope :retained, -> {in_state(:retained).where('retained_at IS NOT NULL')}
|
15
|
+
scope :completed, -> {in_state(:completed).where('checked_out_at IS NOT NULL')}
|
16
|
+
scope :canceled, -> {in_state(:canceled).where('canceled_at IS NOT NULL')}
|
17
|
+
scope :postponed, -> {in_state(:postponed).where('postponed_at IS NOT NULL')}
|
18
|
+
scope :will_expire_retained, lambda {|datetime| in_state(:retained).where('checked_out_at IS NULL AND canceled_at IS NULL AND expired_at <= ?', datetime).order('expired_at')}
|
19
|
+
scope :will_expire_pending, lambda {|datetime| in_state(:pending).where('checked_out_at IS NULL AND canceled_at IS NULL AND expired_at <= ?', datetime).order('expired_at')}
|
20
|
+
scope :created, lambda {|start_date, end_date| {conditions: ['created_at >= ? AND created_at < ?', start_date, end_date]}}
|
21
|
+
scope :not_sent_expiration_notice_to_patron, -> {in_state(:expired).where(:expiration_notice_to_patron => false)}
|
22
|
+
scope :not_sent_expiration_notice_to_library, -> {in_state(:expired).where(:expiration_notice_to_library => false)}
|
23
|
+
scope :sent_expiration_notice_to_patron, -> {in_state(:expired).where(:expiration_notice_to_patron => true)}
|
24
|
+
scope :sent_expiration_notice_to_library, -> {in_state(:expired).where(:expiration_notice_to_library => true)}
|
25
|
+
scope :not_sent_cancel_notice_to_patron, -> {in_state(:canceled).where(:expiration_notice_to_patron => false)}
|
26
|
+
scope :not_sent_cancel_notice_to_library, -> {in_state(:canceled).where(:expiration_notice_to_library => false)}
|
27
|
+
belongs_to :user
|
28
|
+
belongs_to :manifestation, touch: true
|
29
|
+
belongs_to :librarian, class_name: 'User'
|
30
|
+
belongs_to :item, touch: true
|
31
31
|
belongs_to :request_status_type
|
32
32
|
|
33
33
|
validates_associated :user, :librarian, :request_status_type
|
34
|
-
validates :manifestation, :associated => true #, :
|
34
|
+
validates :manifestation, :associated => true #, on: :create
|
35
35
|
validates_presence_of :user, :request_status_type
|
36
|
-
validates :manifestation, :
|
36
|
+
validates :manifestation, presence: true, :unless => Proc.new{|reserve|
|
37
37
|
reserve.completed?
|
38
38
|
}
|
39
|
-
#validates_uniqueness_of :manifestation_id, :
|
40
|
-
validates_date :expired_at, :
|
39
|
+
#validates_uniqueness_of :manifestation_id, scope: :user_id
|
40
|
+
validates_date :expired_at, allow_blank: true
|
41
41
|
validate :manifestation_must_include_item
|
42
|
-
validate :available_for_reservation?, :
|
43
|
-
validates :item_id, :
|
42
|
+
validate :available_for_reservation?, on: :create
|
43
|
+
validates :item_id, presence: true, :if => Proc.new{|reserve|
|
44
44
|
if item_id_changed?
|
45
45
|
if reserve.completed? or reserve.retained?
|
46
46
|
unless item_id_change[0]
|
@@ -59,63 +59,25 @@ class Reserve < ActiveRecord::Base
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
}
|
62
|
-
validates :item_id, :uniqueness => {:scope => :state, :allow_blank => true},
|
63
|
-
:if => Proc.new{|reserve|
|
64
|
-
return false unless reserve.state_changed?
|
65
|
-
return true if reserve.completed? or reserve.retained?
|
66
|
-
}
|
67
62
|
validate :valid_item?
|
68
63
|
validate :retained_by_other_user?
|
69
|
-
before_validation :set_manifestation, :
|
64
|
+
before_validation :set_manifestation, on: :create
|
70
65
|
before_validation :set_item, :set_expired_at
|
71
|
-
before_validation :set_user, :
|
72
|
-
before_validation :set_request_status, :
|
66
|
+
before_validation :set_user, on: :update
|
67
|
+
before_validation :set_request_status, on: :create
|
73
68
|
|
74
69
|
attr_accessor :user_number, :item_identifier, :force_retaining
|
75
70
|
|
76
|
-
|
77
|
-
before_transition [:pending, :postponed] => :requested, :do => :do_request
|
78
|
-
before_transition :retained => :postponed, :do => :postpone
|
79
|
-
before_transition [:pending, :requested, :retained, :postponed] => :retained, :do => :retain
|
80
|
-
before_transition [:pending ,:requested, :retained, :postponed] => :canceled, :do => :cancel
|
81
|
-
before_transition [:pending, :requested, :retained, :postponed] => :expired, :do => :expire
|
82
|
-
before_transition :retained => :completed, :do => :checkout
|
83
|
-
after_transition any => any do |reserve, transition|
|
84
|
-
if Rails.env == 'production'
|
85
|
-
ExpireFragmentCache.expire_fragment_cache(reserve.manifestation)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
after_transition any => [:requested, :canceled, :retained, :postponed] do |reserve, transition|
|
90
|
-
reserve.send_message
|
91
|
-
end
|
92
|
-
|
93
|
-
event :sm_request do
|
94
|
-
transition [:pending, :requested] => :requested
|
95
|
-
end
|
96
|
-
|
97
|
-
event :sm_retain do
|
98
|
-
transition [:pending, :requested, :retained, :postponed] => :retained
|
99
|
-
end
|
100
|
-
|
101
|
-
event :sm_cancel do
|
102
|
-
transition [:pending, :requested, :retained, :postponed] => :canceled
|
103
|
-
end
|
104
|
-
|
105
|
-
event :sm_expire do
|
106
|
-
transition [:pending, :requested, :retained, :postponed] => :expired
|
107
|
-
end
|
108
|
-
|
109
|
-
event :sm_postpone do
|
110
|
-
transition :retained => :postponed
|
111
|
-
end
|
71
|
+
paginates_per 10
|
112
72
|
|
113
|
-
|
114
|
-
|
115
|
-
end
|
73
|
+
def state_machine
|
74
|
+
ReserveStateMachine.new(self, transition_class: ReserveTransition)
|
116
75
|
end
|
117
76
|
|
118
|
-
|
77
|
+
has_many :reserve_transitions
|
78
|
+
|
79
|
+
delegate :can_transition_to?, :transition_to!, :transition_to, :current_state,
|
80
|
+
to: :state_machine
|
119
81
|
|
120
82
|
searchable do
|
121
83
|
text :username do
|
@@ -125,7 +87,7 @@ class Reserve < ActiveRecord::Base
|
|
125
87
|
user.try(:username)
|
126
88
|
end
|
127
89
|
string :user_number do
|
128
|
-
user.try(:user_number)
|
90
|
+
user.profile.try(:user_number)
|
129
91
|
end
|
130
92
|
time :created_at
|
131
93
|
text :item_identifier do
|
@@ -137,7 +99,9 @@ class Reserve < ActiveRecord::Base
|
|
137
99
|
boolean :hold do |reserve|
|
138
100
|
self.hold.include?(reserve)
|
139
101
|
end
|
140
|
-
string :state
|
102
|
+
string :state do
|
103
|
+
current_state
|
104
|
+
end
|
141
105
|
string :title_transcription do
|
142
106
|
manifestation.try(:title_transcription)
|
143
107
|
end
|
@@ -150,7 +114,7 @@ class Reserve < ActiveRecord::Base
|
|
150
114
|
def set_item
|
151
115
|
identifier = item_identifier.to_s.strip
|
152
116
|
if identifier.present?
|
153
|
-
item = Item.where(:
|
117
|
+
item = Item.where(item_identifier: identifier).first
|
154
118
|
self.item = item
|
155
119
|
end
|
156
120
|
end
|
@@ -158,14 +122,13 @@ class Reserve < ActiveRecord::Base
|
|
158
122
|
def set_user
|
159
123
|
number = user_number.to_s.strip
|
160
124
|
if number.present?
|
161
|
-
user =
|
162
|
-
self.user = user
|
125
|
+
self.user = Profile.where(user_number: number).first.try(:user)
|
163
126
|
end
|
164
127
|
end
|
165
128
|
|
166
129
|
def valid_item?
|
167
130
|
if item_identifier.present?
|
168
|
-
item = Item.where(:
|
131
|
+
item = Item.where(item_identifier: item_identifier).first
|
169
132
|
errors[:base] << I18n.t('reserve.invalid_item') unless item
|
170
133
|
end
|
171
134
|
end
|
@@ -173,24 +136,24 @@ class Reserve < ActiveRecord::Base
|
|
173
136
|
def retained_by_other_user?
|
174
137
|
return nil if force_retaining == '1'
|
175
138
|
if item and !retained?
|
176
|
-
if Reserve.retained.where(:
|
139
|
+
if Reserve.retained.where(item_id: item.item_identifier).count > 0
|
177
140
|
errors[:base] << I18n.t('reserve.attempt_to_update_retained_reservation')
|
178
141
|
end
|
179
142
|
end
|
180
143
|
end
|
181
144
|
|
182
145
|
def set_request_status
|
183
|
-
self.request_status_type = RequestStatusType.where(:
|
146
|
+
self.request_status_type = RequestStatusType.where(name: 'In Process').first
|
184
147
|
end
|
185
148
|
|
186
149
|
def set_expired_at
|
187
|
-
if
|
188
|
-
if
|
189
|
-
if
|
190
|
-
expired_period =
|
150
|
+
if user and manifestation
|
151
|
+
if canceled_at.blank?
|
152
|
+
if expired_at.blank?
|
153
|
+
expired_period = manifestation.reservation_expired_period(user)
|
191
154
|
self.expired_at = (expired_period + 1).days.from_now.beginning_of_day
|
192
155
|
elsif !completed?
|
193
|
-
if
|
156
|
+
if expired_at.beginning_of_day < Time.zone.now
|
194
157
|
errors[:base] << I18n.t('reserve.invalid_date')
|
195
158
|
end
|
196
159
|
end
|
@@ -200,70 +163,71 @@ class Reserve < ActiveRecord::Base
|
|
200
163
|
|
201
164
|
def next_reservation
|
202
165
|
if item
|
203
|
-
Reserve.waiting.where(:manifestation_id => item.manifestation.id).first
|
166
|
+
Reserve.waiting.where(:manifestation_id => item.manifestation.id).readonly(false).first
|
204
167
|
end
|
205
168
|
end
|
206
169
|
|
207
170
|
def send_message(sender = nil)
|
208
171
|
sender = User.find(1) unless sender # TODO: システムからのメッセージの発信者
|
209
172
|
Reserve.transaction do
|
210
|
-
case
|
173
|
+
case current_state
|
211
174
|
when 'requested'
|
212
|
-
message_template_to_agent = MessageTemplate.localized_template('reservation_accepted_for_patron', user.locale)
|
175
|
+
message_template_to_agent = MessageTemplate.localized_template('reservation_accepted_for_patron', user.profile.locale)
|
213
176
|
request = MessageRequest.new
|
214
|
-
request.assign_attributes({:
|
215
|
-
request.save_message_body(:
|
216
|
-
request.
|
217
|
-
message_template_to_library = MessageTemplate.localized_template('reservation_accepted_for_library', user.locale)
|
177
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_agent}, as: :admin)
|
178
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
179
|
+
request.transition_to!(:sent) # 受付時は即時送信
|
180
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_accepted_for_library', user.profile.locale)
|
218
181
|
request = MessageRequest.new
|
219
|
-
request.assign_attributes({:
|
220
|
-
request.save_message_body(:
|
221
|
-
request.
|
182
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}, as: :admin)
|
183
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
184
|
+
request.transition_to!(:sent) # 受付時は即時送信
|
222
185
|
when 'canceled'
|
223
|
-
message_template_to_agent = MessageTemplate.localized_template('reservation_canceled_for_patron', user.locale)
|
186
|
+
message_template_to_agent = MessageTemplate.localized_template('reservation_canceled_for_patron', user.profile.locale)
|
224
187
|
request = MessageRequest.new
|
225
|
-
request.assign_attributes({:
|
226
|
-
request.save_message_body(:
|
227
|
-
request.
|
228
|
-
message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', user.locale)
|
188
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_agent}, as: :admin)
|
189
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
190
|
+
request.transition_to!(:sent) # キャンセル時は即時送信
|
191
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', user.profile.locale)
|
229
192
|
request = MessageRequest.new
|
230
|
-
request.assign_attributes({:
|
231
|
-
request.save_message_body(:
|
232
|
-
request.
|
193
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}, as: :admin)
|
194
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
195
|
+
request.transition_to!(:sent) # キャンセル時は即時送信
|
233
196
|
when 'expired'
|
234
|
-
message_template_to_agent = MessageTemplate.localized_template('reservation_expired_for_patron', user.locale)
|
197
|
+
message_template_to_agent = MessageTemplate.localized_template('reservation_expired_for_patron', user.profile.locale)
|
235
198
|
request = MessageRequest.new
|
236
|
-
request.assign_attributes({:
|
237
|
-
request.save_message_body(:
|
238
|
-
request.
|
199
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_agent}, as: :admin)
|
200
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
201
|
+
request.transition_to!(:sent)
|
202
|
+
reload
|
239
203
|
self.update_attribute(:expiration_notice_to_patron, true)
|
240
|
-
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.locale)
|
204
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.profile.locale)
|
241
205
|
request = MessageRequest.new
|
242
|
-
request.assign_attributes({:
|
243
|
-
request.save_message_body(:
|
244
|
-
request.
|
206
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}, as: :admin)
|
207
|
+
request.save_message_body(manifestations: Array[manifestation], user: sender)
|
208
|
+
request.transition_to!(:sent)
|
245
209
|
when 'retained'
|
246
|
-
message_template_for_patron = MessageTemplate.localized_template('item_received_for_patron', user.locale)
|
210
|
+
message_template_for_patron = MessageTemplate.localized_template('item_received_for_patron', user.profile.locale)
|
247
211
|
request = MessageRequest.new
|
248
|
-
request.assign_attributes({:
|
249
|
-
request.save_message_body(:
|
250
|
-
request.
|
251
|
-
message_template_for_library = MessageTemplate.localized_template('item_received_for_library', user.locale)
|
212
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron}, as: :admin)
|
213
|
+
request.save_message_body(manifestations: Array[item.manifestation], user: user)
|
214
|
+
request.transition_to!(:sent)
|
215
|
+
message_template_for_library = MessageTemplate.localized_template('item_received_for_library', user.profile.locale)
|
252
216
|
request = MessageRequest.new
|
253
|
-
request.assign_attributes({:
|
254
|
-
request.save_message_body(:
|
255
|
-
request.
|
217
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library}, as: :admin)
|
218
|
+
request.save_message_body(manifestations: Array[item.manifestation], user: user)
|
219
|
+
request.transition_to!(:sent)
|
256
220
|
when 'postponed'
|
257
|
-
message_template_for_patron = MessageTemplate.localized_template('reservation_postponed_for_patron', user.locale)
|
221
|
+
message_template_for_patron = MessageTemplate.localized_template('reservation_postponed_for_patron', user.profile.locale)
|
258
222
|
request = MessageRequest.new
|
259
|
-
request.assign_attributes({:
|
260
|
-
request.save_message_body(:
|
261
|
-
request.
|
262
|
-
message_template_for_library = MessageTemplate.localized_template('reservation_postponed_for_library', user.locale)
|
223
|
+
request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron}, as: :admin)
|
224
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
225
|
+
request.transition_to!(:sent)
|
226
|
+
message_template_for_library = MessageTemplate.localized_template('reservation_postponed_for_library', user.profile.locale)
|
263
227
|
request = MessageRequest.new
|
264
|
-
request.assign_attributes({:
|
265
|
-
request.save_message_body(:
|
266
|
-
request.
|
228
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library}, as: :admin)
|
229
|
+
request.save_message_body(manifestations: Array[manifestation], user: user)
|
230
|
+
request.transition_to!(:sent)
|
267
231
|
else
|
268
232
|
raise 'status not defined'
|
269
233
|
end
|
@@ -274,19 +238,19 @@ class Reserve < ActiveRecord::Base
|
|
274
238
|
sender = User.find(1) # TODO: システムからのメッセージの発信者
|
275
239
|
case status
|
276
240
|
when 'expired'
|
277
|
-
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.locale)
|
241
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.profile.locale)
|
278
242
|
request = MessageRequest.new
|
279
|
-
request.assign_attributes({:
|
280
|
-
request.save_message_body(:
|
281
|
-
self.not_sent_expiration_notice_to_library.each do |reserve|
|
243
|
+
request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}, as: :admin)
|
244
|
+
request.save_message_body(manifestations: options[:manifestations])
|
245
|
+
self.not_sent_expiration_notice_to_library.readonly(false).each do |reserve|
|
282
246
|
reserve.expiration_notice_to_library = true
|
283
|
-
reserve.save(:
|
247
|
+
reserve.save(validate: false)
|
284
248
|
end
|
285
249
|
#when 'canceled'
|
286
250
|
# message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', sender.locale)
|
287
251
|
# request = MessageRequest.new
|
288
|
-
# request.assign_attributes({:
|
289
|
-
# request.save_message_body(:
|
252
|
+
# request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library}, as: :admin)
|
253
|
+
# request.save_message_body(manifestations: self.not_sent_expiration_notice_to_library.collect(&:manifestation))
|
290
254
|
# self.not_sent_cancel_notice_to_library.each do |reserve|
|
291
255
|
# reserve.update_attribute(:expiration_notice_to_library, true)
|
292
256
|
# end
|
@@ -297,19 +261,19 @@ class Reserve < ActiveRecord::Base
|
|
297
261
|
|
298
262
|
def self.expire
|
299
263
|
Reserve.transaction do
|
300
|
-
self.will_expire_retained(Time.zone.now.beginning_of_day).map{|r| r.
|
301
|
-
self.will_expire_pending(Time.zone.now.beginning_of_day).map{|r| r.
|
264
|
+
self.will_expire_retained(Time.zone.now.beginning_of_day).readonly(false).map{|r| r.transition_to!(:expired)}
|
265
|
+
self.will_expire_pending(Time.zone.now.beginning_of_day).readonly(false).map{|r| r.transition_to!(:expired)}
|
302
266
|
|
303
267
|
# キューに登録した時点では本文は作られないので
|
304
268
|
# 予約の連絡をすませたかどうかを識別できるようにしなければならない
|
305
269
|
# reserve.send_message('expired')
|
306
270
|
User.find_each do |user|
|
307
271
|
unless user.reserves.not_sent_expiration_notice_to_patron.empty?
|
308
|
-
user.send_message('reservation_expired_for_patron', :
|
272
|
+
user.send_message('reservation_expired_for_patron', manifestations: user.reserves.not_sent_expiration_notice_to_patron.collect(&:manifestation))
|
309
273
|
end
|
310
274
|
end
|
311
275
|
unless Reserve.not_sent_expiration_notice_to_library.empty?
|
312
|
-
Reserve.send_message_to_library('expired', :
|
276
|
+
Reserve.send_message_to_library('expired', manifestations: Reserve.not_sent_expiration_notice_to_library.collect(&:manifestation))
|
313
277
|
end
|
314
278
|
end
|
315
279
|
#rescue
|
@@ -343,27 +307,27 @@ class Reserve < ActiveRecord::Base
|
|
343
307
|
end
|
344
308
|
|
345
309
|
def completed?
|
346
|
-
['canceled', 'expired', 'completed'].include?(
|
310
|
+
['canceled', 'expired', 'completed'].include?(current_state)
|
347
311
|
end
|
348
312
|
|
349
313
|
def retained?
|
350
|
-
return true if
|
314
|
+
return true if current_state == 'retained'
|
351
315
|
false
|
352
316
|
end
|
353
317
|
|
354
318
|
private
|
355
319
|
def do_request
|
356
|
-
self.assign_attributes({:request_status_type => RequestStatusType.where(:
|
320
|
+
self.assign_attributes({:request_status_type => RequestStatusType.where(name: 'In Process').first, item_id: nil, :retained_at => nil}, as: :admin)
|
357
321
|
save!
|
358
322
|
end
|
359
323
|
|
360
324
|
def retain
|
361
325
|
# TODO: 「取り置き中」の状態を正しく表す
|
362
|
-
self.assign_attributes({:request_status_type => RequestStatusType.where(:
|
326
|
+
self.assign_attributes({:request_status_type => RequestStatusType.where(name: 'In Process').first, :retained_at => Time.zone.now}, as: :admin)
|
363
327
|
Reserve.transaction do
|
364
328
|
if item.try(:next_reservation)
|
365
329
|
reservation = item.next_reservation
|
366
|
-
reservation.
|
330
|
+
reservation.transition_to!(:postponed)
|
367
331
|
end
|
368
332
|
save!
|
369
333
|
end
|
@@ -371,13 +335,13 @@ class Reserve < ActiveRecord::Base
|
|
371
335
|
|
372
336
|
def expire
|
373
337
|
Reserve.transaction do
|
374
|
-
self.assign_attributes({:request_status_type => RequestStatusType.where(:
|
338
|
+
self.assign_attributes({:request_status_type => RequestStatusType.where(name: 'Expired').first, :canceled_at => Time.zone.now}, as: :admin)
|
375
339
|
reserve = next_reservation
|
376
340
|
if reserve
|
377
341
|
reserve.item = item
|
378
342
|
self.item = nil
|
379
343
|
save!
|
380
|
-
reserve.
|
344
|
+
reserve.transition_to!(:retained)
|
381
345
|
end
|
382
346
|
end
|
383
347
|
logger.info "#{Time.zone.now} reserve_id #{self.id} expired!"
|
@@ -385,30 +349,30 @@ class Reserve < ActiveRecord::Base
|
|
385
349
|
|
386
350
|
def cancel
|
387
351
|
Reserve.transaction do
|
388
|
-
self.assign_attributes({:request_status_type => RequestStatusType.where(:
|
352
|
+
self.assign_attributes({:request_status_type => RequestStatusType.where(name: 'Cannot Fulfill Request').first, :canceled_at => Time.zone.now}, as: :admin)
|
389
353
|
save!
|
390
354
|
reserve = next_reservation
|
391
355
|
if reserve
|
392
356
|
reserve.item = item
|
393
357
|
self.item = nil
|
394
358
|
save!
|
395
|
-
reserve.
|
359
|
+
reserve.transition_to!(:retained)
|
396
360
|
end
|
397
361
|
end
|
398
362
|
end
|
399
363
|
|
400
364
|
def checkout
|
401
|
-
self.assign_attributes({:request_status_type => RequestStatusType.where(:
|
365
|
+
self.assign_attributes({:request_status_type => RequestStatusType.where(name: 'Available For Pickup').first, :checked_out_at => Time.zone.now}, as: :admin)
|
402
366
|
save!
|
403
367
|
end
|
404
368
|
|
405
369
|
def postpone
|
406
370
|
self.assign_attributes({
|
407
|
-
:request_status_type => RequestStatusType.where(:
|
408
|
-
:
|
371
|
+
:request_status_type => RequestStatusType.where(name: 'In Process').first,
|
372
|
+
item_id: nil,
|
409
373
|
:retained_at => nil,
|
410
374
|
:postponed_at => Time.zone.now
|
411
|
-
}, :
|
375
|
+
}, as: :admin)
|
412
376
|
save!
|
413
377
|
end
|
414
378
|
|
@@ -421,6 +385,10 @@ class Reserve < ActiveRecord::Base
|
|
421
385
|
if defined?(EnjuInterLibraryLoan)
|
422
386
|
has_one :inter_library_loan
|
423
387
|
end
|
388
|
+
|
389
|
+
def self.transition_class
|
390
|
+
ReserveTransition
|
391
|
+
end
|
424
392
|
end
|
425
393
|
|
426
394
|
# == Schema Information
|
@@ -438,11 +406,9 @@ end
|
|
438
406
|
# canceled_at :datetime
|
439
407
|
# expired_at :datetime
|
440
408
|
# deleted_at :datetime
|
441
|
-
# state :string(255)
|
442
409
|
# expiration_notice_to_patron :boolean default(FALSE)
|
443
410
|
# expiration_notice_to_library :boolean default(FALSE)
|
444
411
|
# retained_at :datetime
|
445
412
|
# postponed_at :datetime
|
446
413
|
# lock_version :integer default(0), not null
|
447
414
|
#
|
448
|
-
|
@@ -1,11 +1,11 @@
|
|
1
1
|
class ReserveStatHasManifestation < ActiveRecord::Base
|
2
2
|
attr_accessible
|
3
3
|
attr_accessible :manifestation_reserve_stat_id, :manifestation_id,
|
4
|
-
:
|
4
|
+
as: :admin
|
5
5
|
belongs_to :manifestation_reserve_stat
|
6
6
|
belongs_to :manifestation
|
7
7
|
|
8
|
-
validates_uniqueness_of :manifestation_id, :
|
8
|
+
validates_uniqueness_of :manifestation_id, scope: :manifestation_reserve_stat_id
|
9
9
|
validates_presence_of :manifestation_reserve_stat_id, :manifestation_id
|
10
10
|
|
11
11
|
paginates_per 10
|
@@ -1,11 +1,11 @@
|
|
1
1
|
class ReserveStatHasUser < ActiveRecord::Base
|
2
2
|
attr_accessible
|
3
3
|
attr_accessible :user_reserve_stat_id, :user_id,
|
4
|
-
:
|
4
|
+
as: :admin
|
5
5
|
belongs_to :user_reserve_stat
|
6
6
|
belongs_to :user
|
7
7
|
|
8
|
-
validates_uniqueness_of :user_id, :
|
8
|
+
validates_uniqueness_of :user_id, scope: :user_reserve_stat_id
|
9
9
|
validates_presence_of :user_reserve_stat_id, :user_id
|
10
10
|
|
11
11
|
paginates_per 10
|
@@ -0,0 +1,93 @@
|
|
1
|
+
class ReserveStateMachine
|
2
|
+
include Statesman::Machine
|
3
|
+
state :pending, initial: true
|
4
|
+
state :postponed
|
5
|
+
state :requested
|
6
|
+
state :retained
|
7
|
+
state :canceled
|
8
|
+
state :expired
|
9
|
+
state :completed
|
10
|
+
|
11
|
+
transition from: :pending, to: [:requested]
|
12
|
+
transition from: :postponed, to: [:requested, :retained, :canceled, :expired]
|
13
|
+
transition from: :retained, to: [:postponed, :canceled, :expired, :completed]
|
14
|
+
transition from: :requested, to: [:retained, :canceled, :expired, :completed]
|
15
|
+
|
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}, as: :admin)
|
18
|
+
end
|
19
|
+
|
20
|
+
after_transition(to: :retained) do |reserve|
|
21
|
+
# TODO: 「取り置き中」の状態を正しく表す
|
22
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now}, as: :admin)
|
23
|
+
Reserve.transaction do
|
24
|
+
if reserve.item and reserve.next_reservation
|
25
|
+
reserve.item.reserves.waiting.readonly(false).map{|r|
|
26
|
+
if r != reserve
|
27
|
+
r.transition_to!(:postponed)
|
28
|
+
r.item = nil
|
29
|
+
r.save!
|
30
|
+
end
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
after_transition(to: :canceled) do |reserve|
|
37
|
+
Reserve.transaction do
|
38
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now}, as: :admin)
|
39
|
+
next_reserve = reserve.next_reservation
|
40
|
+
if next_reserve
|
41
|
+
next_reserve.item = reserve.item
|
42
|
+
reserve.item = nil
|
43
|
+
reserve.save!
|
44
|
+
next_reserve.transition_to!(:retained)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
after_transition(to: :expired) do |reserve|
|
50
|
+
Reserve.transaction do
|
51
|
+
reserve.update_attributes({request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now}, as: :admin)
|
52
|
+
next_reserve = reserve.next_reservation
|
53
|
+
if next_reserve
|
54
|
+
next_reserve.item = reserve.item
|
55
|
+
next_reserve.transition_to!(:retained)
|
56
|
+
reserve.item = nil
|
57
|
+
reserve.save!
|
58
|
+
end
|
59
|
+
end
|
60
|
+
Rails.logger.info "#{Time.zone.now} reserve_id #{reserve.id} expired!"
|
61
|
+
end
|
62
|
+
|
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", as: :admin)
|
65
|
+
end
|
66
|
+
|
67
|
+
after_transition(to: :completed) do |reserve|
|
68
|
+
reserve.update_attributes(
|
69
|
+
request_status_type: RequestStatusType.where(name: 'Available For Pickup').first,
|
70
|
+
checked_out_at: Time.zone.now,
|
71
|
+
as: :admin)
|
72
|
+
end
|
73
|
+
|
74
|
+
after_transition(to: :requested) do |reserve|
|
75
|
+
reserve.send_message
|
76
|
+
end
|
77
|
+
|
78
|
+
after_transition(to: :expired) do |reserve|
|
79
|
+
reserve.send_message
|
80
|
+
end
|
81
|
+
|
82
|
+
after_transition(to: :postponed) do |reserve|
|
83
|
+
reserve.send_message
|
84
|
+
end
|
85
|
+
|
86
|
+
after_transition(to: :canceled) do |reserve|
|
87
|
+
reserve.send_message
|
88
|
+
end
|
89
|
+
|
90
|
+
after_transition(to: :retained) do |reserve|
|
91
|
+
reserve.send_message
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ReserveTransition < ActiveRecord::Base
|
2
|
+
include Statesman::Adapters::ActiveRecordTransition
|
3
|
+
|
4
|
+
|
5
|
+
belongs_to :reserve, inverse_of: :reserve_transitions
|
6
|
+
attr_accessible :to_state, :sort_key, :metadata
|
7
|
+
end
|
8
|
+
|
9
|
+
# == Schema Information
|
10
|
+
#
|
11
|
+
# Table name: reserve_transitions
|
12
|
+
#
|
13
|
+
# id :integer not null, primary key
|
14
|
+
# to_state :string(255)
|
15
|
+
# metadata :text default("{}")
|
16
|
+
# sort_key :integer
|
17
|
+
# reserve_id :integer
|
18
|
+
# created_at :datetime not null
|
19
|
+
# updated_at :datetime not null
|
20
|
+
#
|