# -*- coding: utf-8 -*-
class ManagersController < ApplicationController

  # Авторизация (файл: controllers/application.rb)
#  before_filter  :construct, :isAuthorization

  # Права доступа (файл: controllers/application.rb)
#  around_filter :isAccessSuper

  before_filter :isAuthorization, :except => :schedule
  before_filter :set_var, :except => :schedule


  def schedule
    @page_title = 'Расписание диспетчеров АМС'
    @currPage = "index"
    if (params[:date])
      @date = params[:date].to_date
    else
      @date = (Date.today)
    end
    @days = @date.beginning_of_month.beginning_of_week..@date.end_of_month.end_of_week
    @shifts = ManagerShift.for_department("ams").for_calendar(@date)
    render :layout => false
  end

  def construct

   
  end

  def index
    @page_title = 'Управление диспетчерами'
    @currPage = "index"
    if (params[:date])
      @date = params[:date].to_date
    else
      @date = (Date.today)
    end

    @days = @date.beginning_of_month.beginning_of_week..@date.end_of_month.end_of_week
    @shifts = ManagerShift.for_department($department).for_calendar(@date)
  end

  def new
    if @boss
      render :update do |page|
        page.insert_html  :bottom, 'employees', :partial => 'employee', :locals =>{:employee => @current_user}
      end
    else
      render :update do |page|
        page.call 'alert', "Недостаточно прав!"
      end
    end
  end


  def edit
    if @boss
      @date = params[:date].to_date
      @shifts = ManagerShift.for_department($department).for_date(@date)
      render :update do |page|
        page.show 'window2'
        page.replace_html  'yield2', :partial => 'edit'
      end
    else
      render :update do |page|
        page.call 'alert', "Недостаточно прав!"
      end
    end
  end

  def update
    @date = params[:date].to_date
    @shifts = ManagerShift.for_department($department).for_date(@date)
    @employee_was = @shifts.map{|i| i.employee_id.to_s}
    @employee_new = params[:shifts]  ? params[:shifts].values : []
    
    to_add_employee = @employee_new-@employee_was
    to_remove_employee = @employee_was-@employee_new
    
    for e in to_add_employee do
      ManagerShift.create(:shift_date => @date, :department => $department, :employee_id => e)
    end
    for e in to_remove_employee do
      shift = ManagerShift.for_department($department).for_date(@date).find(:first, :conditions =>"employee_id = #{e}")
      shift.destroy if shift
    end
          @shifts = ManagerShift.for_department($department).for_date(@date)

    render :update do |page|
      page.hide 'window2'
      page.replace_html  @date.to_time.to_i, :partial => 'day', :locals =>{:day => @date}
    end


  end

  def stats
    @page_title = 'Статистика диспетчеров'
    @currPage = "stats"
    @date = "01.#{@month.to_i}.#{@year.to_i}".to_date
    @shifts = ManagerShift.for_department($department).for_month(@date).find(:all, :order => "employee_id, shift_date")
    @schedule = WorkingDay.for_month(@date).first
    if $department == 'private'
      @mod_reports = Report.find_by_sql("SELECT * FROM reports WHERE DATE(date) BETWEEN DATE('#{@date.beginning_of_month}') AND DATE('#{@date.end_of_month}') AND department = 'mod' AND status = 2")
      render :template => "/managers/stats_private"
    end
  end

private


def set_var
    
  
    if params[:department]    
      $department = params[:department]
    elsif cookies[:sys_dep]
      $department = cookies[:sys_dep]
    else
      $department = 'soft'
    end
    if params && params[:filter_month]
      @month = (params[:filter_month]).to_s
      @year = (params[:filter_year]).to_s
    else
      @month = Date.today.month
      @year = Date.today.year
    end

    Employee.current_user = Employee.find(session[:user_id]) unless session[:user_id].nil?
    @current_user = Employee.current_user
    @boss = (@current_user.accesses.for_department($department).size > 0 && @current_user.accesses.for_department($department).first.access_write == 1)

    # Формируем сессию
      params.each { |key, value| session[""+key+""] = value }
      $session = session


  end



end
