class Licitacao::Relatorios::AtasDeRegistroDePrecosController < ApplicationController
	include ControllerConcern

	before_action -> { verifica_modulo_na_sessao(["licitacao", "controladoria","administrativo"]) }
	before_action :authenticate_usuario!
	before_action :autoriza_usuario! , except: [:imprimir]
	before_action :disponibiliza_dependencias

	def imprimir
		bloqueia_usuario_com_base_em :show, "licitacao/atas_de_registro_de_precos"
		relatorio = params[:relatorio]
		if respond_to? relatorio.to_s, :private
			loa = CombinePDF.new
			loa << CombinePDF.parse(send(relatorio))
			send_data loa.to_pdf, filename: "#{relatorio}.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to :back, alert: 'Demonstrativo selecionado não existe'
		end
	end

	def imprimir_doc
		relatorio = params[:relatorio]
		request.format = "docx"
		respond_to do |format|
			format.docx {
				@ata_de_registro_de_precos = Licitacao::DocumentoDaAta.find_by(id: params[:documento_da_ata_id])
				response.headers['Content-Type'] = 'text/txt'
				response.headers['Content-Disposition'] = "attachment; filename=documento_da_ata.docx"
				render template: "licitacao/relatorios/ata_de_registro_de_precos/documento_da_ata.docx.slim"
			}
		end
	end

	private

	def relacao_de_ata_de_registro_de_preco_por_final_de_vigencia
		data_inicial_do_exercicio = "01/01/" + orcamento_atual.exercicio.to_s
		@atas_de_registro_de_precos = Licitacao::AtaDeRegistroDePrecos.where("data_final_de_vigencia >= ?", data_inicial_do_exercicio)

		render_to_string pdf: "relacao_de_ata_de_registro_de_preco_por_final_de_vigencia",
			template: "licitacao/relatorios/ata_de_registro_de_precos/relacao_de_ata_de_registro_de_preco_por_final_de_vigencia.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "Relação de Ata de Registro de Preço por Final de Vigência",
						titulo2: "Período 01/01/" + orcamento_atual.exercicio.to_s + " - 31/12/" + orcamento_atual.exercicio.to_s
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def relacao_de_saldos_de_registros_de_precos
		@atas_de_registro_de_precos = orcamento_atual.atas_de_registro_de_precos

		render_to_string pdf: "relacao_de_saldos_de_registros_de_precos",
			template: "licitacao/relatorios/ata_de_registro_de_precos/relacao_de_saldos_de_registros_de_precos.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "Relação de Saldos de Registros de Preço",
						titulo2: "Período 01/01/" + orcamento_atual.exercicio.to_s + " - 31/12/" + orcamento_atual.exercicio.to_s
					}
				},
				spacing: 5
			},
			margin: @configuracoes.margens_customizadas
	end

	def relacao_de_ata_de_registro_de_preco
		@atas_de_registro_de_precos = orcamento_atual.atas_de_registro_de_precos

		render_to_string pdf: "relacao_de_ata_de_registro_de_preco",
			template: "licitacao/relatorios/ata_de_registro_de_precos/relacao_de_ata_de_registro_de_preco.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "Relação de Ata de Registro de Preço",
						titulo2: "Período 01/01/" + orcamento_atual.exercicio.to_s + " - 31/12/" + orcamento_atual.exercicio.to_s
					}
				},
				spacing: 5
			},
			margin: @configuracoes.margens_customizadas
	end

	def documento_da_ata
		@ata_de_registro_de_precos = Licitacao::DocumentoDaAta.find_by(id: params[:documento_da_ata_id])
		titulo_numero_do_documento = @ata_de_registro_de_precos.numero.present? ? "Documento Nº #{@ata_de_registro_de_precos.numero}" : ""

		render_to_string pdf: "ata_de_registro_de_precos",
			template: "licitacao/relatorios/ata_de_registro_de_precos/documento_da_ata.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: titulo_numero_do_documento, titulo2: ""}
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
