Files
mozo-backend/app/controllers/suppliers/sections_controller.rb
T

168 lines
5.7 KiB
Ruby

module Suppliers
class SectionsController < Suppliers::ApplicationController
# GET /sections
# GET /sections.json
def index
@sections = current_supplier.sections
@sections.include_relation(:tables)
@active_lists = List.active_for_supplier(current_supplier.id)
@active_table_ids = @active_lists.map(&:table_id).compact
for section in @sections
for table in section.tables
if active_list = @active_lists.find{|l| l.table_id == table.id}
table.active_list = active_list
end
end
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @sections }
end
end
# GET /sections/1
# GET /sections/1.json
def show
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
@tables = @section.tables_with_active_list_id
respond_to do |format|
format.html { render action: 'tables_view' }# show.html.erb
format.json { render json: @section }
end
end
# GET /sections/new
# GET /sections/new.json
def new
@section = Section.new
@section.supplier = current_supplier
respond_to do |format|
format.html # new.html.erb
format.json { render json: @section }
end
end
# GET /sections/1/edit
def edit
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
end
# POST /sections
# POST /sections.json
def create
@section = Section.new(section_params)
@section.supplier = current_supplier
respond_to do |format|
if @section.save
format.html { redirect_to [:suppliers, @section], notice: t('action.create.successfull', model: Section.model_name.human) }
format.json { render json: @section, status: :created, location: @section }
else
format.html { render action: "new" }
format.json { render json: @section.errors, status: :unprocessable_entity }
end
end
end
# PUT /sections/1
# PUT /sections/1.json
def update
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
respond_to do |format|
if @section.update_attributes(section_params)
format.html { redirect_to [:suppliers, @section], notice: t('action.update.successfull', model: Section.model_name.human) }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @section.errors, status: :unprocessable_entity }
end
end
end
# DELETE /sections/1
# DELETE /sections/1.json
def destroy
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
@section.destroy
respond_to do |format|
format.html { redirect_to suppliers_sections_url, notice: t('action.destroy.successfull', model: Section.model_name.human) }
format.json { head :no_content }
end
end
# GET /sections/1/manage_tables
# GET /sections/1/manage_tables.json
def manage_tables
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @section }
end
end
# GET /sections/1/tables_view
# GET /sections/1/tables_view.json
def tables_view
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
@tables = @section.tables_with_active_list_id
respond_to do |format|
format.html # show.html.erb
format.json do
render json: @section.for_tables_as_json
end
end
end
# POST /sections/1/add_tables {number_start: 1423, number_end: 234234}
def add_tables
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
number_start = params[:number_start].to_i
number_end = params[:number_end].to_i
for table_number in number_start..number_end
next if table_number.zero?
table = Table.new(number: table_number)
table.supplier = current_supplier
table.section = @section
table.save
end
@section.arrange_tables_in_grid
render json: {ok: true}
end
# POST /sections/1/arrange_tables {number_start: 1423, number_end: 234234}
def arrange_tables
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
case params[:option]
when 'distributed' then render(json: (@section.arrange_tables_in_grid ? {ok: true} : json_alert('messages.could_not_arrange_tables_distributed')))
when 'by_row' then render(json: (@section.arrange_tables_in_rows_of(params[:row_count].to_i) ? {ok: true} : json_alert('messages.could_not_arrange_tables_by_row')))
when 'by_column' then render(json: (@section.arrange_tables_in_columns_of(params[:column_count].to_i) ? {ok: true} : json_alert('messages.could_not_arrange_tables_by_column')))
else render(json: json_alert('messages.could_not_arrange_tables'))
end
end
def table_actions
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
render(text: 'No table_id given', content_type: Mime::HTML.to_s) and return unless params[:table_id].present?
@table = Table.find(params[:table_id])
render(text: 'Table is not correct', content_type: Mime::HTML.to_s) and return unless @table.section_id == @section.id
@list = List.active_for_table(@table).first
@orders = @list ? @list.active_orders : []
render layout: false
end
private
def section_params
params.require(:section).permit(:title, :path, :width, :height)
end
end
end