using System.Diagnostics;
using System.Globalization;
Console.Write("\n\n\t\t\t\t|");
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(" Расписание ХАИ ");
Console.SetWindowSize(width, height);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.InputEncoding = System.Text.Encoding.GetEncoding(1251);
using var client = new KhaiClient();
Console.Write("1. Поиск по группе\n2. Поиск по имени\n3. Выход\n>>> ");
while (!int.TryParse(Console.ReadLine(), out choice) || choice < 1 || choice > 3)
Console.Write("Введите 1, 2 или 3: ");
Console.Write("Введите группу: ");
group = Console.ReadLine();
Output.Outputing(group, choice);
Console.Write("Введите имя: ");
name = Console.ReadLine();
Output.Outputing(name, choice);
var StudentSchedule = await client.GetStudentWeekSheduleAsync("kuzmichov-i-i");
var lecturerSchedule = await client.GetLecturerWeekSheduleAsync("abramov-k-d-504");
var GroupSchedule = await client.GetGroupWeekSheduleAsync("525b");
static string[] timeOfPairs = { "08:00 - 09:35", "09:50 - 11:25", "11:55 - 13:30", "13:45 - 15:20", "15:35 - 17:10" };
static string[] daysOfWeek = { "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця" };
public async static void Outputing(string str, int choice)
var client = new KhaiClient();
if (choice == 1) Schedule = await client.GetGroupWeekSheduleAsync(str);
else Schedule = await client.GetStudentWeekSheduleAsync(str);
foreach (var day in Schedule)
Console.WriteLine("\t" + new string('-', 101));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 46) + daysOfWeek[count] + new string(' ', 101 - 48 - daysOfWeek[count].Length));
Console.WriteLine("\t" + new string('-', 101));
for (int j = 0; j < 5; j++)
if (j >= day.Classes.Count) break;
if (day.Classes[j].Numerator == day.Classes[j].Denominator && day.Classes[j].Numerator != null)
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(" " + timeOfPairs[j] + " ");
if (day.Classes[j].Numerator.RoomNumber == null) num = day.Classes[j].Numerator.Name.Length;
else num = day.Classes[j].Numerator.RoomNumber.Length + day.Classes[j].Numerator.Name.Length;
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Write(day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name.Substring(0, 75 - day.Classes[j].Denominator.RoomNumber.Length));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Write(day.Classes[j].Denominator.Name.Substring(75 - day.Classes[j].Denominator.RoomNumber.Length) + new string(' ', 72 - day.Classes[j].Denominator.Name.Substring(75 - day.Classes[j].Denominator.RoomNumber.Length).Length) + " ");
else if (num == 75) Console.Write(day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name);
else Console.Write(new string(' ', (75 - num) / 2) + day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string(' ', 75 - num - ((75 - num) / 2)));
Console.WriteLine("\t" + new string('-', 101));
else if (day.Classes[j].Numerator == day.Classes[j].Denominator && day.Classes[j].Numerator == null)
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(" " + timeOfPairs[j] + " ");
Console.BackgroundColor = ConsoleColor.DarkGray;
Console.Write(new string(' ', (75-19)/2) + "*******************" + new string(' ', 75 - 19 - (75 - 19) / 2));
Console.WriteLine("\t" + new string('-', 101));
if (day.Classes[j].Numerator == null)
if(day.Classes[j].Denominator.RoomNumber == null) den = day.Classes[j].Denominator.Name.Length;
else den = day.Classes[j].Denominator.RoomNumber.Length + day.Classes[j].Denominator.Name.Length;
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkGray;
Console.Write(new string(' ', (75 - 19) / 2) + "*******************" + new string(' ', 75 - 19 - (75 - 19) / 2));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(" " + timeOfPairs[j] + " ");
Console.WriteLine(new string('-', 76));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkCyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name.Substring(0, 75 - day.Classes[j].Denominator.RoomNumber.Length));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.Write(day.Classes[j].Denominator.Name.Substring(75 - day.Classes[j].Denominator.RoomNumber.Length));
else if (den == 75) Console.Write(day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name);
else Console.Write(new string(' ', (75 - den) / 2) + day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name + new string(' ', 75 - den - ((75 - den) / 2)));
Console.WriteLine("\t" + new string('-', 101));
else if (day.Classes[j].Denominator == null)
if (day.Classes[j].Numerator.RoomNumber == null) num = day.Classes[j].Numerator.Name.Length;
else num = day.Classes[j].Numerator.RoomNumber.Length + day.Classes[j].Numerator.Name.Length;
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Write(day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name.Substring(0, 74 - day.Classes[j].Numerator.RoomNumber.Length));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Write(day.Classes[j].Numerator.Name.Substring(74 - day.Classes[j].Numerator.RoomNumber.Length) + new string(' ', 72 - day.Classes[j].Numerator.Name.Substring(75 - day.Classes[j].Numerator.RoomNumber.Length).Length) + " ");
if (num == 75) Console.Write(day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string(' ', 75 - num));
else Console.Write(new string(' ', (75 - num) / 2) + day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string(' ', 75 - num - ((75 - num) / 2)));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(" " + timeOfPairs[j] + " ");
Console.WriteLine(new string('-', 75));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkGray;
Console.Write(new string(' ', (75 - 19) / 2) + "*******************" + new string(' ', 75 - 19 - (75 - 19) / 2));
Console.WriteLine("\t" + new string('-', 101));
if (day.Classes[j].Numerator.RoomNumber == null) num = day.Classes[j].Numerator.Name.Length;
else num = day.Classes[j].Numerator.RoomNumber.Length + day.Classes[j].Numerator.Name.Length;
if (day.Classes[j].Denominator.RoomNumber == null) den = day.Classes[j].Denominator.Name.Length;
else den = day.Classes[j].Denominator.RoomNumber.Length + day.Classes[j].Denominator.Name.Length;
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Write(day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name.Substring(0, 74 - day.Classes[j].Numerator.RoomNumber.Length));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Write(day.Classes[j].Numerator.Name.Substring(74 - day.Classes[j].Numerator.RoomNumber.Length) + new string(' ', 72 - day.Classes[j].Numerator.Name.Substring(75 - day.Classes[j].Numerator.RoomNumber.Length).Length) + " ");
else if (num == 75) Console.Write(day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name);
else Console.Write(new string(' ', (75 - num) / 2) + day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string(' ', 75 - num - ((75 - num) / 2)));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(" " + timeOfPairs[j] + " ");
Console.WriteLine(new string('-', 76));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkCyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name.Substring(0, 74 - day.Classes[j].Denominator.RoomNumber.Length));
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(new string(' ', 23));
Console.BackgroundColor = ConsoleColor.DarkCyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write(day.Classes[j].Denominator.Name.Substring(75 - day.Classes[j].Denominator.RoomNumber.Length) + new string(' ', 72 - day.Classes[j].Denominator.Name.Substring(75 - day.Classes[j].Denominator.RoomNumber.Length).Length) + " ");
else if (den == 75) Console.Write(day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name);
else Console.Write(new string(' ', (75 - den) / 2) + day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name + new string(' ', 75 - den - ((75 - den) / 2)));
Console.WriteLine("\t" + new string('-', 101));