using System.Diagnostics;
using System.IO;

namespace WpfClasseFile
{
    class GestoreStudenti
    {
        private List<Studente> studenti;

        public GestoreStudenti()
        {
            studenti = new List<Studente>();
        }

        public List<string> Indirizzi()
        {
            return studenti.Select(x => x.Indirizzo).Distinct().ToList();
        }

        public List<string> Classi(string indirizzo)
        {
            return studenti
                .FindAll(x => x.Indirizzo.Equals(indirizzo))
                .Select(x => $"{x.Anno}{x.Sezione}")
                .Distinct().ToList();
        }

        public List<string> Studenti(string classe)
        {
            if (classe == String.Empty)
                return new List<string>();

            return studenti
                .FindAll(x => x.Anno.Equals(int.Parse(classe[0].ToString())) && x.Sezione.Equals(classe[1]))
                .Select(x => $"{x.Nome} {x.Cognome}")
                .ToList();
        }

        public Studente? Studente(string nome, string indirizzo, string classe)
        {
            string[] n = nome.Split(' ');
            return studenti.Find(x => 
                x.Nome == n[0] && 
                x.Cognome == n[1] && 
                x.Indirizzo == indirizzo && 
                x.Anno == int.Parse(classe[0].ToString()) && 
                x.Sezione.Equals(classe[1])
            );
        }

        public void CaricaStudentiDaFile(string dir)
        {
            StreamReader sr = new StreamReader(dir);

            while (!sr.EndOfStream)
            {
                string? s = sr.ReadLine();
                if (s == null)
                    continue;

                string[] parti = s.Split(";");
                try
                {
                    studenti.Add(new Studente(int.Parse(parti[0]), parti[1][0], parti[2], parti[3], parti[4], parti[5], parti[6]));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            sr.Close();
        }
    }
}
