Class: Reserve
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Reserve
- Defined in:
- app/models/reserve.rb
Instance Attribute Summary collapse
-
#item_identifier ⇒ Object
Returns the value of attribute item_identifier.
-
#user_number ⇒ Object
Returns the value of attribute user_number.
Class Method Summary collapse
Instance Method Summary collapse
- #available_for_reservation? ⇒ Boolean
- #do_request ⇒ Object
- #manifestation_must_include_item ⇒ Object
- #next_reservation ⇒ Object
- #send_message(sender = nil) ⇒ Object
- #set_expired_at ⇒ Object
- #set_item_and_manifestation ⇒ Object
- #set_request_status ⇒ Object
Instance Attribute Details
#item_identifier ⇒ Object
Returns the value of attribute item_identifier.
36 37 38 |
# File 'app/models/reserve.rb', line 36 def item_identifier @item_identifier end |
#user_number ⇒ Object
Returns the value of attribute user_number.
36 37 38 |
# File 'app/models/reserve.rb', line 36 def user_number @user_number end |
Class Method Details
.expire ⇒ Object
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'app/models/reserve.rb', line 183 def self.expire Reserve.transaction do self.will_expire_retained(Time.zone.now.beginning_of_day).map{|r| r.sm_expire!} self.will_expire_pending(Time.zone.now.beginning_of_day).map{|r| r.sm_expire!} # キューに登録した時点では本文は作られないので # 予約の連絡をすませたかどうかを識別できるようにしなければならない # reserve.send_message('expired') User.find_each do |user| unless user.reserves.not_sent_expiration_notice_to_patron.empty? user.('reservation_expired_for_patron', :manifestations => user.reserves.not_sent_expiration_notice_to_patron.collect(&:manifestation)) end end unless Reserve.not_sent_expiration_notice_to_library.empty? Reserve.('expired', :manifestations => Reserve.not_sent_expiration_notice_to_library.collect(&:manifestation)) end end #rescue # logger.info "#{Time.zone.now} expiring reservations failed!" end |
.per_page ⇒ Object
71 72 73 |
# File 'app/models/reserve.rb', line 71 def self.per_page 10 end |
.send_message_to_library(status, options = {}) ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'app/models/reserve.rb', line 161 def self.(status, = {}) sender = User.find(1) # TODO: システムからのメッセージの発信者 case status when 'expired' = MessageTemplate.localized_template('reservation_expired_for_library', sender.locale) request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => ) request.(:manifestations => [:manifestations]) self.not_sent_expiration_notice_to_library.each do |reserve| reserve.update_attribute(:expiration_notice_to_library, true) end #when 'canceled' # message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', sender.locale) # request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_to_library) # request.save_message_body(:manifestations => self.not_sent_expiration_notice_to_library.collect(&:manifestation)) # self.not_sent_cancel_notice_to_library.each do |reserve| # reserve.update_attribute(:expiration_notice_to_library, true) # end else raise 'status not defined' end end |
Instance Method Details
#available_for_reservation? ⇒ Boolean
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'app/models/reserve.rb', line 204 def available_for_reservation? if manifestation if manifestation.is_reserved_by?(user) errors[:base] << I18n.t('reserve.this_manifestation_is_already_reserved') end if user.try(:reached_reservation_limit?, manifestation) errors[:base] << I18n.t('reserve.excessed_reservation_limit') end expired_period = manifestation.try(:reservation_expired_period, user) if expired_period.nil? errors[:base] << I18n.t('reserve.this_patron_cannot_reserve') end end end |
#do_request ⇒ Object
97 98 99 |
# File 'app/models/reserve.rb', line 97 def do_request self.update_attributes({:request_status_type => RequestStatusType.where(:name => 'In Process').first}) end |
#manifestation_must_include_item ⇒ Object
101 102 103 104 105 106 |
# File 'app/models/reserve.rb', line 101 def manifestation_must_include_item unless item_id.blank? item = Item.find(item_id) rescue nil errors[:base] << I18n.t('reserve.invalid_item') unless manifestation.items.include?(item) end end |
#next_reservation ⇒ Object
108 109 110 111 112 |
# File 'app/models/reserve.rb', line 108 def next_reservation if item Reserve.waiting.where(:manifestation_id => item.manifestation.id).first end end |
#send_message(sender = nil) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'app/models/reserve.rb', line 114 def (sender = nil) sender = User.find(1) unless sender # TODO: システムからのメッセージの発信者 Reserve.transaction do case state when 'requested' = MessageTemplate.localized_template('reservation_accepted_for_patron', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => ) request.(:manifestations => Array[manifestation], :user => user) request. # 受付時は即時送信 = MessageTemplate.localized_template('reservation_accepted_for_library', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => ) request.(:manifestations => Array[manifestation], :user => user) request. # 受付時は即時送信 when 'canceled' = MessageTemplate.localized_template('reservation_canceled_for_patron', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => ) request.(:manifestations => Array[manifestation], :user => user) request. # キャンセル時は即時送信 = MessageTemplate.localized_template('reservation_canceled_for_library', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => ) request.(:manifestations => Array[manifestation], :user => user) request. # キャンセル時は即時送信 when 'expired' = MessageTemplate.localized_template('reservation_expired_for_patron', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => ) request.(:manifestations => Array[manifestation], :user => user) request. self.update_attribute(:expiration_notice_to_patron, true) = MessageTemplate.localized_template('reservation_expired_for_library', sender.locale) request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => ) request.(:manifestations => Array[manifestation], :user => sender) request. when 'retained' = MessageTemplate.localized_template('item_received_for_patron', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => ) request.(:manifestations => Array[item.manifestation], :user => user) request. = MessageTemplate.localized_template('item_received_for_library', user.locale) request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => ) request.(:manifestations => Array[item.manifestation], :user => user) request. else raise 'status not defined' end end end |
#set_expired_at ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/models/reserve.rb', line 84 def set_expired_at if self.user and self.manifestation if self.canceled_at.blank? if self.expired_at.blank? expired_period = self.manifestation.reservation_expired_period(self.user) self.expired_at = (expired_period + 1).days.from_now.beginning_of_day elsif self.expired_at.beginning_of_day < Time.zone.now errors[:base] << I18n.t('reserve.invalid_date') end end end end |
#set_item_and_manifestation ⇒ Object
75 76 77 78 |
# File 'app/models/reserve.rb', line 75 def set_item_and_manifestation item = Item.where(:item_identifier => item_identifier).first manifestation = item.manifestation if item end |
#set_request_status ⇒ Object
80 81 82 |
# File 'app/models/reserve.rb', line 80 def set_request_status self.request_status_type = RequestStatusType.where(:name => 'In Process').first end |