Class: Pbw::ItemConversion

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
app/models/pbw/item_conversion.rb

Class Method Summary collapse

Instance Method Summary collapse

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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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_itemsObject



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