module ApplicationHelper
	def back(fallback_location:)
		if referer = request.headers["Referer"]
			referer
		else
			fallback_location
		end
	end

	def errors_for(object)
		if object.errors.any?
			content_tag(:div, class: "panel panel-danger") do
				concat(content_tag(:div, class: "panel-heading") do
					concat(content_tag(:h4, class: "panel-title") do
						concat "#{pluralize(object.errors.count, "erro")} encontrado(s):"
					end)
				end)
				concat(content_tag(:div, class: "panel-body") do
					concat(content_tag(:ul) do
						object.errors.full_messages.each do |msg|
							concat content_tag(:li, msg)
						end
					end)
				end)
			end
		end
	end

	def error_for(model, *attributes)
		return if model.nil?
		mensagem = []
		attributes.each do |attribute|
			model.errors[attribute].each do |error|
				if mensagem.exclude? error
					mensagem << error
				end
			end
		end

		content_tag :span, class: "error_explanation #{model.try(:id)}" do
			mensagem.join(', ')
		end
	end

	def boolean_html_tag(valor = false, verdadeiro = "", falso = "")
		content_tag :span, { class: "label label-#{valor == true ? "success" : "danger"}" } do
			"#{valor == true ? "#{verdadeiro}" : "#{falso}"}"
		end
	end

	def label_html_tag(valor = "", cor = "primary")
		content_tag :span, { class: "label label-#{cor}", style: "margin-right: 5px !important;" } do
			"#{valor.try(:upcase)}"
		end
	end

	def popup_pesquisa_pessoa(*args)
		options = args.extract_options!
		html = "<div aria-labelledby=\"myLargeModalLabel\" class=\"modal fade modalPessoas\" role=\"dialog\" tabindex=\"-1\">
			<div class=\"modal-dialog modal-lg\" role=\"document\">
				<div class=\"modal-content\">
					<div class=\"modal-header\"><button aria-label=\"Close\" class=\"close\" data-dismiss=\"modal\" type=\"button\"><span aria-hidden=\"true\">× </span></button>
						<h4 class=\"modal-title\" id=\"myModalLabel\">#{options[:title]}</h4></div>
					<div class=\"modal-body\">... </div>
					<div class=\"modal-footer\"><button class=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">Fechar </button></div>
				</div>
			</div>
		</div>"

		return html.html_safe
	end

	def popup_pesquisa_credores(*args)
		options = args.extract_options!
		html = "<div aria-labelledby=\"myLargeModalLabel\" class=\"modal fade modalPessoas\" role=\"dialog\" tabindex=\"-1\">
			<div class=\"modal-dialog modal-lg\" role=\"document\">
				<div class=\"modal-content\">
					<div class=\"modal-header\"><button aria-label=\"Close\" class=\"close\" data-dismiss=\"modal\" type=\"button\"><span aria-hidden=\"true\">× </span></button>
						<h4 class=\"modal-title\" id=\"myModalLabel\">#{options[:title]}</h4></div>
					<div class=\"modal-body\">... </div>
					<div class=\"modal-footer\"><button class=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">Fechar </button></div>
				</div>
			</div>
		</div>"

		return html.html_safe
	end

	def popup_pesquisa_pessoa_por_empenho(*args)
		options = args.extract_options!
		html = "<div aria-labelledby=\"myLargeModalLabel\" class=\"modal fade modalPessoas\" role=\"dialog\" tabindex=\"-1\">
			<div class=\"modal-dialog modal-lg\" role=\"document\">
				<div class=\"modal-content\">
					<div class=\"modal-header\"><button aria-label=\"Close\" class=\"close\" data-dismiss=\"modal\" type=\"button\"><span aria-hidden=\"true\">× </span></button>
						<h4 class=\"modal-title\" id=\"myModalLabel\">#{options[:title]}</h4></div>
					<div class=\"modal-body\">... </div>
					<div class=\"modal-footer\"><button class=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">Fechar </button></div>
				</div>
			</div>
		</div>"

		return html.html_safe
	end

	def popup_pesquisa_pessoa_button(*args)
		options = args.extract_options!
		html = "
		<div class=\"input-group\">
			<input class=\"form-control\" id=\"busca_pessoa\" placeholder=\"Clique no botão para pesquisar\" readonly=\"readonly\" type=\"text\" value=\"#{options[:show_value]}\">
			<span class=\"input-group-btn\">
				<button id=\"button_pesquisa_pessoa\" class=\"btn btn-primary\" data-load-url=\"#{options[:url]}\" data-target=\".modalPessoas\" data-toggle=\"modal\" title=\"\" type=\"button\">
					<span class=\"glyphicon glyphicon-search\"></span> #{options[:title]}
				</button>
			</span>
		</div>
		<input type=\"hidden\" name=\"#{options[:module]}[#{options[:field]}]\" id=\"#{options[:module]}_#{options[:field]}\" value=\"#{options[:hidden_value]}\">"

		return html.html_safe
	end

	def popup_pesquisa_pessoa_com_id_button(*args)
		options = args.extract_options!
		html = "
		<div class=\"input-group\">
			<input class=\"form-control\" id=\"#{options[:id]}\" placeholder=\"Clique no botão para pesquisar\" readonly=\"readonly\" type=\"text\" value=\"#{options[:show_value]}\">
			<span class=\"input-group-btn\">
				<button id=\"button_pesquisa_pessoa\" class=\"btn btn-primary\" data-load-url=\"#{options[:url]}\" data-target=\".modalPessoas\" data-toggle=\"modal\" title=\"\" type=\"button\">
					<span class=\"glyphicon glyphicon-search\"></span> #{options[:title]}
				</button>
			</span>
		</div>
		<input type=\"hidden\" name=\"#{options[:module]}[#{options[:field]}]\" id=\"#{options[:module]}_#{options[:field]}\" value=\"#{options[:hidden_value]}\">"

		return html.html_safe
	end

	def popup_pesquisa_credores_button(*args)
		options = args.extract_options!
		html = "
		<div class=\"input-group\">
			<input class=\"form-control\" id=\"busca_pessoa\" placeholder=\"Clique no botão para pesquisar\" readonly=\"readonly\" type=\"text\" value=\"#{options[:show_value]}\">
			<span class=\"input-group-btn\">
				<button id=\"button_pesquisa_pessoa\" class=\"btn btn-primary\" data-load-url=\"#{options[:url]}\" data-target=\".modalPessoas\" data-toggle=\"modal\" title=\"\" type=\"button\">
					<span class=\"glyphicon glyphicon-search\"></span> #{options[:title]}
				</button>
			</span>
		</div>
		<input type=\"hidden\" name=\"#{options[:module]}[#{options[:field]}]\" id=\"#{options[:module]}_#{options[:field]}\" value=\"#{options[:hidden_value]}\">"

		return html.html_safe
	end

	def popup_pesquisa_pessoa_por_empenho_button(*args)
		options = args.extract_options!

		html = "
		<div class=\"input-group\">
			<input class=\"form-control\" id=\"busca_pessoa\" placeholder=\"Clique no botão para pesquisar\" readonly=\"readonly\" type=\"text\" value=\"#{options[:show_value]}\">
			<span class=\"input-group-btn\">
				<button id=\"button_pesquisa_pessoa\" class=\"btn btn-primary\" data-load-url=\"#{pesquisa_por_empenho_base_pessoas_path}\" data-target=\".modalPessoas\" data-toggle=\"modal\" title=\"\" type=\"button\">
					<span class=\"glyphicon glyphicon-search\"></span> #{options[:title]}
				</button>
			</span>
		</div>
		<input type=\"hidden\" name=\"#{options[:module]}[#{options[:field]}]\" id=\"#{options[:module]}_#{options[:field]}\" value=\"#{options[:hidden_value]}\">"

		return html.html_safe
	end

	def popup_pesquisa_receita_stn(*args)
		options = args.extract_options!
		html = "<div aria-labelledby=\"myLargeModalLabel\" class=\"modal fade modalReceitas\" role=\"dialog\" tabindex=\"-1\">
			<div class=\"modal-dialog modal-lg\" role=\"document\">
				<div class=\"modal-content\">
					<div class=\"modal-header\"><button aria-label=\"Close\" class=\"close\" data-dismiss=\"modal\" type=\"button\"><span aria-hidden=\"true\">× </span></button>
						<h4 class=\"modal-title\" id=\"myModalLabel\">#{options[:title]}</h4></div>
					<div class=\"modal-body\">... </div>
					<div class=\"modal-footer\"><button class=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">Fechar </button></div>
				</div>
			</div>
		</div>"

		return html.html_safe
	end

	def popup_pesquisa_receitas_stn_button(*args)
		options = args.extract_options!
		html = "
		<div class=\"input-group\">
			<input class=\"form-control\" id=\"busca_receita\" placeholder=\"Clique no botão para pesquisar\" readonly=\"readonly\" type=\"text\" value=\"#{options[:show_value]}\">
			<span class=\"input-group-btn\">
				<button id=\"button_pesquisa_pessoa\" class=\"btn btn-primary\" data-load-url=\"#{pesquisa_base_receitas_stn_path}\" data-target=\".modalReceitas\" data-toggle=\"modal\" title=\"#{options[:title]}\" type=\"button\">
					<span class=\"glyphicon glyphicon-search\"></span>
				</button>
			</span>
		</div>
		<input type=\"hidden\" name=\"#{options[:module]}[#{options[:field]}]\" id=\"#{options[:module]}_#{options[:field]}\" value=\"#{options[:hidden_value]}\">"

		return html.html_safe
	end

	def popup_pesquisa_eventos_manuais_button(*args)
		options = args.extract_options!

		html = "
		<div class=\"input-group\">
			<input class=\"form-control\" id=\"busca_evento_manual\" placeholder=\"Clique no botão para pesquisar\" readonly=\"readonly\" type=\"text\" value=\"#{options[:show_value]}\">
			<span class=\"input-group-btn\">
				<button id=\"button_pesquisa_pessoa\" class=\"btn btn-primary\" data-load-url=\"#{options[:url]}\" data-target=\".modalEventosManuais\" data-toggle=\"modal\" title=\"#{options[:title]}\" type=\"button\">
					<span class=\"glyphicon glyphicon-search\"></span>
				</button>
			</span>
		</div>
		<input type=\"hidden\" name=\"#{options[:module]}[#{options[:field]}]\" id=\"#{options[:module]}_#{options[:field]}\" value=\"#{options[:hidden_value]}\">"
		
		return html.html_safe
	end

	def popup_pesquisa_eventos_manuais(*args)
		options = args.extract_options!
		html = "<div aria-labelledby=\"myLargeModalLabel\" class=\"modal fade modalEventosManuais\" role=\"dialog\" tabindex=\"-1\">
			<div class=\"modal-dialog modal-lg\" role=\"document\">
				<div class=\"modal-content\">
					<div class=\"modal-header\"><button aria-label=\"Close\" class=\"close\" data-dismiss=\"modal\" type=\"button\"><span aria-hidden=\"true\">× </span></button>
						<h4 class=\"modal-title\" id=\"myModalLabel\">#{options[:title]}</h4></div>
					<div class=\"modal-body\">... </div>
					<div class=\"modal-footer\"><button class=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">Fechar </button></div>
				</div>
			</div>
		</div>"

		return html.html_safe
	end

	def modal_valida_senha
		html =
		"<div class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" id=\"modalValidaSenha\">
			<div class=\"modal-dialog\" role=\"document\">
				<div class=\"modal-content\">
					<div class=\"modal-header\">
						<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>
						<h4 class=\"modal-title\">Confirme sua Senha</h4>
					</div>
					<div class=\"modal-body\">
						<input type=\"password\" id=\"senha\" class=\"form-control\" placeholder=\"Senha\" required/>
						<div class=\"erro_senha\"></div>
					</div>
					<div class=\"modal-footer\">
						<button id=\"confirmar_senha\" type=\"submit\" class=\"btn btn-primary\">Confirmar Senha</button>
					</div>
				</div><!-- /.modal-content -->
			</div><!-- /.modal-dialog -->
		</div><!-- /.modal -->"
		return html.html_safe
	end

	def progressbar(*args)
		options = args.extract_options!
		if options[:crescente] == true
			if options[:porcentagem].to_i <= 50
				color = ""
			elsif options[:porcentagem].to_i <= 75
				color = "progress-bar-warning"
			else
				color = "progress-bar-danger"
			end
		else
			if options[:porcentagem].to_i >= 100
				color = ""
			elsif options[:porcentagem].to_i >= 50
				color = "progress-bar-warning"
			else
				color = "progress-bar-danger"
			end
		end
		options[:tamanho] = options[:porcentagem] > 100 ? 100 : options[:porcentagem]
		if options[:exibir_porcentagem] == true
			html = "<div class=\"progress-striped mt fw-semi-bold progress ng-isolate-scope\" data-progressbar=\"\" data-value=\"#{options[:tamanho]}\" data-type=\"info\">
				<div class=\"progress-bar #{color}\" ng-class=\"type &amp;&amp; 'progress-bar-' + type\" role=\"progressbar\" aria-valuenow=\"#{options[:tamanho]}\" aria-valuemin=\"0\" aria-valuemax=\"100\" ng-style=\"{width: (percent < 100 ? percent : 100) + '%'}\" aria-valuetext=\"#{options[:tamanho]}%\" style=\"min-width: 0px; width: #{options[:tamanho]}%;\" ng-transclude=\"\">
					<span class=\"ng-scope\">#{options[:porcentagem].to_f.try(:formato_decimal)}%</span></div>
			</div>"
		else
			html = "<div class=\"progress-xs bg-white progress ng-isolate-scope\" data-progressbar=\"\" data-sn-progress-animate=\"\" data-value=\"#{options[:porcentagem]}\">
				<div class=\"progress-bar #{color} progress-bar-striped\" ng-class=\"type &amp;&amp; 'progress-bar-' + type\" role=\"progressbar\" aria-valuenow=\"#{options[:porcentagem]}\" aria-valuemin=\"0\" aria-valuemax=\"100\" ng-style=\"{width: (percent < 100 ? percent : 100) + '%'}\" aria-valuetext=\"#{options[:porcentagem]}%\" style=\"min-width: 0px; opacity: 1; width: #{options[:porcentagem]}%;\" ng-transclude=\"\"></div>
				</div>"
		end

		return html.html_safe
	end

	def widget(*args)
		options = args.extract_options!
		html = "<section class=\"widget bg-#{options[:tipo]} text-white\">
					<div class=\"widget-body clearfix\">
						<div class=\"row\">
							<div class=\"col-xs-12\">
								<h5 class=\"no-margin\"><strong>#{options[:titulo]}</strong></h5>
								<p class=\"h2 no-margin fw-normal\" style=\"margin-top: 10px;\">#{options[:valor_orcado]}</p>
							</div>
						</div>
					</div>
				</section>"
		return html.html_safe
	end

	def widget_valor_e_percentual(*args)
		options = args.extract_options!
		html = "<section class=\"widget bg-#{options[:tipo]} text-white\">
					<div class=\"widget-body clearfix\">
						<div class=\"row\">
							<div class=\"col-xs-12\">
								<h5 class=\"no-margin\"><strong>#{options[:titulo]}</strong></h5>
								<p class=\"h2 no-margin fw-normal\" style=\"margin-top: 10px;\">#{options[:valor_orcado]}</p>
								<span class=\"no-margin fw-normal\" style=\"margin-left: 240px; margin-top: -20px;display: flex;\">#{options[:porcentagem]}</p>
							</div>
						</div>
					</div>
				</section>"
		return html.html_safe
	end

	def widget_small(*args)
		options = args.extract_options!
		color_text = options[:color_text].present? ? options[:color_text] : "text-black"
		html = "<section class=\"widget bg-#{options[:tipo]} #{color_text}\">
					<div class=\"widget-body clearfix\">
						<div class=\"row\">
							<div class=\"col-xs-12\">
								<h6 class=\"no-margin\"><strong>#{options[:titulo]}</strong></h6>
								<p class=\"h3 no-margin fw-normal\" style=\"margin-top: 10px;\">#{options[:valor]}</p>
							</div>
						</div>
					</div>
				</section>"
		return html.html_safe
	end

	def url_aplicacao
		municipio = ENV["municipio"].blank? ? "" : "/#{ENV['municipio']}"
	end

	def mensagem_de_alerta
		mensagem = ""
			alertas = []

			if current_usuario.atas_de_registro_de_precos.where(":hoje <= data_final_de_vigencia AND data_final_de_vigencia <= :em_60_dias", hoje: Date.today, em_60_dias: Date.today + 60.day).where(status: Licitacao::AtaDeRegistroDePrecos.status[:confirmado]).count > 0
				alertas << "Atas de Registro de Preço"
			end

			if current_usuario.contratos.left_joins(:aditivos).where("licitacao_aditivos.fim_da_vigencia is not null AND :hoje <= licitacao_aditivos.fim_da_vigencia AND licitacao_aditivos.fim_da_vigencia <= :em_60_dias OR (licitacao_aditivos.contrato_id is null AND :hoje <= licitacao_contratos.fim_da_vigencia AND licitacao_contratos.fim_da_vigencia <= :em_60_dias)", hoje: Date.today, em_60_dias: Date.today+60.day).where(status: Licitacao::Contrato.status[:fechado]).or(
				current_usuario.contratos.left_joins(:aditivos).where("licitacao_aditivos.fim_da_vigencia is not null and :hoje <= licitacao_aditivos.fim_da_vigencia AND licitacao_aditivos.fim_da_vigencia <= :em_60_dias OR (licitacao_aditivos.contrato_id is null AND :hoje <= licitacao_contratos.fim_da_vigencia AND licitacao_contratos.fim_da_vigencia <= :em_60_dias)", hoje: Date.today, em_60_dias: Date.today + 60.day
			).where(status: Licitacao::Contrato.status[:fechado])).count > 0
				alertas << "Contratos"
			end

			if current_usuario.processos.where(status: Licitacao::Processo.status[:homologado]).where(":a_15_dias_atras <= data_da_homologacao AND data_da_homologacao <= :hoje", hoje: Date.today, a_15_dias_atras: Date.today - 15.day).count > 0
				alertas << "Processos homologados"
			end

			if alertas.count > 0
				mensagem = " Há alertas para"
				alertas.each do |alerta|
					if alertas.count > 1 && alerta == alertas.last
						mensagem += " e"
					end
					mensagem += " #{alerta},"
				end
				mensagem = mensagem.chomp!(",")
				mensagem += ". "
			end
			mensagem
	end

	def exibir_alerta_em_formulario(*args)
		options = args.extract_options!
		html = "
			<span class=\"warning_explanation\">#{options[:mensagem]}</span>
		"
		return options[:condicao] == true ? html.html_safe : ""
	end

	def mensagem_de_aviso_controladoria
		mensagem = ""

		if current_usuario.empenhos.em_analise.count > 0
			mensagem = " Há empenhos a serem analisados. "
		end

		mensagem
	end

	def formata_enum_i18n(hash_atributos_i18n, hash_atributos_original)
		return hash_atributos_i18n.transform_keys{|key| hash_atributos_original[key]}
	end

	def implantacao?
		Configuracao.implantacao
	end
end
