108 lines
4.1 KiB
Ruby
108 lines
4.1 KiB
Ruby
class Settings::ShopsController < ApplicationController
|
|
load_and_authorize_resource except: [:create]
|
|
before_action :set_shop, only: [:show, :edit, :update, :destroy]
|
|
|
|
# GET /settings/shops
|
|
# GET /settings/shops.json
|
|
def index
|
|
@settings_shops = Shop.all
|
|
end
|
|
|
|
# GET /settings/shops/1
|
|
# GET /settings/shops/1.json
|
|
def show
|
|
@display_images = @settings_shop.display_images.all
|
|
end
|
|
|
|
# GET /settings/shops/new
|
|
def new
|
|
@settings_shop = Shop.new
|
|
@display_image = @settings_shop.display_images.build
|
|
end
|
|
|
|
# GET /settings/shops/1/edit
|
|
def edit
|
|
end
|
|
|
|
# POST /settings/shops
|
|
# POST /settings/shops.json
|
|
def create
|
|
@settings_shop = Shop.new(shop_params)
|
|
respond_to do |format|
|
|
if @settings_shop.save
|
|
if params[:display_images].present?
|
|
params[:display_images]['image'].each do |a|
|
|
@display_image = @settings_shop.display_images.create!(:shop_id => current_shop.id, :image => a)
|
|
end
|
|
end
|
|
format.html { redirect_to settings_shops_url, notice: 'Shop was successfully created.' }
|
|
format.json { render :index, status: :created, location: @settings_shop }
|
|
else
|
|
format.html { render :new }
|
|
format.json { render json: settings_shops_url.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# PATCH/PUT /settings/shops/1
|
|
# PATCH/PUT /settings/shops/1.json
|
|
def update
|
|
respond_to do |format|
|
|
if @settings_shop.update(shop_params)
|
|
if params[:display_images].present?
|
|
params[:display_images][:image].each do |a|
|
|
if File.extname(a.original_filename) == ".mp3"
|
|
if !@settings_shop.display_images.find_by_name("order_audio").nil?
|
|
audio_data = @settings_shop.display_images.find_by_name("order_audio").image
|
|
delete_path = Rails.root.join("public/#{audio_data}")
|
|
if File.exists?(delete_path)
|
|
|
|
File.delete(delete_path)
|
|
end
|
|
end
|
|
save_path = Rails.root.join("public/#{current_shop.shop_code}_#{a.original_filename}")
|
|
File.open(save_path, 'wb') do |f|
|
|
f.write a.read
|
|
end
|
|
audio_name = "#{current_shop.shop_code}_#{a.original_filename}"
|
|
@settings_shop.display_images.where(:name => "order_audio").destroy_all
|
|
@display_image = @settings_shop.display_images.create!(:shop_id => current_shop.id, :name => "order_audio", :image => audio_name)
|
|
else
|
|
@aa = Base64.encode64(a.read)
|
|
@display_image = @settings_shop.display_images.create!(:shop_id => current_shop.id, :image => "data:image/jpeg;base64,"+@aa)
|
|
end
|
|
end
|
|
end
|
|
format.html { redirect_to settings_shops_url, notice: 'Shop was successfully updated.' }
|
|
format.json { render :index, status: :ok, location: @settings_shop }
|
|
else
|
|
format.html { render :edit }
|
|
format.json { render json: settings_shops_url.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /settings/shops/1
|
|
# DELETE /settings/shops/1.json
|
|
def destroy
|
|
@settings_shop.destroy
|
|
flash[:notice] = 'Shop was successfully destroyed.'
|
|
render :json => {:status=> "Success", :url => settings_shops_url }.to_json
|
|
# respond_to do |format|
|
|
# format.html { redirect_to settings_shops_url, notice: 'shop was successfully destroyed.' }
|
|
# format.json { head :no_content }
|
|
# end
|
|
end
|
|
|
|
private
|
|
# Use callbacks to share common setup or constraints between actions.
|
|
def set_shop
|
|
@settings_shop = Shop.find(params[:id])
|
|
end
|
|
|
|
# Never trust parameters from the scary internet, only allow the white list through.
|
|
def shop_params
|
|
params.require(:shop).permit(:logo, :name,:address,:city,:township,:state,:country,:phone_no,:reservation_no,:license,:activated_at,:license_data,:base_currency,:cloud_token,:cloud_url,:owner_token,:id_prefix,:is_rounding_adj,:quick_sale_summary,:calc_tax_order,:show_account_info,:note, display_images_attributes: [:id, :shop_id, :name, :image])
|
|
end
|
|
end
|