class RailsCodeAuditor::Grapher

def self.bar_color(score)

def self.bar_color(score)
  case score
  when 0..49   then '#e74c3c' # red
  when 50..74  then '#f1c40f' # yellow
  when 75..89  then '#3498db' # blue
  else              '#2ecc71' # green
  end
end

def self.generate(results)

def self.generate(results)
  results = results.with_indifferent_access
  Dir.mkdir(REPORT_PATH) unless Dir.exist?(REPORT_PATH)
  graphs = []
  summary = {
    "Security" => results[:security],
    "Code Quality" => results[:code_quality],
    "Dependencies" => results[:dependencies],
    "Test Coverage" => results[:test_coverage],
    "Overall" => results[:overall]
  }.compact
  graphs << graph_bar("Audit Scores", summary)
  summary.each do |label, data|
    graphs << graph_pie(label, data[:score])
  end
  graphs
end

def self.graph_bar(title, metrics)

def self.graph_bar(title, metrics)
  g = Gruff::Bar.new
  g.title = title
  labels = {}
  metrics.each_with_index do |(label, data), index|
    score = data[:score] || 0
    labels[index] = label
    g.data(label, [score], bar_color(score))
  end
  g.labels = labels
  file_name = "#{title.downcase.gsub(" ", "_")}.png"
  path = File.join(REPORT_PATH, file_name)
  g.write(path)
  puts "Generated graph at #{path}"
  { title: title, path: path }
end

def self.graph_pie(title, score)

def self.graph_pie(title, score)
  score = score || 0
  remaining = 100 - score
  g = Gruff::Pie.new
  g.title = title
  g.data("Score", score, bar_color(score))
  g.data("Remaining", remaining, "#dddddd")
  file_name = "#{title.downcase.gsub(" ", "_")}_pie.png"
  path = File.join(REPORT_PATH, file_name)
  g.write(path)
  puts "Generated pie chart: #{path}"
  { title: title, path: path }
end