# -*- coding: utf-8 -*-
class Cron


  def self.test
    Rails.logger.info "TESTTT CRON " + Time.now.to_s
  end

  # 25-го числа создаем новые периоды
  def self.create_new_periods
    month = (Date.today + 1.month).beginning_of_month
    for dep in Division.all_for_form.map{|i| i[1]} do
      if Period.find(:all, :conditions =>"DATE(month) = DATE('#{month}') AND department = '#{dep}'").size == 0
        Period.create(:month => month, :department => dep, :closed => false)
      end
    end
    PeriodZp.check_and_save_sum
    # Назначаем Narbelet биргадиром на месяц вперед
  #  RegularManagerShift.create_shifts_for_department_for_period('alp', month)
  end


  

  # Каждую ночь проверяем частных инсталляторов, убираем права у уволенных
  # 4 дня после подключки. если не были сданы деньги, пишем письмо с предупреждением
  # 5 дней после подключки. через тегировалку создаем заявку в трекер Разбор проблем/Проблемы (150 рублей). Посылаем письмо сотруднику о штрафе.
  # Далее если заявку мы уже создавали, то начинаем начислять штраф за просрочку - 100 рублей в день.
  def self.money_problem
    require 'httparty'
    today = Date.today
    @reports = Report.find(:all, :conditions => "DATE(date) < DATE('#{Date.today - 5.days}') AND department = 'private' AND money_type IN (#{Report::NAL_money_types.join(', ')}) AND finn_closed IS FALSE AND status != '1' AND total_sum_get_money > 0")
    for report in @reports do
      if report.money_problem_tracker_id.nil? # 4 или 5 день
        if  (today - 3.days) == report.date.to_date # 4 день, предупреждаем в письме
          ReportMailer.deliver_report_without_money_warning(report)
        else # отсылаем данные в трекер + письмо сотруднику
          url = URI.escape("http://tag.rinet.ru/tag?reg_id=29&author=sdelka_bot&src_id=#{report.id}&login=#{report.name}")      
          resp = HTTParty.get(url)
          tracker_id = MultiJson.load(resp.parsed_response)["tracker_id"]
          if tracker_id 
            # Добавляем ник ответственного, пока через soap.
            if  report.done_employees.size > 0
              empl_nic = report.done_employees.first.empl_name
              TrackerSoap.set_kozel(report, empl_nic, tracker_id)
            end
            report.update_attributes(:money_problem_tracker_id => tracker_id)     
            ReportMailer.deliver_report_without_money_fine(report)
          end
        end
      else # начинаем штрафовать по сделке
        report.zp_fine_sum += 100
        report.save
      end
    end
  end

  # 5-го числа посылаем напоминание что необходимо закрыть период в сделке
  def self.period_mail
    month = Period.actives.find(:all, :order => "month DESC").first
    ReportMailer.deliver_close_period(month)
  end

  # 10-го числа закрываем сделку
  def self.close_period
    month = Period.actives.find(:all, :order => "DATE(month)").first.month
    periods = Period.for_month(month).actives
    for period in periods do
      #period.close
    end
  end

  

end
