package no.valg.valgnatt.database.forberedvalg.geografi;

import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;

/**
 * Created by msi on 14-Mar-16.
 */
public class Krets {
    // Nøkler
    private Valg valg;
    private String kommnr;
    private String kretsnr;

    // Data
    private int sb;
    private Map<String, Parti> partier = new TreeMap<>();
    private int fhs;
    private int vts;
    private String valgdistriktnr;

    public Krets(Valg valg, String kommnr, String kretsnr, int sb) {
        this.valg = valg;
        this.kommnr = kommnr;
        this.kretsnr = kretsnr;
        this.sb = sb;
    }

    public Valg getValg() {
        return valg;
    }

    public String getKommnr() {
        return kommnr;
    }

    public String getKretsnr() {
        return kretsnr;
    }

    public void leggTilParti(Parti parti) {
        partier.put(parti.getPartikode(), parti);
        fhs += parti.getFhs();
        vts += parti.getVts();
    }

    public void leggTilSb(int sb) {
        this.sb += sb;
    }


    public void setValgdistriktnr(String valgdistriktnr) {
        this.valgdistriktnr = valgdistriktnr;
    }

    public String getValgdistriktnr() {
        return this.valgdistriktnr;
    }

    public int getSb() {
        return sb;
    }

    public Parti getParti(String partikode) {
        return partier.get(partikode);
    }

    public Collection<Parti> getPartier() {
        return partier.values();
    }

    public String toString() {
        return valg.getValgType() + "-" + valg.getValgår() + "-" + kommnr + "-" + kretsnr + ": " + sb + " stemmeberettigede, " + fhs + " + " + vts + " = " + (fhs + vts) + " stemmer, " + partier.size() + " partier, valgdistrikt: " + valgdistriktnr;
    }

    public void leggTilPartiSomIkkeStiller(String partikode) {
        leggTilParti(new Parti(this, partikode, null, null, null, null, false));
    }

}
