# -*- coding: utf-8 -*-
class MaterialsFromLoginController < ApplicationController
rescue_from ActiveResource::ResourceNotFound, :with => :not_found


  def loginroot_balance
    @login = params[:login]
    date = params[:date] || Date.today
    begin
      @empl_id = params[:empl_id]
      @employee = Employee.find params[:empl_id]
      render :update do |page|
        if params[:change] == 'true' # Замена
          @materials =  StoreSoap.materials_on_objects_with_pay_type(@login, date) 
          @empl_materials = @employee.materials(date)
          if @materials.size > 0 || @empl_materials.size > 0  # Материалы должны быть или на объекте или на руках
            page.call 'modal_window', 'window2'
            page.replace_html  'yield2', :partial => 'loginroot_and_empl_materials'
          else
            page.call "alert", "Нет установленых материалов"
          end
        else
          @materials =  StoreSoap.materials_on_objects(@login, date) 
          page.call 'modal_window', 'window2'
          page.replace_html  'yield2', :partial => 'loginroot_materials'
        end
      end
    rescue ActiveResource::ResourceNotFound, ActiveResource::ResourceConflict, ActiveResource::ResourceInvalid
      render :update do |page|
        page.alert 'Логин не найден!'
      end
    end
  end

#    map.connect 'legal_entities/auto_complete', :controller => 'legal_entities', :action => 'auto_complete', :format => 'json'

  def auto_complete
    search = params[:search]
    @materials = StoreSoap.material_search(search)
    respond_to do |format|
      format.json { render :json => [@materials].flatten }
    end

  end

  def save_login
    # "materials"=>{"1605"=>{"count"=>"1"}, "1681"=>{"count"=>""}}, :empl_id
    @employee = Employee.find params[:empl_id] 
    @login = params[:login]
    @dms = []

    params[:materials].to_a.each do |key, value|
      if (value[:count]).to_i > 0
        @dms << DoneMaterial.new(:material_name => value[:name], :material_id =>key.split("_")[0], :employee_id => @employee.id, :count =>(value[:count].to_i), :store_complete => true, :date => Date.today, :pay_type => value[:pay_type], :ens_code => value[:ens_code])
      end      
    end
    render :update do |page|
      page.call 'modal_window', 'window2', 'hide'
      if !params[:department].to_s.blank? && params[:department] == 'welder'
        page.replace_html 'materials_from_object_report_'+params[:report_id]+"_empl_"+@employee.id.to_s, :partial => '/welders/new_report_material_from_login'
      else
        page.insert_html :bottom,  'materials_from_object_'+@employee.id.to_s, :partial => 'new_report_material_from_login'
      end
    end
  end

  def save_change_login
#  "login"=>"test123-2", "empl_id"=>"3516", "report_id"=>"", "materials_from"=>{"1404       "=>{"id"=>"1404       ", "pay_type"=>"1", "count"=>"", "name"=>"Кабель оптический  ИКСЛ-М4П-А16-2,5"}}, "materials_to"=>{"1404       "=>{"id"=>"1404       "}}
    @employee = Employee.find params[:empl_id] 
    @login = params[:login]
    rand_n = rand 10000
    #inst_type 6
    # для снимаемого материала pay_type = 4, для устанавливаемого - что пришло из склада.
    if params[:materials_from].size > 0 && params[:materials_to].size > 0
      from = params[:materials_from].select{|id, prs| prs["count"].to_i > 0}.flatten[1] 
      to = params[:materials_to].select{|k, v| v.has_key? "id"}.first[1]    
      @m_from = DoneMaterial.new(:material_name => from[:name], :ens_code => from[:ens_code], :material_id =>from[:id], :employee_id => @employee.id, :count =>(from[:count].to_i), :date => Date.today, :inst_type => 6, :pay_type => 4, :store_id => rand_n)
      @m_to = DoneMaterial.new(:material_name => to[:name], :ens_code => to[:ens_code], :material_id =>to[:id], :employee_id => @employee.id, :count =>(from[:count].to_i), :date => Date.today, :inst_type => 6, :pay_type => from[:pay_type], :store_id => rand_n, :preowned => to[:preowned])
    else
       render :update do |page|
        page.call 'modal_window', 'window2', 'hide'
        page.call 'Ошибка при замене!'
      end
    end
    render :update do |page|
      page.call 'modal_window', 'window2', 'hide'
      if !params[:department].to_s.blank? && params[:department] == 'welder'
        page.insert_html :bottom, 'materials_from_object_report_'+params[:report_id]+"_empl_"+@employee.id.to_s, :partial => '/welders/new_change'
      else
        page.insert_html :bottom, 'materials_from_object_'+@employee.id.to_s, :partial => 'new_change'
      end
    end
  end    



protected

  def not_found
    flash[:error] = "Объект не найдет"
  end


end
