using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CLPersone;

namespace AppConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Persone persone = new Persone();

            //Inserisco i dati della prima persona

            Console.Write("Inserire il codice fiscale: ");
            string codiceFiscale = Console.ReadLine();

            Console.Write("Inserire il nome: ");
            string nome = Console.ReadLine();

            Console.Write("Inserire il cognome: ");
            string cognome = Console.ReadLine();

            Console.Write("Inserire il recapito telefonico: ");
            string recapitoTelefonico = Console.ReadLine();

            Console.Write("Inserire il ruolo: ");
            Ruolo ruolo = (Ruolo) Enum.Parse(typeof(Ruolo), Console.ReadLine());

            Persona p = new Persona(codiceFiscale, nome, codiceFiscale, recapitoTelefonico, ruolo);


            try
            {
                persone.Add(p);
                Console.WriteLine("Inserimento effettuato");
            }
            catch (Exception)
            {
                Console.WriteLine("Elemento già presente");
            }




            //Inserisco i dati della seconda persona

            Console.Write("Inserire il codice fiscale: ");
            codiceFiscale = Console.ReadLine();

            Console.Write("Inserire il nome: ");
            nome = Console.ReadLine();

            Console.Write("Inserire il cognome: ");
            cognome = Console.ReadLine();

            Console.Write("Inserire il recapito telefonico: ");
            recapitoTelefonico = Console.ReadLine();

            Console.Write("Inserire il ruolo: ");
            ruolo = (Ruolo)Enum.Parse(typeof(Ruolo), Console.ReadLine());

            p = new Persona(codiceFiscale, nome, codiceFiscale, recapitoTelefonico, ruolo);


            try
            {
                persone.Add(p);
                Console.WriteLine("Inserimento effettuato");
            }
            catch (Exception)
            {
                Console.WriteLine("Elemento già presente");
            }


            persone.Add(new Persona("lucbos", "Luca", "Boschi", "012345", (Ruolo)1));
            persone.Add(new Persona("robgat", "Roberto", "Gatti", "9756789", (Ruolo)1));
            persone.Add(new Persona("maurtod", "Maurizio", "Todini", "07512348", (Ruolo)2));

            Console.WriteLine("\n\n"+persone.ToString()+"\n");

            string codiceFiscaleDiProva = "12345";

            int indiceElemento = persone.IndiceElemento(codiceFiscaleDiProva);

            if (indiceElemento>=0)
            {
                Console.WriteLine("L'indice della persona con codice fiscale "+codiceFiscaleDiProva+" vale: " + indiceElemento);
            }
            else
            {
                Console.WriteLine("La persona con codice fiscale " + codiceFiscaleDiProva + " non esiste");
            }

            Console.WriteLine("\n\nProvo a rimuovere la persona con codice fiscale " + codiceFiscaleDiProva+"\n");


            if (persone.Rimuovi(codiceFiscaleDiProva))
            {
                Console.WriteLine("Rimossa dall'elenco la persona con codice fiscale " + codiceFiscaleDiProva);
            }
            else
            {
                Console.WriteLine("La persona con codice fiscale " + codiceFiscaleDiProva + " non esiste");
            }


            Console.WriteLine("\n\nNuova stampa dopo rimozione\n" + persone.ToString() + "\n");


            Console.WriteLine("\n\nOrdino la lista per codice fiscale\n");
            persone.OrdinaPerCodiceFiscale();

            Console.WriteLine("\n\nNuova stampa dopo ordinamento per codice fiscale\n" + persone.ToString() + "\n");



            Console.WriteLine("\n\nOrdino la lista per cognome\n");

            persone.Ordinamento(CriterioOrdinamento.Cognome);

            Console.WriteLine("\n\nNuova stampa dopo ordinamento per cognome\n" + persone.ToString() + "\n");




            Console.WriteLine("\n\nOrdino la lista per ruolo\n");

            persone.Ordinamento(CriterioOrdinamento.Ruolo);

            Console.WriteLine("\n\nNuova stampa dopo ordinamento per ruolo\n" + persone.ToString() + "\n");

            Console.ReadLine();
        }
    }
}
