class Licitacao::Relatorios::AditivosController < 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 :read, "licitacao/aditivos"
		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: 'Relátorio selecionado não existe'
		end
	end

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

	def documento_do_aditivo
		@documento_do_aditivo = Licitacao::DocumentoDoAditivo.find_by(id: params[:documento_do_aditivo_id])
		titulo_numero_do_documento = @documento_do_aditivo.numero.present? ? "Documento Nº #{@documento_do_aditivo.numero}" : ""

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo_unidade_gestora = @documento_do_aditivo.aditivo.retorna_unidade_gestora.try(:nome)
		else
			titulo_unidade_gestora = ''
		end

		@unidade_orcamentaria = @documento_do_aditivo.aditivo.unidade_orcamentaria_atual rescue nil

		render_to_string pdf: "documento_do_aditivo",
			template: "licitacao/relatorios/aditivos/documento_do_aditivo.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: titulo_unidade_gestora
					}
				}
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def itens_por_dotacao
		#@contrato = Licitacao::Contrato.find(params[:contrato_id])
		@aditivo = Licitacao::Aditivo.find(params[:aditivo_id])
		unidade_orcamentaria = @aditivo.contrato.unidade_orcamentaria
		numero_do_aditivo = "Aditivo Nº: #{@aditivo.numero}"
		numero_do_contrato = "do Contrato Nº: #{@contrato.try(:numero)}"

		titulo2 = @configuracoes.customizacao.exibir_nome_orgao? ? unidade_orcamentaria.unidade_gestora.nome.to_s : ''
		titulo3 = ""

		@unidade_orcamentaria = @aditivo.unidade_orcamentaria_atual rescue nil

		render_to_string pdf: "itens_por_dotacao",
			template: "licitacao/relatorios/aditivos/itens_por_dotacao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf_relatorios_licitacao.html.slim',
					locals: {
						titulo1: "Itens do Projeto Por Dotação",
						titulo2: titulo2,
						titulo3: titulo3
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
