class AboutYou::SDK::Model::Variant

This class represents a variant model

Attributes

about_number[RW]

Integer about number id

additional_info[RW]

additional information

color[RW]

String color

created_date[RW]

Integer creation date

ean[RW]

String ean

facet_groups[RW]
facet_ids[RW]

Array of Integer facet_ids

first_active_date[RW]

Integer first active data

first_sale_date[RW]

integer first Sale data

id[RW]

Integer id

images[RW]
is_default[RW]

Boolean is variant default for product or not

length[RW]

Integer length

old_price[RW]

Integer old price

price[RW]

Integer price

product[RW]
quantity[RW]

integer quantity

retail_price[RW]

Integer retail price

season_code[RW]

string season_code

selected_image[RW]
updated_date[RW]

Integer update Date

Public Class Methods

create_from_json(json_object, factory, product) click to toggle source

This method is used for creating an instance of this class by a json_object.

# 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

facet_group(group_id) click to toggle source

This method searches by a certain facet group id

# File lib/AboutYou/Model/variant.rb, line 212
def facet_group(group_id)
  facet_groups.group(group_id)
end
generate_facet_group_set(json_object) click to toggle source

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
image() click to toggle source

Getter for selected / default image

# 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
image_by_hash(hash) click to toggle source

This method searches for an image by a certain hash

# 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
parse_facet_ids(json_object) click to toggle source

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
parse_images(image_json) click to toggle source

This method is used for parsing images

# 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
quantity_per_pack() click to toggle source

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
select_image(hash = nil) click to toggle source

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
size() click to toggle source

Getter for the size facet group

# 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
size_group_id() click to toggle source

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