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

  # Авторизация (файл: controllers/application.rb)
  before_filter :isAuthorization

  # Права доступа (файл: controllers/application.rb)
#  around_filter :isAccessSuper

  # Конструктор
  before_filter :construct

  def construct
    if(session[:isAdmin]=='true')
      $department = Check.isText(params[:d])
    else
      $department = Check.isText(cookies[:sys_dep])
    end

    # Типы работ
    sections_all = {}
    sections_all['private'] = ['Каблирование', 'Дополнительные']
    sections_all['mod'] = ['Отображать в сводной таблице', "Не отображать в сводной таблице"]
    sections_all['alp'] = ['Основные']
    sections_all['corp'] = ['Основные']

    if(sections_all[$department] == nil)
      sections_all[$department] = ['Основные']
    end

    $category_info = 'false'

    if($department=='corp' || $department=='soft' ||  $department=='mod' ||  $department=='welder' ||  $department=='couriers' ||  $department=='underground')
      $category_info = CategoryDB.getCategory($department)
     # $category_info = ["Подключение", "Подключение телефонии ","Модернизация","Новый объект","Доп. работы","Нестандартная работа","Доп. работы при подключении"]
    end
    

    # Тип работ для зашедшего сюперюзера
    @sections = sections_all[$department]
  end


	# Works
  def index
    if(session[:isAdmin]=='true')
    else
      if(session[:isSuperUser]=='true')
        redirect_to :action => "edit", :id => "s"
      else
        redirect_to :action => "error", :code=>1
      end
    end
  end


  def edit
    if params[:show] && params[:show] != ""      
      @result = Work.find_by_sql("SELECT a.*, b.name AS measure_title FROM works AS a LEFT JOIN measures AS b ON(b.id=a.measure) WHERE a.show IS NULL AND  a.department='"+$department.to_s+"' ORDER BY a.sort ASC") if params[:show] == 'null'
      @result = Work.find_by_sql("SELECT a.*, b.name AS measure_title FROM works AS a LEFT JOIN measures AS b ON(b.id=a.measure) WHERE a.show = #{params[:show]} AND  a.department='"+$department.to_s+"' ORDER BY a.sort ASC") if params[:show] == '1'
    else
      @result = Work.find_by_sql("SELECT a.*, b.name AS measure_title FROM works AS a LEFT JOIN measures AS b ON(b.id=a.measure) WHERE a.department='"+$department.to_s+"' ORDER BY a.sort ASC")
    end
  end


  def error

    @error = "В доступе отказано!"

  end


	def addwork
		@title=''
		@description=''
		@section=0
		@price=''
    @rate=''
    @addrate=''
    @free = false
		@measure_id=''
		@step_button=1
		@sort = 500
		@all_measures = self::getMeasure
    @show = 0
    @category = ""
		begin
			WorksDB.find(params[:id].to_i)
		rescue
			print 'Куда полез?'
		else
		  # get data work                                    
                  @work = Work.find params[:id]
			@id = params[:id]
			@result = WorksDB.find_by_sql("SELECT * FROM works WHERE id="+@id+"")
			@title = Check.isText(@result[0]['name'])
			@description = Check.isText(@result[0]['description'])
			@section = @result[0]['section']
			@price = Check.isText(@result[0]['price'])
      @rate = @result[0]['rate']
      @addrate = @result[0]['addrate']
			@measure_id = @result[0]['measure']
			@step_button = @result[0]['step_button']
			@sort = @result[0]['sort']
      @show = @result[0]['show'].to_i
                  @free = @result[0]['free']
      @category = @result[0]['category'].to_s
		end
		
	end

	def savework
		if(params[:id].to_i>0)
			id = params[:id].to_i
			sv_work = WorksDB.find(id)
		else
			sv_work = WorksDB.new
		end
		# get
		sv_work.name = Check.trim(params[:title])
		sv_work.section = params[:section]
		sv_work.description = Check.trim(params[:description])
		sv_work.price = Check.trim(params[:price])
    sv_work.rate = Check.trim(params[:rate])
    sv_work.addrate = Check.trim(params[:addrate])
		sv_work.measure = params[:measure]
		sv_work.step_button = params[:step_button]
		sv_work.sort = params[:sort]
    sv_work.show = params[:show]
    sv_work.free = params[:free]
    sv_work.legal_entity_id = params[:legal_entity_id]
    sv_work.category = (params[:category]) ? params[:category].join("-")+"-" : ""
    sv_work.department = (session[:isAdmin]=='true') ? params[:department] : $department
		# save
		sv_work.save
		#redirect
		if(session[:isAdmin]=='true')
      redirect_to :action => "edit", :d =>params[:department].to_s, :id => params[:department]
    else
      redirect_to :action => "index"
    end
	end
	
	def delwork
		if(params[:id].to_i>0)
			id = params[:id].to_i
			begin
				WorksDB.find(id)
			rescue	
				print 'Такого идентификатора - НЕТ.'
			else 	
				# delete
				WorksDB.delete(id)
				# redirect
				redirect_to :action => "index"
			end
		end
	end
	

	def getMeasure
		res = WorksDB.find_by_sql("SELECT * FROM measures ORDER BY sort ASC")
		result = [{}]
		for val in res
                  if val['description'] && val['description'].length>0 then desc="("+val['description']+")" else desc='' end
			result += [{"id"=>val['id'], "name"=>""+val['name']+desc+""}]
		end
		return result		
	end

  

	# end Work
end


class WorksDB < ActiveRecord::Base
	self.table_name = "works"

end
