module Contabilidade
	class InicioController < ApplicationController
		include ControllerConcern
		before_action :authenticate_usuario!
		before_action :autoriza_usuario!

		def index
			@mes = params[:mes].to_i
      @ano = params[:ano].to_i
				
      if @mes > 0 && @ano > 0
        inicio_mes = Date.new(@ano, @mes, 1)
        fim_mes = inicio_mes.end_of_month
        @receita = contexto_atual.taloes_de_receita.joins(:natureza_da_receita).where("SUBSTRING(base_naturezas_da_receita.codigo, 3, 1) = '7'").where(data_do_talao: inicio_mes..fim_mes).sum(:valor).to_f - contexto_atual.anulacoes_dos_taloes_de_receita.joins(talao_de_receita: :natureza_da_receita).where("SUBSTRING(base_naturezas_da_receita.codigo, 3, 1) = '7'").where(data_da_anulacao: inicio_mes..fim_mes).sum(:valor).to_f
        @despesa = contexto_atual.pagamentos.joins(liquidacao: { empenho: { sub_elemento_de_despesa: { elemento_de_despesa: :modalidade_de_aplicacao } } }).where("SUBSTRING(base_modalidades_de_aplicacao.codigo, 3, 2) = '91'").where(data: inicio_mes..fim_mes).sum(:valor).to_f - contexto_atual.estornos_de_pagamento.joins(pagamento: { liquidacao: { empenho: { sub_elemento_de_despesa: { elemento_de_despesa: :modalidade_de_aplicacao } } } }).where("SUBSTRING(base_modalidades_de_aplicacao.codigo, 3, 2) = '91'").where(data: inicio_mes..fim_mes).sum('contabilidade_pagamentos.valor').to_f
        @num_receitas = contexto_atual.taloes_de_receita.joins(:natureza_da_receita).where("SUBSTRING(base_naturezas_da_receita.codigo, 3, 1) = '7'").where(data_do_talao: inicio_mes..fim_mes).count
        @num_despesas = contexto_atual.pagamentos.joins(liquidacao: { empenho: { sub_elemento_de_despesa: :elemento_de_despesa } }).where("SUBSTRING(base_elementos_de_despesa.codigo, 3, 2) = '91'").where(data: inicio_mes..fim_mes).count
      else
        @receita = contexto_atual.taloes_de_receita.joins(:natureza_da_receita).where("SUBSTRING(base_naturezas_da_receita.codigo, 3, 1) = '7'").sum(:valor).to_f - contexto_atual.anulacoes_dos_taloes_de_receita.joins(talao_de_receita: :natureza_da_receita).where("SUBSTRING(base_naturezas_da_receita.codigo, 3, 1) = '7'").sum(:valor).to_f
        @despesa = contexto_atual.pagamentos.joins(liquidacao: { empenho: { sub_elemento_de_despesa: { elemento_de_despesa: :modalidade_de_aplicacao } } }).where("SUBSTRING(base_modalidades_de_aplicacao.codigo, 3, 2) = '91'").sum(:valor).to_f -  contexto_atual.estornos_de_pagamento.joins(pagamento: { liquidacao: { empenho: { sub_elemento_de_despesa: { elemento_de_despesa: :modalidade_de_aplicacao } } } }).where("SUBSTRING(base_modalidades_de_aplicacao.codigo, 3, 2) = '91'").sum('contabilidade_pagamentos.valor').to_f
        @num_receitas = contexto_atual.taloes_de_receita.joins(:natureza_da_receita).where("SUBSTRING(base_naturezas_da_receita.codigo, 3, 1) = '7'").count
        @num_despesas = contexto_atual.pagamentos.joins(liquidacao: { empenho: { sub_elemento_de_despesa: :elemento_de_despesa } }).where("SUBSTRING(base_elementos_de_despesa.codigo, 3, 2) = '91'").count
      end
		end
	end


end
