static void Main(string[] args) { //int tyontekijatLKM = 20; //var tyontekijat = Tyontekija.GeneroiData(tyontekijatLKM); //Console.WriteLine($"Luodaan {tyontekijatLKM} työntekijää..."); //foreach (var tyontekija in tyontekijat) { // Console.WriteLine("{0}, ikä {1}", tyontekija.ToString(), tyontekija.Ika); //} //int osastoLKM = 5; //Console.WriteLine($"\r\nLuodaan {osastoLKM} osastoa..."); //var osastot = Osasto.GeneroiData(osastoLKM); //foreach (var osasto in osastot) { // Console.WriteLine(osasto.ToString()); //} var osastot = Osasto.GeneroiData(4).ToArray(); var tyontekijat = Tyontekija.GeneroiData(80).ToArray(); osastot[0].Palkkaaminen += PalkkausKasittelija; osastot[0].Erottaminen += ErottamisKasittelija; osastot[1].Palkkaaminen += PalkkausKasittelija; osastot[2].Erottaminen += ErottamisKasittelija; // Palkataan 20 työntekijää joka osastoon int index = 0; for (int i = 0; i < osastot.Length; i++) { for (int j = 0; j < tyontekijat.Length / osastot.Length; j++) { osastot[i].Palkkaa(tyontekijat[index++], 0); } } // Erotetaan sukunimi "nen" loppuiset for (int i = 0; i < osastot.Length; i++) { var t = osastot[i].Tyontekijat; var erotettavat = t.FindAll(x => x.SukuNimi.EndsWith("nen")); foreach (var erotettava in erotettavat) { osastot[i].Erota(erotettava); } } // Tulostetaan osastojen tiedot for (int i = 0; i < osastot.Length; i++) { Console.WriteLine(osastot[i].ToString()); for (int j = 0; j < osastot[i].Tyontekijat.Count; j++) { Console.WriteLine(osastot[i].Tyontekijat[j].ToString()); } Console.WriteLine(); } Console.ReadKey(); }
static void Main(string[] args) { var osastot = Osasto.GeneroiData(20).ToArray(); var tyontekijat = Tyontekija.GeneroiData(1000).ToArray(); // Palkataan tyontekijät satunnaisiin osastoihin var random = new Random(); var palkkarand = new Random(); for (int i = 0; i < tyontekijat.Length; i++) { osastot[random.Next(0, osastot.Length)].Palkkaa(tyontekijat[i], palkkarand.Next(1000, 8000)); } //// Tulostetaan osastojen tiedot //for (int i = 0; i < osastot.Length; i++) { // Console.WriteLine(osastot[i].ToString()); //} int valintamaara = 6; int valinta; while (true) { Console.WriteLine("Vaihtoehdot"); Console.WriteLine($"1. 50-vuotiaat työntekijät"); Console.WriteLine($"2. Osastot yli 50 henkilöä"); Console.WriteLine($"3. Sukunimen työntekijät"); Console.WriteLine($"4. Osastojen isoimmat palkat"); Console.WriteLine($"5. 5 Yleisintä sukunimeä"); Console.WriteLine($"6. Osastojen ikäjakaumat"); Console.WriteLine($"7. Lopeta"); Console.Write("Valitse: "); var userInput = Console.ReadLine(); if (int.TryParse(userInput, out valinta)) { if (valinta >= 0 && valinta <= valintamaara) { switch (valinta) { case 1: { var tyontekijat50 = tyontekijat.Where(x => x.Ika.Equals(50)).ToList(); TulostaTulos(tyontekijat50); break; } case 2: { var osastotyli50hlo = osastot.Where(x => x.HenkiloLkm >= 50) .OrderByDescending(x => x.HenkiloLkm).ToList(); TulostaTulos(osastotyli50hlo); break; } case 3: { Console.Write("Anna sukunimi: "); var userInput2 = Console.ReadLine(); var tyontekijatsnimi = tyontekijat.Where( x => x.SukuNimi.Equals(userInput2, StringComparison.CurrentCultureIgnoreCase)) .Select(x => new { Nro = x.Id, Nimi = $"{x.SukuNimi} {x.EtuNimi}" }).ToList(); if (tyontekijatsnimi.Count > 0) { TulostaTulos(tyontekijatsnimi); } else { Console.WriteLine($"Ei yhtään tyontekijää sukunimellä: {userInput2}"); } break; } case 4: { var osastotyontekijat = osastot.SelectMany(o => o.Tyontekijat, (o, t) => new { OsastoNimi = o.Nimi, Palkka = t.Palkka }); var ryhmitetty = osastotyontekijat.GroupBy(t => t.OsastoNimi); var korkeapalkkaiset = ryhmitetty.Select(y => new { OsastoNimi = y.Key, Maksimipalkka = y.Max(x => x.Palkka) }).ToList(); TulostaTulos(korkeapalkkaiset); break; } case 5: { var tyontekijatSNimiGroups = tyontekijat.GroupBy(x => x.SukuNimi) .Select(x => new { SukuNimi = x.Key, Lkm = x.Count() }).OrderByDescending(x => x.Lkm); var tyontekijatSNimi5suos = tyontekijatSNimiGroups.Take(5).ToList(); TulostaTulos(tyontekijatSNimi5suos); break; } case 6: { var results = osastot.Select(x => new { Nimi = x.Nimi, Alle30v = x.Tyontekijat.Count(y => y.Ika < 30), Välillä30_50v = x.Tyontekijat.Count(z => z.Ika >= 30 && z.Ika <= 50), Yli50v = x.Tyontekijat.Count(y => y.Ika > 50) }).ToList(); TulostaTulos(results); break; } default: break; } } else if (valinta == valintamaara + 1) { return; } } else { Console.WriteLine("Väärä valinta. Paina Enter."); Console.WriteLine(); } } ; Console.ReadKey(); }