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

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

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]