162 lines
6.0 KiB
Ruby
Executable File
162 lines
6.0 KiB
Ruby
Executable File
class Settings::SimpleMenuItemsController < ApplicationController
|
|
before_action :set_settings_menu_item, only: [:show, :edit, :update, :destroy ]
|
|
before_action :set_settings_menu_category, only: [:index, :show, :edit, :new, :update ,:create]
|
|
before_action :set_settings_item_attribute, only: [:index, :show, :edit, :new, :update ,:create]
|
|
before_action :set_settings_item_option, only: [:index, :show, :edit, :new, :update ,:create]
|
|
# GET /settings/menu_items
|
|
# GET /settings/menu_items.json
|
|
def index
|
|
@settings_menu_items = @category.menu_items.page(params[:page]).per(10)
|
|
end
|
|
|
|
# GET /settings/menu_items/1
|
|
# GET /settings/menu_items/1.json
|
|
def show
|
|
# @sub_menu = MenuItem.where("menu_item_id=?",params[:id]).page(params[:page]).per(10)
|
|
@menu_item_instance = MenuItemInstance.where("menu_item_id=?",params[:id])
|
|
end
|
|
|
|
# GET /settings/menu_items/new
|
|
def new
|
|
@settings_menu_item = MenuItem.new
|
|
@item_sets = ItemSet.all
|
|
end
|
|
|
|
# GET /settings/menu_items/1/edit
|
|
def edit
|
|
@item_sets = ItemSet.all
|
|
end
|
|
|
|
# POST /settings/menu_items
|
|
# POST /settings/menu_items.json
|
|
def create
|
|
@settings_menu_item = MenuItem.new(settings_menu_item_params)
|
|
|
|
# if params[:simple_menu_item][:menu_item_id] == ''
|
|
@settings_menu_item.menu_category_id = params[:menu_category_id]
|
|
# end
|
|
@settings_menu_item.created_by = current_login_employee.name
|
|
|
|
# Remove "" default first
|
|
params[:simple_menu_item][:item_attributes].delete_at(0)
|
|
params[:simple_menu_item][:item_options].delete_at(0)
|
|
|
|
# attr_format = []
|
|
# param_count = params[:simple_menu_item][:item_attributes].count
|
|
# # Format for attributes json
|
|
# params[:simple_menu_item][:item_attributes].each do|attr_id|
|
|
# menu_attr = MenuItemAttribute.find(attr_id)
|
|
# if attr_format.count == 0
|
|
# attr_format.push({ type: menu_attr.attribute_type, value: [] })
|
|
# end
|
|
|
|
# attr_format.each do |af|
|
|
# if menu_attr.attribute_type == af[:type]
|
|
# af[:value].push(menu_attr.value)
|
|
# else
|
|
# new_attr = {type: menu_attr.attribute_type, value: [ menu_attr.value ] }
|
|
# attr_format.push(new_attr)
|
|
# end
|
|
|
|
# break if attr_format.count > param_count
|
|
# end
|
|
|
|
# param_count -= 1
|
|
# end
|
|
# @settings_menu_item.item_attributes = attr_format
|
|
|
|
# Bind for Item Sets
|
|
if params[:simple_menu_item][:item_sets].count > 1
|
|
params[:simple_menu_item][:item_sets].delete_at(0)
|
|
|
|
sets = ItemSet.find(params[:simple_menu_item][:item_sets])
|
|
|
|
if sets.count > 0
|
|
@settings_menu_item.item_sets = sets
|
|
end
|
|
end
|
|
|
|
respond_to do |format|
|
|
if @settings_menu_item.save
|
|
menu_item = MenuItem.find(@settings_menu_item.id)
|
|
menu_item.update_attributes(item_attributes: params[:simple_menu_item][:item_attributes], item_options: params[:simple_menu_item][:item_options])
|
|
|
|
format.html { redirect_to settings_menu_category_simple_menu_items_path, notice: 'Menu item was successfully created.' }
|
|
format.json { render :show, status: :created, location: @settings_menu_item }
|
|
else
|
|
format.html { render :new }
|
|
format.json { render json: @settings_menu_item.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# PATCH/PUT /settings/menu_items/1
|
|
# PATCH/PUT /settings/menu_items/1.json
|
|
def update
|
|
# Remove "" default first
|
|
params[:simple_menu_item][:item_attributes].delete_at(0)
|
|
params[:simple_menu_item][:item_options].delete_at(0)
|
|
|
|
# Bind for Item Sets
|
|
if params[:simple_menu_item][:item_sets].count > 0
|
|
params[:simple_menu_item][:item_sets].delete_at(0)
|
|
|
|
sets = ItemSet.find(params[:simple_menu_item][:item_sets])
|
|
|
|
if sets.count >= 0
|
|
# destroy all item sets for edit
|
|
@settings_menu_item.item_sets.destroy
|
|
@settings_menu_item.item_sets = sets
|
|
end
|
|
end
|
|
@settings_menu_item.menu_category_id = params[:menu_category_id]
|
|
|
|
respond_to do |format|
|
|
if @settings_menu_item.update(settings_menu_item_params)
|
|
@settings_menu_item.update_attributes(item_attributes: params[:simple_menu_item][:item_attributes], item_options: params[:simple_menu_item][:item_options])
|
|
format.html { redirect_to settings_menu_category_simple_menu_items_path, notice: 'Menu item was successfully updated.' }
|
|
format.json { render :show, status: :ok, location: @settings_menu_item }
|
|
else
|
|
format.html { render :edit }
|
|
format.json { render json: @settings_menu_item.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /settings/menu_items/1
|
|
# DELETE /settings/menu_items/1.json
|
|
def destroy
|
|
path_to_file = @settings_menu_item.image_path.to_s
|
|
File.delete(path_to_file) if File.exist?(path_to_file)
|
|
abc = MenuItem.deleteRecursive(@settings_menu_item)
|
|
render :json => {:status=> "Success", :url => settings_menu_category_simple_menu_items_path }.to_json
|
|
# 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 }
|
|
# end
|
|
end
|
|
|
|
private
|
|
# Use callbacks to share common setup or constraints between actions.
|
|
def set_settings_menu_item
|
|
@settings_menu_item = MenuItem.find(params[:id])
|
|
end
|
|
|
|
def set_settings_menu_category
|
|
@category = MenuCategory.find(params[:menu_category_id])
|
|
end
|
|
|
|
def set_settings_item_attribute
|
|
@item_attributes = MenuItemAttribute.all.order("id asc") #.map{|a| [a.name, a.value]}
|
|
end
|
|
|
|
def set_settings_item_option
|
|
@item_options = MenuItemOption.all
|
|
end
|
|
|
|
# Never trust parameters from the scary internet, only allow the white list through.
|
|
def settings_menu_item_params
|
|
params.require(:simple_menu_item).permit(:item_code, :name, :alt_name, :type, :image_path, :menu_category_id, :account_id, :item_attributes, :item_options, :min_qty, :is_sub_item, :is_available, :created_by, :item_sets, :unit, :taxable, :description)
|
|
end
|
|
end
|