using System;

// DoJo-Klassenaufgabe:

// Programmieren Sie eine Klasse Personalausweis mit folgenden Eigenschaften
// string name
// int id
// - Konstruktor: Erhält den Namen und vergibt eine neue, eindeutige Id (beginnend mit 1000)
// - Property zum Setzen und Lesen der nächsten Id. Beim Setzen muss die Id größer sein als die bisherige Nummer!
//      Dieses Property muss vor dem Anlegen der ersten Person aufrufbar sein!
// - Property: Zum Lesen des Namens (kann auch als Auto-Property realisiert werden)
// - Überladene ToString-Methode: Soll den Namen und die Id ausgeben
#region Bürgeramt
// Programmieren Sie zusätzlich eine Klasse Bürgeramt mit folgenden Eigenschaften
// string ort
// - Konstruktor, dem der Ortsname und die Anzahl der zu speichernden Personalausweise übergeben werden
// - Methode NeuerAusweis: Erhält den Namen, legt einen neuen Pass an, speichert diesen im Feld an der 
//      nächsten freien Stelle und liefert den Personalausweis zurück
// - Optional: Methode AllePersos(string teilname): liefert ein Feld passender Größe mit allen 
//      Personalausweisen zurück, die den "teilnamen" enthalten (Tipp: String-Methode contains)

// Main: Legen Sie zwei Bürgerämter an (Nürnberg/Fürth) und lassen Sie für Nürnberg mehrere Pässe erzeugen
//      Optional: Rufen Sie AllePersos mit einem passenden Teilnamen auf und geben Sie diese aus!
#endregion

namespace _01Buergeramt
{
    class Personalausweis 
    {
        public string name { get; private set; }
        int id;
        static int naechsteId=1000;

        public Personalausweis(string name)
        {
            this.name = name;
            id = naechsteId++;
        }
        public static int NaechsteId {
            get => naechsteId;
                set
            {
                if (value >= naechsteId)
                    naechsteId = value;
                else
                    throw new ArgumentOutOfRangeException("Wert muss größer als ... sein");
            }
        }
        public override string ToString() => $"Name: {name}  Id: {id}";
    }
    class Buergeramt
    {
        string ort;
        int anzPersonalausweise;
        Personalausweis[] ausweise;
        int aktAnz = 0;
        public Buergeramt(string ort, int anzahlPersonalausweise)
        {
            this.ort = ort;
            anzPersonalausweise = anzahlPersonalausweise;
            ausweise = new Personalausweis[anzPersonalausweise];
        }
        public Personalausweis NeuerAusweis(string name)
        {
            Personalausweis p = new Personalausweis(name);
            ausweise[aktAnz++] = p;
            return p;
        }
        public Personalausweis NeuerAusweis(Personalausweis alterPerso)
        {
            ausweise[aktAnz++] = alterPerso;
            return alterPerso;
        }
        

    }
    class Program
    {
        static void Main(string[] args)
        {
            Personalausweis p1 = new Personalausweis("Anton");
            Console.WriteLine(p1);
        }
    }
}