diff --git a/app/controllers/settings/menu_categories_controller.rb b/app/controllers/settings/menu_categories_controller.rb index d7f373aa..c2a521ae 100644 --- a/app/controllers/settings/menu_categories_controller.rb +++ b/app/controllers/settings/menu_categories_controller.rb @@ -63,7 +63,14 @@ class Settings::MenuCategoriesController < ApplicationController # DELETE /settings/menu_categories/1 # DELETE /settings/menu_categories/1.json def destroy + # instances = MenuItemInstance.where("menu_item_id=?",@settings_menu_item.id) + # instances.each do |instance| + # instance.destroy + # end + # @settings_menu_item.destroy + # @settings_menu_category.destroy + abc = MenuCategory.destroyCategory(@settings_menu_category) respond_to do |format| format.html { redirect_to settings_menu_categories_path, notice: 'Menu category was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/menu_item_instances_controller.rb b/app/controllers/settings/menu_item_instances_controller.rb index 6bd00638..2b1fcecf 100644 --- a/app/controllers/settings/menu_item_instances_controller.rb +++ b/app/controllers/settings/menu_item_instances_controller.rb @@ -11,18 +11,21 @@ class Settings::MenuItemInstancesController < ApplicationController # GET /settings/menu_item_instances/1 # GET /settings/menu_item_instances/1.json def show - @category = MenuCategory.find(@item.menu_category_id) + id = MenuItemInstance.findParentCategory(@item) + @category = MenuCategory.find(id) end # GET /settings/menu_item_instances/new def new - @category = MenuCategory.find(@item.menu_category_id) + id = MenuItemInstance.findParentCategory(@item) + @category = MenuCategory.find(id) @settings_menu_item_instances = MenuItemInstance.new end # GET /settings/menu_item_instances/1/edit def edit - @category = MenuCategory.find(@item.menu_category_id) + id = MenuItemInstance.findParentCategory(@item) + @category = MenuCategory.find(id) end # POST /settings/menu_item_instances @@ -30,6 +33,7 @@ class Settings::MenuItemInstancesController < ApplicationController def create @settings_menu_item_instances = MenuItemInstance.new(settings_menu_item_instance_params) + #check if the menu item type is simple or not( not only the diff of status .. here is different routes) if params[:simple_menu_item_id] @settings_menu_item_instances.menu_item_id = params[:simple_menu_item_id] catID = MenuItem.find(params[:simple_menu_item_id]) @@ -38,10 +42,11 @@ class Settings::MenuItemInstancesController < ApplicationController catID = MenuItem.find(params[:set_menu_item_id]) end - category = MenuCategory.find(catID.menu_category_id) + id = MenuItemInstance.findParentCategory(catID) + category = MenuCategory.find(id) respond_to do |format| if @settings_menu_item_instances.save - @settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes] + @settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes].reject(&:blank?) @settings_menu_item_instances.save format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully created.' } format.json { render :show, status: :created, location: @settings_menu_item_instances } @@ -55,14 +60,15 @@ class Settings::MenuItemInstancesController < ApplicationController # PATCH/PUT /settings/menu_item_instances/1 # PATCH/PUT /settings/menu_item_instances/1.json def update - puts "params[:menu_item_instance][:item_attributes]" - puts params[:menu_item_instance][:item_attributes] + #check if the menu item type is simple or not( not only the diff of status .. here is different routes) if params[:simple_menu_item_id] catID = MenuItem.find(params[:simple_menu_item_id]) else catID = MenuItem.find(params[:set_menu_item_id]) end - category = MenuCategory.find(catID.menu_category_id) + + id = MenuItemInstance.findParentCategory(catID) + category = MenuCategory.find(id) respond_to do |format| if @settings_menu_item_instances.update(settings_menu_item_instance_params) @@ -86,7 +92,13 @@ class Settings::MenuItemInstancesController < ApplicationController else catID = MenuItem.find(params[:set_menu_item_id]) end - category = MenuCategory.find(catID.menu_category_id) + # check if the menu item is sub of another menu item + if catID.menu_category_id + category = MenuCategory.find(catID.menu_category_id) + else + item = MenuItem.find(catID.menu_item_id) + category = MenuCategory.find(item.menu_category_id) + end respond_to do |format| format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/menus_controller.rb b/app/controllers/settings/menus_controller.rb index e0ecde30..fa6ac158 100644 --- a/app/controllers/settings/menus_controller.rb +++ b/app/controllers/settings/menus_controller.rb @@ -55,7 +55,8 @@ class Settings::MenusController < ApplicationController # DELETE /settings/menus/1 # DELETE /settings/menus/1.json def destroy - @settings_menu.destroy + # @settings_menu.destroy + abc = Menu.destroyMenu(@settings_menu) respond_to do |format| format.html { redirect_to settings_menus_path, notice: 'Menu was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/set_menu_items_controller.rb b/app/controllers/settings/set_menu_items_controller.rb index f6771548..1c3e2247 100644 --- a/app/controllers/settings/set_menu_items_controller.rb +++ b/app/controllers/settings/set_menu_items_controller.rb @@ -62,7 +62,7 @@ class Settings::SetMenuItemsController < ApplicationController # DELETE /settings/menu_items/1 # DELETE /settings/menu_items/1.json def destroy - # @settings_menu_item.destroy + abc = MenuItem.deleteRecursive(@settings_menu_item) respond_to do |format| format.html { redirect_to settings_menu_category_set_menu_items_path, notice: 'Menu item was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/simple_menu_items_controller.rb b/app/controllers/settings/simple_menu_items_controller.rb index e0d45fcb..b02310dc 100644 --- a/app/controllers/settings/simple_menu_items_controller.rb +++ b/app/controllers/settings/simple_menu_items_controller.rb @@ -59,7 +59,7 @@ class Settings::SimpleMenuItemsController < ApplicationController # DELETE /settings/menu_items/1 # DELETE /settings/menu_items/1.json def destroy - # @settings_menu_item.destroy + abc = MenuItem.deleteRecursive(@settings_menu_item) respond_to do |format| format.html { redirect_to settings_menu_category_simple_menu_items_path, notice: 'Menu item was successfully destroyed.' } format.json { head :no_content } diff --git a/app/models/menu.rb b/app/models/menu.rb index 0c956a1e..05adfac4 100644 --- a/app/models/menu.rb +++ b/app/models/menu.rb @@ -22,4 +22,13 @@ class Menu < ApplicationRecord return current_menu end + + def self.destroyMenu(menu) + cats = MenuCategory.where("menu_id=?",menu.id) + cats.each do |cat| + abc = MenuCategory.destroyCategory(cat) + end + menu.destroy + return false + end end diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb index 474990f2..e660b4b5 100644 --- a/app/models/menu_category.rb +++ b/app/models/menu_category.rb @@ -8,5 +8,29 @@ class MenuCategory < ApplicationRecord default_scope { order('order_by asc') } + def self.destroyCategory(menu_category) + # find the sub menu item of current item + sub_menu_cat = MenuCategory.where("menu_category_id=?",menu_category.id) + if sub_menu_cat.length != 0 + sub_menu_cat.each do |sub| + if destroyCategory(sub) + end + end + # find the items of current menu item + items = MenuItem.where("menu_category_id=?",menu_category.id) + items.each do |item| + abc = MenuItem.deleteRecursive(item) + end + menu_category.destroy + return true + else + items = MenuItem.where("menu_category_id=?",menu_category.id) + items.each do |item| + abc = MenuItem.deleteRecursive(item) + end + menu_category.destroy + return false + end + end end diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb index 2a4e86be..22ec36de 100644 --- a/app/models/menu_item.rb +++ b/app/models/menu_item.rb @@ -1,5 +1,5 @@ class MenuItem < ApplicationRecord - belongs_to :account + # belongs_to :account belongs_to :menu_category, :optional => true has_many :menu_item_instances belongs_to :parent, :class_name => "MenuItem", foreign_key: "menu_item_id", :optional => true @@ -38,4 +38,31 @@ class MenuItem < ApplicationRecord return nil end + + def self.deleteRecursive(menu_item) + + # find the sub menu item of current item + sub_menu_items = MenuItem.where("menu_item_id=?",menu_item.id) + if sub_menu_items.length != 0 + sub_menu_items.each do |subitem| + if deleteRecursive(subitem) + end + end + # find the instances of current menu item + instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + instances.each do |instance| + instance.destroy + end + menu_item.destroy + return true + else + instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + instances.each do |instance| + instance.destroy + end + menu_item.destroy + return false + end + + end end diff --git a/app/models/menu_item_instance.rb b/app/models/menu_item_instance.rb index e7f7775e..09225a23 100644 --- a/app/models/menu_item_instance.rb +++ b/app/models/menu_item_instance.rb @@ -1,4 +1,12 @@ class MenuItemInstance < ApplicationRecord belongs_to :menu_item + def self.findParentCategory(item) + if item.menu_category_id + return item.menu_category_id + else + parentitem = MenuItem.find(item.menu_item_id) + findParentCategory(parentitem) + end + end end diff --git a/app/views/settings/menu_categories/index.html.erb b/app/views/settings/menu_categories/index.html.erb index 495addcc..8ac80a16 100644 --- a/app/views/settings/menu_categories/index.html.erb +++ b/app/views/settings/menu_categories/index.html.erb @@ -33,7 +33,7 @@ <%= settings_menu_category.alt_name rescue ''%> <%= settings_menu_category.order_by rescue ''%> <%= settings_menu_category.parent.name rescue ''%> - <%= link_to 'Edit', edit_settings_menu_category_path(settings_menu_category) %> | <%= link_to 'Destroy', settings_menu_categories_path(settings_menu_category), method: :delete, data: { confirm: 'Are you sure?' } %> + <%= link_to 'Edit', edit_settings_menu_category_path(settings_menu_category) %> | <%= link_to 'Destroy', settings_menu_category_path(settings_menu_category), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %> diff --git a/app/views/settings/menu_item_instances/_form.html.erb b/app/views/settings/menu_item_instances/_form.html.erb index c0170245..54edfab4 100644 --- a/app/views/settings/menu_item_instances/_form.html.erb +++ b/app/views/settings/menu_item_instances/_form.html.erb @@ -1,5 +1,5 @@ -<%= simple_form_for([:settings,:menu_item, @settings_menu_item_instance]) do |f| %> +<%= simple_form_for([:settings,@item, @settings_menu_item_instances]) do |f| %> <%= f.error_notification %> @@ -20,3 +20,5 @@ <%= f.button :submit %> <% end %> + + diff --git a/app/views/settings/menu_item_instances/new.html.erb b/app/views/settings/menu_item_instances/new.html.erb index c6d688ca..ccbc8fe8 100644 --- a/app/views/settings/menu_item_instances/new.html.erb +++ b/app/views/settings/menu_item_instances/new.html.erb @@ -10,8 +10,7 @@ diff --git a/app/views/settings/menu_item_instances/show.html.erb b/app/views/settings/menu_item_instances/show.html.erb index edd34a74..40383b51 100644 --- a/app/views/settings/menu_item_instances/show.html.erb +++ b/app/views/settings/menu_item_instances/show.html.erb @@ -3,8 +3,7 @@