# -*- coding: utf-8 -*-
class CouriersController < ApplicationController


  before_filter :isAuthorization
  before_filter :set_var

 
  def index

   
    @shifts = WorkShift.for_department(@department).for_calendar(@date)
    @reports = DoneEmployee.find_by_sql("SELECT e.empl_id employee_id, DATE(r.date) shift_date, e.empl_name employee_nic, COUNT(r.id) works_count FROM done_employees e LEFT JOIN reports r on e.report_id = r.id WHERE r.department = '#{@department}' AND DATE(r.date) BETWEEN DATE('#{@date.beginning_of_month.beginning_of_week}') AND DATE('#{@date.end_of_month.end_of_week}') GROUP BY employee_id, employee_nic, shift_date")
  end

  def new
    #    Parameters: {"t_stat"=>"otpiska", "t_id"=>"226353", "t_empl"=>""}
    if params[:t_id] && params[:t_stat] == "otpiska" &&  !params[:t_empl].blank? # create
      if (Report.find_by_tracker_id params[:t_id]).nil?
        @report = Report.new(:date => Date.today, :department => 'couriers', :name => '', :tracker_id => params[:t_id], :categor => Category.couriers.first)
        @report.done_works.build(:work_id => Work.couriers.first.id, :pricelist => 0)
        empl = Employee.find_by_login params[:t_empl]
        if empl
          @report.done_employees.build(:employee => empl)
        else
          flash[:error] = 'Сотрудник не найдет!'
        end
        if @report.save
          Tracker.update_fields(params[:t_id], {"otchets" => "1"})
          flash[:notice] = 'Запись создана'
        else
          flash[:error] = 'Ошибка!'
        end
      else
        flash[:error] = 'Такая запись уже существует!'
      end
    elsif  params[:t_id] && params[:t_stat] == "del"
      @report = Report.find_by_tracker_id params[:t_id]
      if @report
        @report.destroy
        Tracker.update_fields(params[:t_id], {"otchets" => "2"})
        flash[:notice] = "Запись удалена!"
      else
        flash[:error] = "Запись не найдена!"
      end
    else
      flash[:error] = 'Недостаточно данных!'
    end
    redirect_to :action => "index"
  end

  def edit
    @shifts = WorkShift.for_department(@department).for_date(@date)      
    @works = Report.for_department(@department).for_date(@date)#.without_status('1')   
    @employees =  Employee.couriers_employees
  end

  def update
        @shifts = []
    @employees = params[:employees]
    
    @employees.each  do |k, v|
      empl = Employee.find k
      empl.update_attributes(v)
      @shifts << empl.reload.work_shifts.select{|i| i.shift_date == @date}
    end
    respond_to do |f|
        f.html { redirect_to couriers_path(:date => @date)}
    end
    
  end


  def add_smena

    employee = Employee.find params[:employee_id]

    if WorkShift.for_department(@department).with_employee(employee.id).for_date(@date).size == 0
      if WorkShift.create(:department => @department, :employee => employee, :shift_date => @date)
        message = "OK"
      else
        message = "Error"
      end
    else
      message = "Уже есть такая смена"
    end
    render :text => message
  end

  def remove_smena
  employee = Employee.find params[:employee_id]
    if (@shift = WorkShift.for_department(@department).with_employee(employee.id).for_date(@date)).size != 0
      if @shift.first.destroy
        message = "OK"
      else
        message = "Error"
      end
    else
      message = "Cмена не найдена"
    end
    render :text => message
  end


  def report
    @reports = ""
  end

private

  def set_var
    Employee.current_user = Employee.find(session[:user_id]) unless session[:user_id].nil?
    @department = 'couriers'
    $department_id = '154'   
    @current_user = Employee.find(session[:user_id])
    @boss = (@current_user.accesses.for_department('couriers').size > 0 && @current_user.accesses.for_department('couriers').first.access_write == 1)

    cookies[:sys_dep] = { :value => $department }
 if (params[:date])
      @date = params[:date].to_date
    else
      @date = (Date.today)
    end
  end


end
