private static void Beosztas(LancoltLista <IKuldemeny> kuldemenyek, IOrderedEnumerable <Futar> rendezdettFutarok) { int x = 0, y = 0, btm = 0, nap = 0; while (kuldemenyek.Any(k => !k.Beosztva)) { Ujnap(rendezdettFutarok); SzalbiztosKonzol.KiirasXY(x, y, $"{Today.Date.AddDays(nap + daysToAdd):M}:"); nap++; foreach (Futar futar in rendezdettFutarok) { FutarnakBeoszt(futar, kuldemenyek); var worksStr = futar.Dolgozik ? "+" : "-"; SzalbiztosKonzol.KiirasXY(x, y += 2, $"Futar {futar.Id}. ({futar.Kapacitas}): {worksStr}"); y += 2; foreach (IKuldemeny kuldemeny in futar.Kuldemenyek) { SzalbiztosKonzol.KiirasXY(x, y += 1, $"- {kuldemeny.Prioritas}, {kuldemeny.Tomeg}"); if (nap == 1) { Kiszallitandok.Add(kuldemeny); } } x += 20; btm = y > btm ? y : btm; y = 0; } x = 0; y = btm + 2; } }
static void Main(string[] args) { List <Futar> futarok = FileReader.ReadCarriers(); LancoltLista <IKuldemeny> kuldemenyek = FileReader.ReadPackages(); var rendezdettFutarok = futarok .Where(f => f.Dolgozik) .OrderBy(f => f.Kapacitas); KiszallitvaEvent += Kiszallitas; if (!rendezdettFutarok.Any()) { throw new NincsDolgozoFutarException(); } do { Csomagfelvetel(kuldemenyek); Beosztas(kuldemenyek, rendezdettFutarok); Console.WriteLine("\n\n"); Console.WriteLine("Az enter lenyomásával kiszállításra kerülnek a napi küldemények."); ConsoleKeyInfo inp; do { inp = Console.ReadKey(); } while (inp.Key != ConsoleKey.Enter); Console.WriteLine("Kiszállítás: "); Kiszallitas(rendezdettFutarok, kuldemenyek); Console.WriteLine("Kész!"); do { Console.WriteLine("\nEnter lenyomásával a következő nap beosztása látható."); inp = Console.ReadKey(); } while (inp.Key != ConsoleKey.Enter); Console.Clear(); SzalbiztosKonzol.Clear(); } while (kuldemenyek.Length > 0); Console.WriteLine(); }