Class | MenuService
In: | lib/design_api.rb
Parent: | DesignSubService

Design Web サービスでメニューを扱う API を実装する。

### Methods

export import

### Classes and Modules

Class MenuService::InvalidHierarchyLevel
Class MenuService::MissingProductRoot

### Public Instance methods

export(book)

book として与えられるデータで products テーブルの内容を置き換える。

[Source]

         # File lib/design_api.rb, line 840
    840:   def export(book)
    841:     root = Product.root
    842:     raise MissingProductRoot unless root
    843:     items = book.main_sheet.menu_items
    844:     items.inject([false, false, false]) do |(x, y, z),item|
    845:       if item.product_id && item.product_id > 0
    846:         product = Product.find(item.product_id)
    847:       else
    848:         product = ProductPseudo.create!(:domain_id => book.client_identifier_y,
    849:                                         :code      => item.product_code,
    850:                                         :name_po   => 0)
    851:         Language.all.each do |lang|
    852:           product.__send__("name_#{lang.code}=", item.product_name)
    853:         end
    854:         product.save!
    855:       end
    856:       if item.menu_hierarchy_level_1 == 1
    857:         if x
    858:           product.move_to_right_of(x)
    859:         else
    860:           product.move_to_child_of(root)
    861:         end
    862:         [product, false, false]
    863:       elsif item.menu_hierarchy_level_2 == 1
    864:         if y
    865:           product.move_to_right_of(y)
    866:         else
    867:           product.move_to_child_of(x)
    868:         end
    869:         [x, product, false]
    870:       elsif item.menu_hierarchy_level_3 == 1
    871:         if z
    872:           product.move_to_rigth_of(z)
    873:         else
    874:           product.move_to_child_of(y)
    875:         end
    876:         [x, y, product]
    877:       else
    878:         raise InvalidHierarchyLevel
    879:       end
    880:     end
    881:     # NOTE: keep a product responding to no menu items.
    882:     return Product.to_menu_book(book.client_identifier_y).succeed
    883:   end

import(book)

products テーブルの内容を Book にして返す。

[Source]

         # File lib/design_api.rb, line 829
    829:   def import(book)
    830:     domain_id = book.client_identifier_y
    831:     unless Product.root
    832:       ProductRoot.create!(:domain_id => domain_id,
    833:                           :code => "product_root_#{domain_id}",
    834:                           :name_po => 0)
    835:     end
    836:     return Product.to_menu_book(domain_id).succeed
    837:   end

[Validate]