Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }