class Inventory::StockChecksController < BaseInventoryController
  def index
    @check = StockCheck.new
     # @inventory_definitions1 = InventoryDefinition.active.all

     @category =   InventoryDefinition.select("inventory_definitions.*,"+
                "mc.name as name,mc.id as id ")
                .joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
                     " JOIN menu_items mi ON mi.id = mii.menu_item_id" +
                     " JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
                .group("mi.menu_category_id")
                .order("mi.menu_category_id desc")
  end

  def create
    item_list = JSON.parse(params[:stock_item])
    reason = params[:reason]
    check = StockCheck.new
    @check = check.create(current_user, reason, item_list)
  end

  def show
     @check = StockCheck.find(params[:id])

    @stock_check_items = StockCheckItem.get_items_with_category(params[:id])

  end

  def save_to_journal
    check = params[:data]
    stockCheck = StockCheck.find(check)
    stockCheck.stock_check_items.each do |item|
      StockJournal.from_stock_check(item)
    end
  end

  def print_stock_check
    stock_id = params[:stock_check_id] # sale_id
    stockcheck = StockCheck.find(stock_id)
    stockcheck_items = stockcheck.stock_check_items
    member_info = nil
    unique_code = 'StockCheckPdf'

    shop_details = current_shop
    checker = Employee.find(stockcheck.check_by)
    print_settings = PrintSetting.find_by_unique_code(unique_code)
    if !print_settings.nil?
      printer = Printer::ReceiptPrinter.new(print_settings)
      printer.print_stock_check_result(print_settings, stockcheck, stockcheck_items, checker.name, shop_details)
    end
  end

  def get_menu_category ()
    if (params[:id])
      
      #Pull this menu
      @menu_category = InventoryDefinition.search_by_category(params[:id])
      puts @menu_category.to_json
      # puts @menu.menu_items[1].item_attributes.to_json
      return @menu_category
    else
      MenuCategory.current_menu
    end
  end

  #Shop Name in Navbor
  helper_method :shop_detail
  def shop_detail
    @shop = current_shop
  end

  # before_action :set_stock_check, only: [:show, :edit, :update, :destroy]

  # GET /stock_checks
  # GET /stock_checks.json
  #   def index
  #     @stock_checks = StockCheck.all
  #   end
  #
  #   # GET /stock_checks/1
  #   # GET /stock_checks/1.json
  #   def show
  #   end
  #
  #   # GET /stock_checks/new
  #   def new
  #     @stock_check = StockCheck.new
  #   end
  #
  #   # GET /stock_checks/1/edit
  #   def edit
  #   end
  #
  #   # POST /stock_checks
  #   # POST /stock_checks.json
  #   def create
  #     @stock_check = StockCheck.new(stock_check_params)
  #
  #     respond_to do |format|
  #       if @stock_check.save
  #         format.html { redirect_to @stock_check, notice: 'Stock check was successfully created.' }
  #         format.json { render :show, status: :created, location: @stock_check }
  #       else
  #         format.html { render :new }
  #         format.json { render json: @stock_check.errors, status: :unprocessable_entity }
  #       end
  #     end
  #   end
  #
  #   # PATCH/PUT /stock_checks/1
  #   # PATCH/PUT /stock_checks/1.json
  #   def update
  #     respond_to do |format|
  #       if @stock_check.update(stock_check_params)
  #         format.html { redirect_to @stock_check, notice: 'Stock check was successfully updated.' }
  #         format.json { render :show, status: :ok, location: @stock_check }
  #       else
  #         format.html { render :edit }
  #         format.json { render json: @stock_check.errors, status: :unprocessable_entity }
  #       end
  #     end
  #   end
  #
  #   # DELETE /stock_checks/1
  #   # DELETE /stock_checks/1.json
  #   def destroy
  #     @stock_check.destroy
  #     respond_to do |format|
  #       format.html { redirect_to stock_checks_url, notice: 'Stock check was successfully destroyed.' }
  #       format.json { head :no_content }
  #     end
  #   end
  #
  #   private
  #     # Use callbacks to share common setup or constraints between actions.
  #     def set_stock_check
  #       @stock_check = StockCheck.find(params[:id])
  #     end
  #
  #     # Never trust parameters from the scary internet, only allow the white list through.
  #     def stock_check_params
  #       params.fetch(:stock_check, {})
  #     end
end
