package xmlprovider

import (
	"encoding/xml"
	"fmt"
	"strconv"
)

type Issue struct {
	XMLName     xml.Name     `xml:"stueck"`
	Number      Nummer       `xml:"nummer"`
	Datum       KGPZDate     `xml:"datum"`
	Von         int          `xml:"von"`
	Bis         int          `xml:"bis"`
	Additionals []Additional `xml:"beilage"`
	Identifier
	AnnotationNote
}

type Nummer struct {
	No        int    `xml:",chardata"`
	Corrected string `xml:"korrigiert,attr"`
}

type Additional struct {
	XMLName xml.Name `xml:"beilage"`
	Nummer  string   `xml:"nummer,attr"`
	Von     string   `xml:"von"`
	Bis     string   `xml:"bis"`
}

func (i Issue) GetIDs() []string {
	res := make([]string, 2)
	date := i.Datum.When
	if date != "" {
		res = append(res, date)
	}

	if len(date) > 4 {
		res = append(res, i.Datum.When[0:4]+"-"+strconv.Itoa(i.Number.No))
	}

	return res
}

func (i Issue) String() string {
	return fmt.Sprintf("Number: %v, Datum: %v, Von: %d, Bis: %d, Additionals: %v, Identifier: %v, AnnotationNote: %v\n", i.Number, i.Datum, i.Von, i.Bis, i.Additionals, i.Identifier, i.AnnotationNote)
}
