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

namespace ConsoleApp1
{
    public class NapiMunka
    {
        public static int KeszultDb { get; private set; }
        public int Nap { get; private set; }
        public int HarangKesz { get; private set; }
        public int HarangEladott { get; private set; }
        public int AngyalkaKesz { get; private set; }
        public int AngyalkaEladott { get; private set; }
        public int FenyofaKesz { get; private set; }
        public int FenyofaEladott { get; private set; }

        public NapiMunka(string sor)
        {
            string[] s = sor.Split(';');
            Nap = Convert.ToInt32(s[0]);
            HarangKesz = Convert.ToInt32(s[1]);
            HarangEladott = Convert.ToInt32(s[2]);
            AngyalkaKesz = Convert.ToInt32(s[3]);
            AngyalkaEladott = Convert.ToInt32(s[4]);
            FenyofaKesz = Convert.ToInt32(s[5]);
            FenyofaEladott = Convert.ToInt32(s[6]);

            NapiMunka.KeszultDb += HarangKesz + AngyalkaKesz + FenyofaKesz;
        }

        public int NapiBevetel()
        {
            return -(HarangEladott * 1000 + AngyalkaEladott * 1350 + FenyofaEladott * 1500);
        }
    }

    public static class Data
    {
        public static List<NapiMunka> adatok = new List<NapiMunka>();
    }
    
    class Program
    {
        public static void AdatFeltolt()
        {
            FileStream fileStream = new FileStream("..\\diszek.txt", FileMode.Open, FileAccess.Read);
            StreamReader streamReader = new StreamReader(fileStream);

            string sor = streamReader.ReadLine();
            while (sor != null)
            {
                NapiMunka melo = new NapiMunka(sor);                
                Data.adatok.Add(melo);
                sor = streamReader.ReadLine();
            }

            streamReader.Close();
            fileStream.Close();
        }

        public static void Feladat4()
        {
            Console.WriteLine($"4.feladat: Összesen {NapiMunka.KeszultDb} darab dísz készült");
        }

        public static bool NemKeszultDisz()
        {
            foreach (var item in Data.adatok)
            {
                if (item.AngyalkaKesz == 0 && item.FenyofaKesz == 0 && item.HarangKesz == 0)
                {
                    return true;
                }
            }

            return false;
        }
        public static void Feladat5()
        {
            if (NemKeszultDisz())
            {
                Console.WriteLine($"5.feladat: Volt olyan nap amikor egyetlen dísz sem készült.");
            }
            else
            {
                Console.WriteLine($"5.feladat: Nem volt olyan nap amikor egyetlen dísz sem készült.");
            }

        }

        public static int Beker()
        {
            Console.Write("Adja meg a keresett napot [1 ... 40]: ");
            string str = Console.ReadLine();
            return int.Parse(str);
        }

        public static int ValidBeker()
        {
            while (true)
            {
                int num = Beker();
                if (num < 41 && num > 0)
                {
                    return num;
                }
            }
        }
        public static void Feladat6()
        {
            Console.WriteLine("6.feladat:");
            int num = ValidBeker();
            int harang = 0;
            int angyal = 0;
            int fenyo = 0;
            
            for (int i = 0; i < num; i++)
            {
                angyal += Data.adatok[i].AngyalkaKesz + Data.adatok[i].AngyalkaEladott;
                harang += Data.adatok[i].HarangEladott + Data.adatok[i].HarangKesz;
                fenyo += Data.adatok[i].FenyofaKesz + Data.adatok[i].FenyofaEladott;
            }

            Console.WriteLine($"\tA(z) {num}. nap végén {harang} harang, {angyal} angyalka és {fenyo} fenyőfa maradt készleten.");
        }

        public static int AngyalEladottdb()
        {
            int cntr = 0;
            foreach (var item in Data.adatok)
            {
                cntr += item.AngyalkaEladott;
            }
            return cntr;
        }

        public static int HaranglEladottdb()
        {
            int cntr = 0;
            foreach (var item in Data.adatok)
            {
                cntr += item.HarangEladott;
            }
            return cntr;
        }

        public static int FenyoEladottdb()
        {
            int cntr = 0;
            foreach (var item in Data.adatok)
            {
                cntr += item.FenyofaEladott;
            }
            return cntr;
        }
        public static void Feladat7()
        {
            int harang = HaranglEladottdb();
            int fenyo = FenyoEladottdb();
            int angyal = AngyalEladottdb();
            int[] eladottak = { harang, fenyo, angyal };
            Console.WriteLine($"7.feladat: Legtöbbet eladott dísz: {Math.Abs(eladottak.Min())} darab");
            List<int> indexek = new List<int>();
            for (int i = 0; i < eladottak.Length; i++)
            {
                if (eladottak[i] == eladottak.Min())
                {
                    indexek.Add(i);
                }
            }
            string[] megnevezesek = { "Harang", "Fenyőfa", "Angyalka" };
            foreach (var item in indexek)
            {
                Console.WriteLine($"\t{ megnevezesek[item]}");
            }
        }

        public static void Feladat8()
        {
            FileStream fileStream = new FileStream("bevetel.txt", FileMode.Create, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fileStream);
            int cntr = 0;
            foreach (var item in Data.adatok)
            {
                if (item.NapiBevetel() >= 10000)
                {
                    cntr++;
                    streamWriter.WriteLine($"{item.Nap};{item.NapiBevetel()}");
                }
            }

            streamWriter.WriteLine($"{cntr} napon volt legalább 10000 Ft a bevétel.");
            streamWriter.Close();
            fileStream.Close();
        }

        static void Main(string[] args)
        {
            AdatFeltolt();
            Feladat4();
            Feladat5();
            Feladat6();
            Feladat7();
            Feladat8();
        }
    }
}
