using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Text;
using System.Threading.Tasks;

namespace hazi_generator
{
    internal class Program
    {
        static void eldontes(char valasz)
        {
            if (valasz == 'a')
            {
                alapSIM();
            }
            else
            {
                PUKosSIM();
            }
        }

        static void PUKosSIM()
        {
            PUK[] listaPUK = new PUK[3];
            Random r = new Random();

            for (int i = 0; i < 3; i++)
            {
                int Sorszam = r.Next(10000000, 99999999);
                PUK PUKosSIM = new PUK();
                PUKosSIM.AlapSim(Sorszam);
                listaPUK.SetValue(value: PUKosSIM, index: i);
            }

            foreach (SIM item in listaPUK)
            {
                Console.WriteLine(item.Sorszam);
                Console.WriteLine(item.Pinkod);
                Console.WriteLine();
            }

            for (int i = 0; i < listaPUK.Length; i++)
            {
                Console.WriteLine("Kérem adja meg a PIN kódot (3 lehetőség)");
                for (int j = 0; j < 3; j++)
                {
                    listaPUK[i].SimLetiltas(listaPUK[i].Sorszam, listaPUK[i].Pinkod);
                    if (listaPUK[i].Tudta)
                    {
                        break;
                    }
                }
                if (listaPUK[i].Tudta)
                {
                    Console.WriteLine("A SIM feloldva");
                }
                else
                {
                    Console.WriteLine("A SIM letiltva");
                    string puk = Convert.ToString(r.Next(1000, 9999));
                    Console.WriteLine($"A PUK-kódja: {puk}");
                    listaPUK[i].Puk(puk);
                }
            }

            Console.ReadKey();

        }

        static void alapSIM()
        {
            SIM[] listaSIM = new SIM[3];
            Random r = new Random();

            for (int i = 0; i < 3; i++)
            {
                int Sorszam = r.Next(10000000, 99999999);
                SIM alapSim = new SIM();
                alapSim.AlapSim(Sorszam);
                listaSIM.SetValue(value: alapSim, index: i);
            }

            foreach (SIM item in listaSIM)
            {
                Console.WriteLine(item.Sorszam);
                Console.WriteLine(item.Pinkod);
                Console.WriteLine();
            }

            for (int i = 0; i < listaSIM.Length; i++)
            {
                Console.WriteLine("Kérem adja meg a PIN kódot (3 lehetőség)");
                for (int j = 0; j < 3; j++)
                {
                    listaSIM[i].SimLetiltas(listaSIM[i].Sorszam, listaSIM[i].Pinkod);
                    if (listaSIM[i].Tudta)
                    {
                        break;
                    }
                }
                if (listaSIM[i].Tudta)
                {
                    Console.WriteLine("A SIM feloldva");
                }
                else
                {
                    Console.WriteLine("A SIM letiltva");
                }
            }

            Console.ReadKey();
        }

        static void Main()
        {
            Console.WriteLine("Milyen típusú SIM kártyákat szeretne létrehozni (Alap -> a / PUK-kóddal rendelkezőt -> p): ");
            char valasz = Convert.ToChar(Console.ReadLine());
            eldontes(valasz);
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace hazi_generator
{
    public class SIM
    {
        public int Sorszam;
        public string Pinkod;
        public bool Tudta;
        public void AlapSim(int Szam)
        {
            Sorszam = Szam;

            Console.WriteLine($"A {Sorszam} sorszámú SIM aktiválásához adja meg a pinkódot");
            Pinkod = Console.ReadLine();
            if (Pinkod.Length != 4)
            {
                throw new Exception("A pinkódnak pontosan 4 jegyűnek kell lennie.");
            }
            else
            {
                Console.WriteLine("SIM elmentve.");
            }
        }

        public void SimLetiltas(int sorszam, string pin)
        {
            Tudta = false;
            Console.WriteLine($"Adja meg a {sorszam} sorszámú SIM pink kódját: ");
            string beirtPin = Console.ReadLine();
            if (beirtPin != pin)
            {
                Console.WriteLine("Helytelen PIN kód");
            }
            else
            {
                Tudta = true;
                Console.WriteLine("SIM feloldva");
            }
        }
    }

    public class PUK : SIM
    {
        public void Puk(string puk)
        {
            if (!Tudta)
            {
                Console.WriteLine("Adja meg a PUK kódot:");
                string beirtpuk = Console.ReadLine();
                if (beirtpuk == puk)
                {
                    Tudta = true;
                    Console.WriteLine("A SIM feloldva, ismét próbálkozhat a PIN kóddal");
                    SimLetiltas(Sorszam,Pinkod);
                }
                else 
                {
                    Console.WriteLine("A SIM kártyát megsemmisítettük");
                }
            }
        }
    }
}

