Class: Pbw::ItemConversion
- Inherits:
-
Object
- Object
- Pbw::ItemConversion
- Includes:
- Mongoid::Document, Mongoid::Timestamps
- Defined in:
- app/models/pbw/item_conversion.rb
Class Method Summary collapse
- .convert!(token, item, quantity = 1) ⇒ Object
- .creatable_by?(user, subject) ⇒ Boolean
- .deletable_by?(user, subject) ⇒ Boolean
- .editable_by?(user, subject) ⇒ Boolean
- .max_convert(token, item) ⇒ Object
- .viewable_by?(user, subject) ⇒ Boolean
Instance Method Summary collapse
- #from_items ⇒ Object
- #set_from_item(item, quantity) ⇒ Object
- #token_from_items_containers(token) ⇒ Object
Class Method Details
.convert!(token, item, quantity = 1) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'app/models/pbw/item_conversion.rb', line 69 def self.convert!(token, item, quantity=1) return false unless token && item && quantity && token.can_convert?(item) conversion = where(item: item).first return false unless conversion containers = conversion.token_from_items_containers(token) containers.keys.each do |from_item| return false unless containers[from_item] && containers[from_item].quantity >= (conversion.from_items[from_item] * quantity) end containers.keys.each do |from_item| containers[from_item].remove_item(conversion.from_items[from_item] * quantity) containers[from_item].save end unless token.add_item!(item,quantity) containers.keys.each do |from_item| containers[from_item].add_item(conversion.from_items[from_item] * quantity) containers[from_item].save end end end |
.creatable_by?(user, subject) ⇒ Boolean
12 13 14 |
# File 'app/models/pbw/item_conversion.rb', line 12 def self.creatable_by?(user, subject) user.admin? end |
.deletable_by?(user, subject) ⇒ Boolean
20 21 22 |
# File 'app/models/pbw/item_conversion.rb', line 20 def self.deletable_by?(user, subject) user.admin? end |
.editable_by?(user, subject) ⇒ Boolean
16 17 18 |
# File 'app/models/pbw/item_conversion.rb', line 16 def self.editable_by?(user, subject) user.admin? end |
.max_convert(token, item) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'app/models/pbw/item_conversion.rb', line 53 def self.max_convert(token, item) return 0 unless token && item && token.can_convert?(item) conversion = where(item: item).first return 0 unless conversion containers = conversion.token_from_items_containers(token) quantity = 0 containers.keys.each do |from_item| unless containers[from_item] quantity = 0 else quantity = containers[from_item].quantity / conversion.from_items[from_item] end end quantity end |
.viewable_by?(user, subject) ⇒ Boolean
8 9 10 |
# File 'app/models/pbw/item_conversion.rb', line 8 def self.viewable_by?(user, subject) true end |
Instance Method Details
#from_items ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/models/pbw/item_conversion.rb', line 31 def from_items return @items if defined?(@items) && !changed? return {} unless self.from && !self.from.empty? @items = {} self.from.keys.each do |id| begin @items[Item.find(id)] = self.from[id] rescue Exception => e logger.error e end end @items end |
#set_from_item(item, quantity) ⇒ Object
24 25 26 27 28 29 |
# File 'app/models/pbw/item_conversion.rb', line 24 def set_from_item(item, quantity) return false unless item && quantity self.from ||= {} self.from[item._id] = quantity self end |
#token_from_items_containers(token) ⇒ Object
45 46 47 48 49 50 51 |
# File 'app/models/pbw/item_conversion.rb', line 45 def token_from_items_containers(token) containers = {} from_items.keys.each do |from_item| containers[from_item] = ItemContainer.find_for_token(token,from_item) end containers end |