# -*- coding: utf-8 -*-
class AjaxdataController < ApplicationController

  # Авторизация (файл: controllers/application.rb)
  before_filter :isAuthorization


  def index

  end


  def pricelistWorks
    department_id = Check.intval(params[:d])
    category = Check.intval(params[:c])
    clientType = (params[:ct]) ? Check.intval(params[:ct]) : "0"
    id = (params[:i]) ? Check.intval(params[:i]) : 0

    clientType = (clientType.to_s == "1") ? 'C' : 'P'

    #if(clientType.to_s == "0") then clientType='P' end
    #if(clientType.to_s == "1") then clientType='C' end
    #if(clientType.to_s == "2") then clientType='P' end



    @result = ApplicationHelper::HTMLtemplates.getHTMLPricelistWorks(department_id, id, clientType)
  end



  def serialsAssets
    material_id = Check.intval(params[:m])
    count = Check.intval(params[:c])
    empl_name = Check.isText(params[:e])
    @result = ApplicationHelper::HTMLtemplates.getHTMLSerials(material_id, count, empl_name)


  end


  def setStatus
    id = (params[:i]) ? Check.intval(params[:i]) : 0
    status = (params[:s]) ? Check.intval(params[:s]) : 0
    if(id.to_i>0)
      sv_report = ReportsDB.find(id)
      # save
      sv_report.status = status
      sv_report.save
    end
  end


  def getWorksSoft

    department_id = Check.intval(params[:d])
    department = Check.isText(params[:dn])
    category = Check.intval(params[:c])
    clientType = (params[:ct]) ? Check.intval(params[:ct]) : "0"
    id = (params[:i]) ? Check.intval(params[:i]) : 0

    clientType = (clientType.to_s == "1" || clientType.to_s == "2") ? 'C' : 'P'

    # ПОлучаем комментарий и стоимость не стандартной работы
    if(id.to_i>0)
      allData = ReportsDB.find_by_sql("SELECT get_money_sum, com_other_materials FROM reports WHERE id='"+id.to_s+"'")
      @other_work_cost = allData[0]['get_money_sum'].to_s
      @other_work = allData[0]['com_other_materials'].to_s
    end



    if(category.to_s!="26" && category.to_s!="27")
      @result = ApplicationHelper::HTMLtemplates.getHTMLPricelistWorks(department_id, id, clientType)
    else
      @result = ApplicationHelper::HTMLtemplates.getHTMLAddWorks(department, id, category)
    end



  end


  def addWorksCorp
    @work_pay_type = Check.intval(params[:p])
    @work_pay_type = (@work_pay_type.to_i>0) ? @work_pay_type : "1"
    department = params[:d]
    @category = Check.intval(params[:c])
    @get_money_sum = ""
    @com_get_money = ""
    id = Check.intval(params[:i])
    id = (id.to_i>0) ? id : 0
    if(id.to_i>0 && (@category=="12" || @category=="13" || @category=="14"))
      report = ReportsDB.find_by_sql("SELECT * FROM reports WHERE id="+id+"")
      @work_pay_type = (params[:p] == "0") ? report[0]['serial_new'].to_s : @work_pay_type
      @get_money_sum = report[0]['get_money_sum'].to_s
      @com_get_money = report[0]['com_get_money'].to_s
    end

    costForAddRate = (@work_pay_type == "2") ?  true : false

    @result = ApplicationHelper::HTMLtemplates.getHTMLAddWorks(department, id, @category, costForAddRate)

  end



  def payCorp
    priceExtremCall = 0.3
    priceHolidayCall = 0.5

    ## Входящие переменные
    reportId = (params[:r]) ? Check.intval(params[:r]) : 0
    @employees = Check.isText(params[:e]).split("|")
    category = Check.intval(params[:category])
    extrem_call = Check.intval(params[:diagnosis])
    holiday_call = Check.intval(params[:weld])
    work_count_type = Check.intval(params[:work_count_type])
    @onlySum = (params[:o]) ? Check.intval(params[:o]) : 0


    notStandartWorkSum = (params[:notStandartWorkSum]) ? params[:notStandartWorkSum] : 0
    if(reportId.to_i>0)
      report_info = ReportsDB.find_by_sql("SELECT * FROM reports WHERE id="+reportId.to_s+"")
    end
    notStandartWorkSum = (report_info) ? report_info[0]['get_money_sum'].to_s : 0

    categoryInfo = CategoryDB.getCategoryInfo(category)
    categoryPay = categoryInfo['price']
    categoryBonus = (category == "13") ? notStandartWorkSum : '0' # categoryInfo['bonus']

    extrem_call = (report_info && report_info[0]['diagnosis'].to_s == "1") ? priceExtremCall : 0
    holiday_call = (report_info && report_info[0]['weld'].to_s == "1") ? priceHolidayCall : 0

    lines = (report_info) ? report_info[0]['electro'].to_i : 0




    @worksSum = 0
    ### ПОлучаем работы
    params.each {|key, value|
        key = "#{key}"
        value = "#{value}"
        if(key.index("addwork_") && value.to_i>0)
          work_id = key[8..-1]
          price = (params["addworkprice_"+work_id+""] && params["addworkprice_"+work_id+""].to_i>0) ? params["addworkprice_"+work_id+""].to_i : 0
          @worksSum += price.to_i*value.to_i
        end
    }

    #### Работы из прайслиста
    params.each {|key, value|
        key = "#{key}"
        value = "#{value}"
        if(key.index("work_") && value.to_i>0)
            work_id = key[5..-1]
            price = PricelistDB.getRate(work_id)
            @worksSum += price.to_i*value.to_i
        end
    }

    if(category == "12" || category == "14")
      @worksSum = @worksSum - (@worksSum * 0.6)
    elsif category == "8"
      @worksSum = @worksSum - (@worksSum * 0.1)      
    end

    if(categoryBonus.to_i == 0)
        categoryBonus = categoryBonus.to_i
        # Доп работы
        if(category == "12" && extrem_call>0) then categoryBonus += (categoryPay.to_i + @worksSum.to_i) * extrem_call end
        if(category == "12" && holiday_call>0) then categoryBonus += (categoryPay.to_i + @worksSum.to_i) * holiday_call end
    else
        # процент или фиксированная сумма
      if(categoryBonus.index("%"))
            categoryBonus = categoryBonus.sub("%", "").to_i
            #categoryBonus = allWorkSum.to_i * (categoryBonus/100)
            categoryBonus = categoryBonus*@worksSum.to_i/100
        else
            categoryBonus = categoryBonus.to_i
            # Подключение телефонии
             if(category == "9") then categoryBonus = (lines.to_i>0) ? categoryBonus * lines : categoryBonus end
             # Доп работы или доп работы при подключении
             if(category == "12" || category == "14")
                categoryBonus += (extrem_call>0) ? categoryPay.to_i*extrem_call : categoryBonus
                categoryBonus += (holiday_call>0) ? categoryPay.to_i*holiday_call : categoryBonus
             end
        end
    end
    @totalBonus = @worksSum + categoryPay.to_i + categoryBonus.to_i
    if (category != "12" && category != "14" && category != "13" && category != "9" && category != "15" && category != "8")
      @totalBonus = @totalBonus - (@totalBonus * 0.1)      
    end
    if(reportId.to_i>0)
        @emplInfo = EmployeesDoneDB.getEmployeesPay(reportId)
    end




    ## Начинам считать
    #$countPay = new countPayWork($work_type, $works, $worksVal, $work_pay_type, $extrem_call, $holiday_call); // рассчет суммы премии каждому сотруднику

  end


  def paySoft
    ## Входящие переменные
    reportId = Check.intval(params[:r])


    #24 - Клиентская
    #25 - Обслуживание
    #26 - Ринет-офис
    #27 - Ринет-халява
    #28 - Гарантия
    #29 - Биллинговый конфликт
    category = Check.intval(params[:category]).to_s
    marge = (params[:marge]) ? Check.intval(params[:marge]).to_i : 0

    #0 - частный
    #1 - корпоративный
    #2 - внутренний
    client_type = Check.intval(params[:client_type]).to_s

    total_sum_get_money = Check.intval(params[:total_sum_get_money]).to_i
    total_sum_comment = Check.isText(params[:total_sum_comment])

    other_work_cost = (params[:other_work_cost]) ? Check.intval(params[:other_work_cost]).to_i : 0

    discount_works = (params[:discount_works]) ? Check.isText(params[:discount_works]) : 0
    direct = discount_works[0].chr
    discount_works = discount_works.gsub("+", "")
    number_of_person = params[:empl].size.to_i
    allWorkSum = Check.intval(params[:total_sum_works]).to_i / number_of_person
#    sum_for_person = allWorkSum / number_of_person
#    RAILS_DEFAULT_LOGGER.debug "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #{number_of_person}"
#    RAILS_DEFAULT_LOGGER.debug "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #{sum_for_person}"
    allEmployeePay = 0
    if(total_sum_comment.to_s.length>1)
      @allEmployeePay = (client_type=="0") ? 420 : 750
    else
      if(total_sum_get_money<=0 && (total_sum_comment=='Конфликт с клиентом' || total_sum_comment=='Косяк сотрудника RiNet' || total_sum_comment=='Халявщик'))
        @allEmployeePay = (client_type=="0") ? 420 : 750
      else
        if(category == "24" || category == "25" )
    wSum = (allWorkSum-(allWorkSum*50/100))
          @allEmployeePay = wSum + (marge/2)

        end
        if(category == "26")
          @allEmployeePay = 750
        end
        if(category == "27" || category == "29")
          @allEmployeePay = (client_type=="0") ? 420 : 750
        end
        if(category == "28")
    wSum = (allWorkSum-(allWorkSum*50/100))
          @allEmployeePay = (client_type=="0") ? wSum + (marge/2) + 420 : wSum + (marge/2) + 750
        end
      end
      if(@allEmployeePay<420) then @allEmployeePay=420 end
    end




    # Рассчет з/п
    #allWorkSum = WorksDoneDB.getWorksTotalPrice(reportId) + WorksDoneDB.getPricelistWorksTotalPrice(reportId) + other_work_cost
    #allWorkSum = (category == "" || category == "" ) ? allWorkSum/2 : allWorkSum # РинЭд забЭрает половину

 #   worksSum = 0
    ### ПОлучаем работы
    # params.each {|key, value|
    #         key = "#{key}"
    #         value = "#{value}"
    #         if(key.index("addwork_") && value.to_i>0)
    #           work_id = key[8..-1]
    #       price = WorksDB.getPrice(work_id)
    #       worksSum += price.to_i*value.to_i
    #     end
    # }

    # #### Работы из прайслиста
    # params.each {|key, value|
    #         key = "#{key}"
    #         value = "#{value}"
    #         if(key.index("work_") && value.to_i>0)
    #         work_id = key[5..-1]
    #         price = PricelistDB.getWorkPrice(work_id)
    #         worksSum += price.to_i*value.to_i
    #     end
    # }
    # allWorkSum = worksSum + other_work_cost



     #  @allEmployeePay = 0
    #     if(total_sum_comment!='')
    #       @allEmployeePay = (client_type=="0") ? 357 : 600
    #     else

    #       if(total_sum_get_money<=0 && (total_sum_comment=='Отказ от оплаты клиентом' || total_sum_comment=='Конфликт с клиентом' || total_sum_comment=='Косяк сотрудника RINET' || total_sum_comment=='Халявщик'))
    #       @allEmployeePay = (client_type=="0") ? 357 : 600
    #       else
    #       if(category == "24" || category == "25")
    #         # скидки
    #         if(direct == "+")
    #         wSum = (allWorkSum-(allWorkSum*37/100)) + discount_works.to_i
    #         else
    #         wSum = (allWorkSum-(allWorkSum*37/100)) - discount_works.to_i
    #         end

    #         @allEmployeePay = wSum + (marge/2)
    #       end
    #       if(category == "26")
    #         @allEmployeePay = 600
    #       end
    #       if(category == "27" || category == "29")
    #         @allEmployeePay = (client_type=="0") ? 357 : 600
    #       end
    #       if(category == "28")
    #         # скидки
    #         if(direct == "+")
    #         wSum = (allWorkSum-(allWorkSum*37/100)) + discount_works.to_i
    #         else
    #         wSum = (allWorkSum-(allWorkSum*37/100)) - discount_works.to_i
    #         end
    #         @allEmployeePay = (client_type=="0") ? wSum + (marge/2) + 357 : wSum + (marge/2) + 600
    #       end
    #       end
    #     end

    # ## Начинам считать
    #     #$countPay = new countPayWork($work_type, $works, $worksVal, $work_pay_type, $extrem_call, $holiday_call); // рассчет суммы премии каждому сотруднику

  end


  def addWorksSoft
    client_price_type = Check.intval(params[:p])
    category = Check.intval(params[:c])
    id = Check.intval(params[:i])
    id = (id.to_i>0) ? id : 0
    department = params[:dn]
    if(id.to_i>0)
      report = ReportsDB.find_by_sql("SELECT * FROM reports WHERE id="+id+"")
      @work_pay_type = (params[:p] == "0") ? report[0]['serial_new'].to_s : @work_pay_type
      @get_money_sum = report[0]['get_money_sum'].to_s
      @com_get_money = report[0]['com_get_money'].to_s
    end

    costForAddRate = (@work_pay_type == "2") ?  true : false

    @result = ApplicationHelper::HTMLtemplates.getHTMLAddWorks(department, id, @category, costForAddRate)

  end


  def loginroots
    lname = Check.isText(params[:l])
    @result = AssetsDB.getLoginRoots(lname)
  end


end
