using System.Diagnostics;
Console.WriteLine("\n\n\t\tРасписание ХАИ\n");
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();
var groupSchedule = await client.GetGroupWeekSheduleAsync(group);
Output.Outputing(groupSchedule, group);
Console.Write("Введите имя: ");
name = Console.ReadLine();
var studentSchedule = await client.GetStudentWeekSheduleAsync(name);
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(WeekSchedule weekScheduele, string group)
var client = new KhaiClient();
var groupSchedule = await client.GetGroupWeekSheduleAsync(group);
foreach (var day in groupSchedule)
Console.WriteLine("\t" + new string('-', 100));
Console.WriteLine($"\t|\t\t\t\t\t\t{daysOfWeek[count]}" + new string('\t', (55 - daysOfWeek[count].Length)/8) + " |");
Console.WriteLine("\t" + new string('-', 100));
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.Write("\t|\t" + timeOfPairs[j] + "\t|\t");
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.WriteLine("\t" + day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string('\t', (64-num)/8)+" |");
Console.WriteLine("\t" + new string('-', 100));
else if (day.Classes[j].Numerator == day.Classes[j].Denominator && day.Classes[j].Numerator == null)
Console.Write("\t|\t" + timeOfPairs[j] + "\t|\t");
Console.WriteLine("\t******************\t\t\t\t\t |");
Console.WriteLine("\t" + new string('-', 100));
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.Write("\t|\t\t\t|\t");
Console.WriteLine("\t******************\t\t\t\t\t |");
Console.WriteLine("\t|\t" + timeOfPairs[j] + "\t|" + new string('-', 75));
Console.WriteLine("\t|\t\t\t|\t\t" + day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name + new string('\t', (65 - den) / 8) + " |");
Console.WriteLine("\t" + new string('-', 100));
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.Write("\t|\t\t\t|\t");
Console.WriteLine("\t" + day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string('\t', (65 - num) / 8) + " |");
Console.WriteLine("\t|\t" + timeOfPairs[j] + "\t|" + new string('-', 75));
Console.WriteLine("\t|\t\t\t|\t\t******************\t\t\t\t\t |");
Console.WriteLine("\t" + new string('-', 100));
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.Write("\t|\t\t\t|\t");
Console.WriteLine("\t" + day.Classes[j].Numerator.RoomNumber + day.Classes[j].Numerator.Name + new string('\t', (65 - num) / 8) + " |");
Console.WriteLine("\t|\t" + timeOfPairs[j] + "\t|" + new string('-', 75));
Console.WriteLine("\t|\t\t\t|\t\t" + day.Classes[j].Denominator.RoomNumber + day.Classes[j].Denominator.Name + new string('\t', (65 - den) / 8) + " |");
Console.WriteLine("\t" + new string('-', 100));