193 lines
7.8 KiB
Ruby
Executable File
193 lines
7.8 KiB
Ruby
Executable File
class Settings::MenusController < ApplicationController
|
|
load_and_authorize_resource except: [:create]
|
|
before_action :set_settings_menu, only: [:show, :edit, :update, :destroy]
|
|
|
|
# GET /settings/menus
|
|
# GET /settings/menus.json
|
|
def index
|
|
@settings_menus = Menu.all.page(params[:page]).per(10)
|
|
respond_to do |format|
|
|
format.html
|
|
format.xlsx
|
|
end
|
|
end
|
|
|
|
# GET /settings/menus/1
|
|
# GET /settings/menus/1.json
|
|
def show
|
|
@settings_menu_categories = @settings_menu.menu_categories.page(params[:page]).per(10)
|
|
end
|
|
|
|
# GET /settings/menus/new
|
|
def new
|
|
@settings_menu = Menu.new
|
|
end
|
|
|
|
# GET /settings/menus/1/edit
|
|
def edit
|
|
end
|
|
|
|
# POST /settings/menus
|
|
# POST /settings/menus.json
|
|
def create
|
|
@settings_menu = Menu.new(settings_menu_params)
|
|
@settings_menu.created_by = current_login_employee.name
|
|
respond_to do |format|
|
|
if @settings_menu.save
|
|
format.html { redirect_to settings_menus_path, notice: 'Menu was successfully created.' }
|
|
format.json { render :show, status: :created, location: @settings_menu }
|
|
else
|
|
format.html { render :new }
|
|
format.json { render json: @settings_menu.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# PATCH/PUT /settings/menus/1
|
|
# PATCH/PUT /settings/menus/1.json
|
|
def update
|
|
respond_to do |format|
|
|
if @settings_menu.update(settings_menu_params)
|
|
format.html { redirect_to settings_menus_path, notice: 'Menu was successfully updated.' }
|
|
format.json { render :show, status: :ok, location: @settings_menu }
|
|
else
|
|
format.html { render :edit }
|
|
format.json { render json: @settings_menu.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /settings/menus/1
|
|
# DELETE /settings/menus/1.json
|
|
def destroy
|
|
# @settings_menu.destroy
|
|
abc = Menu.destroyMenu(@settings_menu)
|
|
|
|
# @settings_menu_item_set.destroy
|
|
flash[:notice] = 'Menu was successfully destroyed.'
|
|
render :json => {:status=> "Success", :url => settings_menus_path }.to_json
|
|
# respond_to do |format|
|
|
# format.html { redirect_to settings_menus_path, notice: 'Menu was successfully destroyed.' }
|
|
# format.json { head :no_content }
|
|
# end
|
|
end
|
|
|
|
def export
|
|
@settings_menus = Menu.all.page(params[:page]).per(10)
|
|
menu = Menu.find(params[:id])
|
|
|
|
p = Axlsx::Package.new
|
|
wb = p.workbook
|
|
wb.styles do |s|
|
|
time_format = wb.styles.add_style :format_code => 'hh:mm:ss'
|
|
title = s.add_style :fg_color => "004586",
|
|
:b => true,
|
|
:sz => 12
|
|
wrap_text = s.add_style :sz => 11,
|
|
:alignment => { :horizontal => :left,:vertical => :center ,
|
|
:wrap_text => true}
|
|
header_text = s.add_style :fg_color=> "090909",
|
|
:b => true,
|
|
:sz => 12,
|
|
:border => { :style => :thin, :color => "00" },
|
|
:alignment => { :horizontal => :left,
|
|
:vertical => :center ,
|
|
:header_text => true}
|
|
|
|
# Menu Sheet
|
|
wb.add_worksheet(name: menu.name) do |sheet|
|
|
sheet.add_row ["Name",menu.name], :style=>title
|
|
sheet.add_row
|
|
|
|
sheet.add_row ["Category Code", "Category Name", "Item Code", "Item Name", "Account", "Item AltName", "Taxable", "Instance Code", "Instance Name", "Price"], :style=>header_text
|
|
menu.menu_categories.each do |mc|
|
|
mc.menu_items.each do |mi|
|
|
mi.menu_item_instances.each do |mii|
|
|
sheet.add_row [ mc.code, mc.name, mi.item_code, mi.name, mi.account.title, mi.alt_name, mi.taxable, mii.item_instance_code, mii.item_instance_name, mii.price], :style=>wrap_text
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
# # Category
|
|
# menu.menu_categories.each do |mc|
|
|
# sheet.add_row ["Category"], :style=>wrap_text
|
|
# sheet.add_row %w(id menu_id code name alt_name order_by created_by menu_category_id is_available), :style=>header_text
|
|
# sheet.add_row [mc.id, mc.menu_id, mc.code, mc.name, mc.alt_name, mc.order_by, mc.created_by, mc.menu_category_id, mc.is_available], :style=>wrap_text
|
|
# sheet.add_row
|
|
|
|
# # Menu Item
|
|
# mc.menu_items.each do |mi|
|
|
# sheet.add_row ["Menu Item"], :style=>wrap_text
|
|
# sheet.add_row %w(id item_code name alt_name image_path description information unit type menu_category_id item_attributes item_options account_id min_qty taxable is_sub_item is_available created_by), :style=>header_text
|
|
# sheet.add_row [mi.id,mi.item_code, mi.name, mi.alt_name, mi.image_path, mi.description, mi.information, mi.unit, mi.type, mi.menu_category_id, mi.item_attributes, mi.item_options, mi.account_id, mi.min_qty, mi.taxable, mi.is_sub_item, mi.is_available, mi.created_by], :style=>wrap_text
|
|
# sheet.add_row
|
|
|
|
# # Menu Item Instance
|
|
# sheet.add_row ["Menu Item Instance"], :style=>wrap_text
|
|
# sheet.add_row %w(id menu_item_id item_instance_code item_instance_name item_attributes price is_on_promotion promotion_price is_available is_default), :style=>header_text
|
|
# mi.menu_item_instances.each do |mii|
|
|
# sheet.add_row [mii.id, mii.menu_item_id, mii.item_instance_code, mii.item_instance_name, mii.item_attributes, mii.price, mii.is_on_promotion, mii.promotion_price, mii.is_available, mii.is_default], :style=>wrap_text
|
|
# end
|
|
# sheet.add_row
|
|
# end
|
|
# end
|
|
end
|
|
|
|
# # Account
|
|
# wb.add_worksheet(name: "Account") do |sheet|
|
|
# sheet.add_row %w(id title account_type discount point bonus rebate), :style=>header_text
|
|
# Account.all.each do |acc|
|
|
# sheet.add_row [acc.id, acc.title,acc.account_type,acc.discount,acc.point,acc.bonus,acc.rebate], :style=>wrap_text
|
|
# end
|
|
# end
|
|
|
|
# # Item set
|
|
# wb.add_worksheet(name: "Item Set") do |sheet|
|
|
# sheet.add_row %w(id name alt_name min_selectable_qty max_selectable_qty), :style=>header_text
|
|
# ItemSet.all.each do |set|
|
|
# sheet.add_row [set.id,set.name, set.alt_name, set.min_selectable_qty, set.max_selectable_qty], :style=>wrap_text
|
|
# end
|
|
# end
|
|
|
|
# # Item Options
|
|
# wb.add_worksheet(name: "Menu Item Options") do |sheet|
|
|
# sheet.add_row %w(id option_type name value), :style=>header_text
|
|
# MenuItemOption.all.each do |option|
|
|
# sheet.add_row [option.id, option.option_type, option.name, option.value], :style=>wrap_text
|
|
# end
|
|
# end
|
|
|
|
# # Item Attributes
|
|
# wb.add_worksheet(name: "Menu Item Attributes") do |sheet|
|
|
# sheet.add_row %w(id attribute_type name value), :style=>header_text
|
|
# MenuItemAttribute.all.each do |attr|
|
|
# sheet.add_row [attr.id, attr.attribute_type,attr.name,attr.value], :style=>wrap_text
|
|
# end
|
|
# end
|
|
end
|
|
|
|
file_path = "public/menus/" + menu.name + ".xlsx"
|
|
p.serialize(file_path)
|
|
render :json => { status: true, path: file_path }
|
|
end
|
|
|
|
def import
|
|
if params[:file]
|
|
status = Menu.import(params[:file], current_user.name)
|
|
redirect_to settings_menus_path, notice: status
|
|
end
|
|
end
|
|
|
|
private
|
|
# Use callbacks to share common setup or constraints between actions.
|
|
def set_settings_menu
|
|
@settings_menu = Menu.find(params[:id])
|
|
end
|
|
|
|
# Never trust parameters from the scary internet, only allow the white list through.
|
|
def settings_menu_params
|
|
params.require(:menu).permit(:name, :is_active, :valid_days, :valid_time_to, :valid_time_from)
|
|
end
|
|
end
|