class Tcm::Relatorios::LotesController < ApplicationController
	include ControllerConcern

	before_action -> { verifica_modulo_na_sessao(["contabilidade", "planejamento"]) }
	before_action :authenticate_usuario!
	before_action :autoriza_usuario! , except: [:imprimir]
	before_action :disponibiliza_dependencias

	def imprimir
		bloqueia_usuario_com_base_em :read, "tcm/lotes"
		relatorio = params[:relatorio]
		if respond_to? relatorio.to_s, :private
			rel = CombinePDF.new
			rel << CombinePDF.parse(send(relatorio))
			send_data rel.to_pdf, filename: "#{relatorio}.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to :back, alert: 'Relatório selecionado não existe'
		end
	end

	def criticas_do_lote_da_licitacao
		@erros_do_lote = Tcm::ErrosDoLote.find_by(id: params[:erros_do_lote_id])
		render_to_string pdf: "criticas_do_lote_da_licitacao",
			template: "tcm/relatorios/lotes/criticas_do_lote_da_licitacao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html:
				{ template: 'layouts/_cabecalho_pdf.html.slim',
					locals:   { titulo1:  'RELATÓRIO DE CRITICAS - LICITAÇÃO' , titulo2: "Geração: #{@erros_do_lote.exercicio_e_nome_do_mes}" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def criticas_do_lote_da_contabilidade
		@erros_do_lote = Tcm::ErrosDoLote.find_by(id: params[:erros_do_lote_id])
		render_to_string pdf: "criticas_do_lote_da_contabilidade",
			template: "tcm/relatorios/lotes/criticas_do_lote_da_contabilidade.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html:
				{ template: 'layouts/_cabecalho_pdf.html.slim',
					locals:   { titulo1:  'RELATÓRIO DE CRÍTICAS - CONTABILIDADE' , titulo2: "Geração: #{@erros_do_lote.exercicio_e_nome_do_mes}" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def relatorio_do_validador_do_sim
		arquivo_interno = params[:arquivo_interno]
		arquivo_externo = params[:arquivo_externo]
		@criticas_do_validador =  arquivo_externo[0..1] == "AP" ? params[:criticas].split(",")  :  params[:criticas].split(".,")

		render_to_string pdf: "relatorio_do_validador_do_sim",
			template: "tcm/relatorios/lotes/relatorio_do_validador_do_sim.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html:
				{ template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1:  'RELATÓRIO DE CRÍTICAS - ARQUIVO IMPORTADO' , titulo2: "ARQUIVOS COMPARADOS: #{arquivo_externo} - #{arquivo_interno}" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def tabelas_sem_data_do_sim_preenchida
		@projetos = contexto_atual.processos.where(envia_pro_sim: true, data_de_envio_pro_sim: nil).where.not(numero_do_processo: nil)
		@contratos = contexto_atual.contratos.where(envia_pro_sim: true, data_de_envio_pro_sim: nil).where("numero IS NOT NULL and numero != '' ")
		@aditivos = contexto_atual.aditivos.where(envia_pro_sim: true, data_de_envio_pro_sim: nil)

		render_to_string pdf: "tabelas_sem_data_do_sim_preenchida",
			template: "tcm/relatorios/lotes/tabelas_sem_data_do_sim_preenchida.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html:
				{ template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1:  'RELATÓRIO DE CRÍTICAS - SEM DATA DE ENVIO' , titulo2: "Geração: #{contexto_atual.exercicio}" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	private

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
