package no.valg.valgnatt.backend.rapport;

import no.valg.valgnatt.database.domene.ValgType;
import no.valg.valgnatt.database.geografi.Område;

import java.text.SimpleDateFormat;
import java.util.Date;

class FellesRapportelementer {
    static final String DUMMY_TMS = "2017-01-01T00:00:00";
    
    private static final String YYYY_MM_DD_T_HH_MM_SS = "yyyy-MM-dd'T'HH:mm:ss";
    
    private static final String ID = "id";
    private static final String VALGAAR = "valgaar";
    private static final String VALGTYPE = "valgtype";
    private static final String NIVAA = "nivaa";
    private static final String NAVN = "navn";
    private static final String NR = "nr";
    private static final String TIDSPUNKT = "tidspunkt";
    private static final String RAPPORT_GENERERT = "rapportGenerert";
    private static final String SISTE_STEMMER = "sisteStemmer";

    private FellesRapportelementer() {
    }

    static void leggTilId(int valgÅr, ValgType vt, String nivå, String navn, String nr, JsonObjectWrapper rapp) {
        JsonObjectWrapper id = rapp.leggTilObjekt(ID);
        id.leggTilString(VALGAAR, Integer.toString(valgÅr));
        id.leggTilString(VALGTYPE, "" + vt);
        id.leggTilString(NIVAA, nivå);
        id.leggTilString(NAVN, navn);
        id.leggTilString(NR, nr);
    }

    static void leggTilTidspunkt(Område område, JsonObjectWrapper rapp, boolean dummy) {
        JsonObjectWrapper tidspunkt = rapp.leggTilObjekt(TIDSPUNKT);
        tidspunkt.leggTilString(RAPPORT_GENERERT, dummy ? DUMMY_TMS : new SimpleDateFormat(YYYY_MM_DD_T_HH_MM_SS).format(new Date()));
        Date sistEndretTms = område.beregnSistEndretTms();
        if (sistEndretTms == null) {
            tidspunkt.leggTilString(SISTE_STEMMER, null);
        } else {
            tidspunkt.leggTilString(SISTE_STEMMER, new SimpleDateFormat(YYYY_MM_DD_T_HH_MM_SS).format(sistEndretTms));
        }
    }
}
