class Origami::MovetableController < BaseOrigamiController

  authorize_resource :class => false

  def move_dining
    @webview = check_mobile

    @tables = Table.all.active.order('status desc')
    @rooms = Room.all.active.order('status desc')
    @complete = Sale.where("DATE_FORMAT(created_at,'%Y-%m-%d') = ? and sale_status != 'new'",DateTime.now.strftime('%Y-%m-%d'))
    @orders = Order.where("DATE_FORMAT(date,'%Y-%m-%d') = ? and status != 'billed'",DateTime.now.strftime('%Y-%m-%d')).order('date desc')
    @dining = DiningFacility.find(params[:dining_id])

    @status_order = ""
    @status_sale = ""
    @sale_array = Array.new

    @dining_booking = @dining.bookings.active.where("DATE_FORMAT(created_at,'%Y-%m-%d') = '#{DateTime.now.strftime('%Y-%m-%d')}' OR DATE_FORMAT(created_at,'%Y-%m-%d') = '#{Date.today.prev_day}' ")

    @dining_booking.each do |booking|
         if booking.sale_id.nil?
            @order_items = Array.new
            if booking.booking_status != 'moved'
               booking.booking_orders.each do |booking_order|
                  order = Order.find(booking_order.order_id)
                  @obj_order = order
                  @customer = order.customer
                  @date = order.created_at
                  @booking= booking
                  if order.status == 'new'
                    order.order_items.each do |item|
                      @order_items.push(item)
                    end
                  end
                  
                  accounts = @customer.tax_profiles
                  @account_arr =[]
                  accounts.each do |acc|
                    account = TaxProfile.find_by_id(acc)
                    if !account.nil?
                      @account_arr.push(account)
                    end
                  end
               end
            end
           @status_order = 'order'
         # else
         #  sale = Sale.find(booking.sale_id)
         #   if sale.sale_status != "completed" && sale.sale_status != "waste" && sale.sale_status != "spoile"
         #     @sale_array.push(sale)
         #     if @status_order == 'order'
         #       @status_order = 'sale'
         #     end
         #     @booking= booking
         #     @date = sale.created_at
         #     @status_sale = 'sale'
         #     @obj_sale = sale
         #     @customer = sale.customer
         #     accounts = @customer.tax_profiles
         #     @account_arr =[]
         #     accounts.each do |acc|
         #      account = TaxProfile.find_by_id(acc)
         #      @account_arr.push(account)
         #     end
         #   end
         end
    end
  end

  def moving
    change_to = params[:change_to] #new
    change_from = params[:change_from] #original    

    # bookings = Booking.where('dining_facility_id=?',change_from)

    bookings = Booking.where("((DATE_FORMAT(created_at,'%Y-%m-%d') = '#{DateTime.now.strftime('%Y-%m-%d')}' OR DATE_FORMAT(created_at,'%Y-%m-%d') = '#{Date.today.prev_day}')) AND dining_facility_id='#{change_from}'")

    booking_array = Array.new
    order_items = Array.new
    if !bookings.nil?
      bookings.each do | booking |
        if booking.sale_id.nil? && booking.booking_status != 'moved'
          booking_array.push(booking)
        end

        booking.booking_orders.each do |booking_order|
          order = Order.find(booking_order.order_id)
          if order.status == 'new'  
            oqs = OrderQueueStation.new
            oqs.process_order(order, change_from, order.source, 'move',change_to,current_user.name)
            # order.order_items.each do |order_item|
            #   order_items.push(order_item)
            # end
          end  
        end
      end
    end

    @get_type = Booking.update_dining_facility(booking_array,change_to,change_from)

    # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
    #   # get printer info
    #   @from          = (DiningFacility.find(change_from)).name
    #   @to            = (DiningFacility.find(change_to)).name
    #   @type          = (DiningFacility.find(change_to)).type
    #   @moved_by      = @current_user.name
    #   @date          = DateTime.now
    #   @shop          = Shop.first
    #   unique_code    = "MoveTablePdf" 
    #   pdf_no        = PrintSetting.where(:unique_code => unique_code).count
    #   #print_settings = PrintSetting.find_by_unique_code(unique_code)
    #   printer_array = []
    #   printer_array = PrintSetting.where(:unique_code => unique_code)

    #   for i in 0..pdf_no
    #     if i != pdf_no
    #       print_settings = printer_array[i]
    #       printer        = Printer::ReceiptPrinter.new(print_settings)  
    #       printer.print_move_table(print_settings,@to,@from ,@shop,@date,@type,@moved_by,order_items)
    #     end  
    #   end  
    # end

    type  = 'move'
    from = getCloudDomain #get sub domain in cloud mode
    ActionCable.server.broadcast "order_channel",table: change_from,type:type,from:from ,change_to:change_to 
  end

  #get cloud domain
  def getCloudDomain
    from = ""
    if ENV["SERVER_MODE"] == 'cloud'
      from = request.subdomain  + "." + request.domain
    end

    return from
  end
end
