module Helpers
  def noten_set(gruppe, fachklasse, notenquelle=nil)
    faecher = gruppe.map do |f|
      fach = Hash.new
      gliederung = f.fach.gliederungen.find{|f|f.fachklasse == fachklasse}
      fach[:gliederung] = f.fach.gliederungen.find{|f|f.fachklasse == fachklasse}
      fach[:fachgruppe] = f.fachgruppe_ID
      fach[:sortierung] = (gliederung && gliederung.sortierung) || f.fach.sortierung_s2
      fach[:zeugnisbez] = (gliederung && gliederung.zeugnis_bez) || f.fach.zeugnisbez
      fach[:gewichtung] = (gliederung && gliederung.gewichtung_ab) || f.fach.gewichtung_fhr
      fach[:bezeichnung]= f.fach.bezeichnung
      fach[:lernentw]   = f.Lernentw if (f.Lernentw && f.fach.ist_sprache == "-")
      if f.fach.ist_sprache == "+"
        fach[:sprachniveau] = f.Lernentw || settings.repo.fachklasse_info(Abschnitt[f.abschnitt_id], "Fremdsprache", f.fach_id)
        fach[:sprachniveau] += "<sup>1</sup>" unless fach[:sprachniveau].nil?
      else
        fach[:sprachniveau] = ""
      end
      if notenquelle.nil?
        fach[:note] = f.note || "––––––"
      else
        s = Abschnitt[f.abschnitt_id].schueler
        fach[:note] = s.bk_abschluss_leistungen_dataset.where(:Fach_ID => fach.fach_id).first.note(notenquelle) || "––––––" rescue (Warnung.add(s.name, "Einige Fächer sind ohne eingetragene Note in der BK-Abschlussberechnung.");"FEHLER")
      end
      fach[:noten_krz] = f.noten_krz
      fach
    end

    faecher.sort_by!{|f| f[:sortierung]}
    h=Hash.new
    faecher.group_by{|f| f[:bezeichnung]}.each_pair do |k,v|
      if v.first[:zeugnisbez] != v.first[:bezeichnung]
        h[v.first[:bezeichnung]] = v
      else
        h[v.first[:sortierung]] = v
      end
    end
    return h
  end
end