class AboutYou::SDK::Model::Variant
This class represents a variant model
Attributes
Integer about number id
additional information
String color
Integer creation date
String ean
Array of AboutYou::SDK::Model::FacetGroup
Array of Integer facet_ids
instance of AboutYou::SDK::Factory::DefaultModelFactory
Integer first active data
integer first Sale data
Integer id
Array of AboutYou::SDK::Model::Image
Boolean is variant default for product or not
Integer length
Integer old price
Integer price
instance of AboutYou::SDK::Model::Product
integer quantity
Integer retail price
string season_code
instance of AboutYou::SDK::Model::Image
Integer update Date
Public Class Methods
This method is used for creating an instance of this class by a json_object.
-
Args :
-
json_object
-> the json_object received from the api -
factory
-> instance ofAboutYou::SDK::Factory::DefaultModelFactory
-
product
->Product
of this variant
-
-
Fails :
-
if json_object has no id
-
-
Returns :
-
Instance of
AboutYou::SDK::Model::Variant
-
# File lib/AboutYou/Model/variant.rb, line 68 def self.create_from_json(json_object, factory, product) fail 'MalformedJsonException' unless json_object['id'] variant = new variant.factory = factory variant.product = product variant.images = variant.parse_images(json_object['images']) # free memory json_object['images'] = nil variant.id = json_object['id'] variant.about_number = (json_object['about_number']) ? json_object['about_number'] : nil variant.ean = (json_object['ean']) ? json_object['ean'] : nil variant.is_default = (json_object['default']) ? json_object['default'] : nil variant.price = (json_object['price']) ? json_object['price'] : nil variant.old_price = (json_object['old_price']) ? json_object['old_price'] : nil variant.retail_price = (json_object['retail_price']) ? json_object['retail_price'] : nil variant.additional_info = (json_object['additional_info']) ? json_object['additional_info'] : nil variant.quantity = (json_object['quantity']) ? json_object['quantity'] : 0 variant.first_active_date = (json_object['first_active_date']) ? json_object['first_active_date'] : nil variant.first_sale_date = (json_object['first_sale_date']) ? json_object['first_sale_date'] : nil variant.created_date = (json_object['created_date']) ? json_object['created_date'] : nil variant.updated_date = (json_object['updated_date']) ? json_object['updated_date'] : nil variant.facet_ids = variant.parse_facet_ids(json_object) variant.facet_groups = variant.generate_facet_group_set(json_object) variant.color = variant.facet_group(AboutYou::SDK::Model::Facet::FACET_COLOR) variant.length = variant.facet_group(AboutYou::SDK::Model::Facet::FACET_LENGTH) variant.season_code = variant.facet_group(AboutYou::SDK::Model::Facet::FACET_SEASON_CODE) variant end
Public Instance Methods
This method searches by a certain facet group id
-
Args :
-
group_id
-> The group_id used for searching
-
-
Returns :
-
nil / instance of
AboutYou::SDK::Model::FacetGroup
-
# File lib/AboutYou/Model/variant.rb, line 212 def facet_group(group_id) facet_groups.group(group_id) end
This method generated a facet group set for a certain json_object
-
Args :
-
json_object
-> The json_object received from the api
-
# File lib/AboutYou/Model/variant.rb, line 198 def generate_facet_group_set(json_object) ids = parse_facet_ids(json_object) self.facet_groups = AboutYou::SDK::Model::FacetGroupSet.new(ids) end
Getter for selected / default image
-
Returns :
# File lib/AboutYou/Model/variant.rb, line 162 def image if selected_image return selected_image elsif images[0] return images[0] end nil end
This method searches for an image by a certain hash
-
Args :
-
hash
-> the hash used for searching
-
-
Returns :
-
nil / instance of
AboutYou::SDK::Model::Image
-
# File lib/AboutYou/Model/variant.rb, line 129 def image_by_hash(hash) images.each do |image| return image if image.hash == hash end nil end
This method parses the facet ids of a certain json_object
-
Args :
-
json_object
-> The json_object received from the api
-
-
Returns :
-
{} / Hash containing pairs of group_id => attribute_ids
-
# File lib/AboutYou/Model/variant.rb, line 181 def parse_facet_ids(json_object) ids = {} json_object['attributes'].each do |group, attribute_ids| group_id = group[11..group.length] # rm prefix 'attributs_' ids[Integer(group_id)] = attribute_ids end unless json_object['attributes'].empty? ids end
This method is used for parsing images
-
Args :
-
image_json
-> the image json_object received from the api
-
-
Returns :
-
/ Array of instances of
AboutYou::SDK::Model::Image
# File lib/AboutYou/Model/variant.rb, line 111 def parse_images(image_json) image_array = [] image_json.each do |image| image_array.push(factory.create_image(image)) end if image_json image_array end
Getter for the quantity per pack
-
Returns :
-
Integer quantity
-
# File lib/AboutYou/Model/variant.rb, line 261 def quantity_per_pack facet_group = facet_group( AboutYou::SDK::Model::Facet::FACET_QUANTITY_PER_PACK ) return 1 unless facet_group facets = facet_group.facets return 1 unless facets facets[0].value end
You can select an image with this method by a certain hash
-
Args :
-
hash
-> the hash used for selecting [optional]
-
-
Returns :
-
Boolean determining whether the selection was successful or not
-
# File lib/AboutYou/Model/variant.rb, line 146 def select_image(hash = nil) if hash self.selected_image = image_by_hash(hash) true else self.selected_image = nil false end end
Getter for the size facet group
-
Returns :
-
instance of
AboutYou::SDK::Model::FacetGroup
-
# File lib/AboutYou/Model/variant.rb, line 222 def size # @todo: Instance level caching group_id = size_group_id facet_group(group_id) unless group_id.empty? end
This method is used for getting the size group id
-
Returns :
-
nil / group_id
-
# File lib/AboutYou/Model/variant.rb, line 234 def size_group_id keys = {} groups = facet_groups.groups size_run = facet_group(AboutYou::SDK::Model::Facet::FACET_SIZE_RUN) groups.each do |group| keys[group.name] = group.group_id end if groups.is_a?(Array) size_run.facets.each do |facet| group_name = facet.value return keys[group_name] if keys.key?(group_name) end unless size_run.empty? return keys['size'] if keys.key?('size') return keys['size_run'] if keys.key?('size_run') nil end