class Obra::InicioController < ApplicationController
	include TradutorConcern
	include ControllerConcern
	include ObraControllersConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:index_obras_alertas, :index_convenios_alertas]

	def index
		@filtro_inicio = Tableless::Filtro.new
		data_inicial = (!params[:tableless_filtro].nil? && !params[:tableless_filtro][:data_inicial].blank? ? params[:tableless_filtro][:data_inicial].to_date : ('01/01/'+"#{exercicio_atual}").to_date)
		data_final = (!params[:tableless_filtro].nil? && !params[:tableless_filtro][:data_final].blank? ? params[:tableless_filtro][:data_final].to_date : ('31/12/'+"#{exercicio_atual}").to_date)

		@filtro_inicio.data_inicial = data_inicial.to_date
		@filtro_inicio.data_final = data_final.to_date

		obras_geral = Contabilidade::Obra.joins(:situacoes_da_obra).where(
			"(contabilidade_obras.data_de_inicio >= ? AND contabilidade_obras.data_prevista_de_termino <= ? )
			OR (contabilidade_obras.data_de_inicio <= ? AND contabilidade_obras.data_prevista_de_termino >= ?)",
			data_inicial, data_final, data_final, data_inicial).distinct

		@valor_total_por_status = {"Não Iniciadas" => obras_geral.nao_iniciadas.sum(&:valor_total_atualizado).round(2),
			"Em andamento" => obras_geral.joins(:situacoes_da_obra).where(contabilidade_situacoes_da_obra: {tipo_de_status_da_obra: Contabilidade::SituacaoDaObra.tipos_de_status_da_obra[:em_andamento]}).sum(&:valor_total_atualizado).round(2),
			"Paralisadas" => obras_geral.paralisadas.sum(&:valor_total_atualizado).round(2),
			"Concluídas" => obras_geral.concluidas.sum(&:valor_total_atualizado).round(2)}

		@qtd_por_status = {"Não Iniciadas" => obras_geral.nao_iniciadas.count,
			"Em andamento" => obras_geral.joins(:situacoes_da_obra).where(contabilidade_situacoes_da_obra: {tipo_de_status_da_obra: Contabilidade::SituacaoDaObra.tipos_de_status_da_obra[:em_andamento]}).count,
			"Paralisadas" => obras_geral.paralisadas.count,
			"Concluídas" => obras_geral.concluidas.count}
		

		@top_5_obras_valor_total = obras_geral.order(valor: :desc).first(5).map {|obra| [obra.descricao_da_obra, obra.valor_total_atualizado.round(2)]}

		@obras_por_unidade_orcamentaria = obras_geral.joins(contrato: [unidade_orcamentaria_por_pedido: :unidade_orcamentaria]).group("TRIM(loa_unidades_orcamentarias.sigla)").count(:id).map{|unidade, count| [unidade, count]}
		@obras = Contabilidade::Obra.all
		@transferencias = Obra::Transferencia.convenio.where.not(status: "executado")
	end

	def index_obras_alertas
		return if bloqueia_usuario_com_base_em 'read'
		@obras = Contabilidade::Obra.all
	end

	def index_convenios_alertas
		return if bloqueia_usuario_com_base_em 'read'
		@transferencias = Obra::Transferencia.convenio.where.not(status: "executado")
	end

end
