using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bejelentes
{
    public class Bejelentes
    {
        public DateTime idopont;
        public string prioritas;
        public string stausz;

        public Bejelentes(DateTime Idopont, string Prioritas, string Statusz) { 
            idopont = Idopont;
            prioritas = Prioritas;
            stausz = Statusz;
        }
    }

    public static class Data
    {
        public static List<Bejelentes> Bejelentesek = new List<Bejelentes>();
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            string path = "bejelentes.csv";
            DataRead(path);
            AFeladat();
            BFeladat();
            CFeladat();
            Console.ReadLine();
        }

        public static void BFeladat()
        {
            int megoldott = (from elem in  Data.Bejelentesek
                            where elem.stausz == "Megoldott"
                            select elem).Count();

            int fuggoben = (from elem in Data.Bejelentesek
                             where elem.stausz == "Függőben"
                             select elem).Count();

            Console.WriteLine($"Megoldottak száma: {megoldott}");
            Console.WriteLine($"Függőben lévők száma: {fuggoben}");

        }



        public static void CFeladat()
        {
            Bejelentes legregebbi_fuggo = Data.Bejelentesek.OrderBy(x => x.idopont).Where(x => x.stausz == "Függőben").Take(1).ToList()[0];
            Console.WriteLine($"A legrégebbi függőben lévő jegy: {legregebbi_fuggo.idopont},{legregebbi_fuggo.prioritas},{legregebbi_fuggo.stausz}");

            Bejelentes leghamarabb_megoldott = Data.Bejelentesek.OrderBy(x => x.idopont).Where(x => x.stausz == "Megoldott").Take(1).ToList()[0];
            Console.WriteLine($"A leghamarabb megoldott probléma: {leghamarabb_megoldott.idopont},{leghamarabb_megoldott.prioritas}, {leghamarabb_megoldott.stausz}");
        }

        public static void AFeladat()
        {
            int magas = Data.Bejelentesek.Where(x=>x.prioritas == "Magas").Count();
            int kozepes = Data.Bejelentesek.Where(x => x.prioritas == "Közepes").Count();
            int alacsony = Data.Bejelentesek.Where(x => x.prioritas == "Alacsony").Count();

            Console.WriteLine($"Az alacsony prioritásúak száma: {alacsony}");
            Console.WriteLine($"A közepes prioritásúak száma: {kozepes}");
            Console.WriteLine($"A magas prioritásúak száma: {magas}");

        } 

        public static void DataRead(string path)
        {
            using (StreamReader streamReader = new StreamReader(path))
            {
                string line = streamReader.ReadLine();
                line = streamReader.ReadLine();

                while (line != null)
                {
                    string[] strings = line.Split(';');
                    DateTime idopont = Convert.ToDateTime(strings[0]);
                    Bejelentes bejelentes = new Bejelentes(idopont, strings[1], strings[2]);
                    Data.Bejelentesek.Add(bejelentes);
                    line = streamReader.ReadLine();
                }

                streamReader.Close();
            }
        }
    }
}
