# frozen_string_literal: true

# App Helper
module ApplicationHelper
  def seconds_to_timestamp(sec)
    "#{(sec.to_i / 3600).to_s.rjust(2,
                                    '0')}:#{((sec.to_i % 3600) / 60).to_s.rjust(2,
                                                                                '0')}:#{(sec.to_i % 60).to_s.rjust(2,
                                                                                                                   '0')}"
  rescue StandardError
    ""
  end

  def markdown_renderer
    require "redcarpet"

    @markdown_renderer ||= Redcarpet::Markdown.new(
      BootstrapMarkdownRenderer.new(hard_wrap: true, link_attributes: { target: "_blank", rel: "noopener" }),
      autolink: true,
      tables: true,
      fenced_code_blocks: true,
      strikethrough: true,
      superscript: true
    )
  end

  def markdown_render(str)
    return "" if str.blank?

    begin
      markdown_renderer.render(str).html_safe
    rescue StandardError => e
      Rails.logger.error("Markdown rendering failed: #{e.message}")
      ""
    end
  end

  def markdown_render_br(str)
    require "redcarpet"

    markdown = Redcarpet::Markdown.new(RenderWithoutWrap, autolink: true)
    begin
      markdown.render(str.gsub("\n", "<br/>")).html_safe
    rescue StandardError
      ""
    end
  end

  def pretty_date(date)
    date&.strftime("%d/%m/%Y") || ""
  end

  def bootstrap_class_for(flash_type)
    case flash_type
    when "success"
      "success"
    when "error"
      "danger"
    when "alert"
      "warning"
    when "notice"
      "info"
    else
      flash_type.to_s
    end
  end

  def icon_for_flash_type(flash_type)
    case flash_type
    when "success"
      "bi bi-check-circle-fill"
    when "error"
      "bi bi-exclamation-triangle-fill"
    when "alert"
      "bi bi-exclamation-circle-fill"
    when "notice"
      "bi bi-info-circle-fill"
    else
      "bi bi-bell-fill"
    end
  end
end
