/*
Veidoja: Lana Lobza
Grupa: 110
Praktiskais darbs 6.3
Izmantotais Compiler: www.onlinegdb.com
*/
using System;
using System.Collections.Generic;
namespace ZalesRezervacija
{
class Program
{
static void Main(string[] args) 
{
ApstradatIzveli();
}

static void ApstradatIzveli()
{
int[][] vietas = new int[][]
{
new int[] { 0, 0, 0, 0, 0, 0, 0 }, // 1. rinda (7 vietas)
new int[] { 0, 0, 0, 0, 0, 0, 0 }, // 2. rinda (7 vietas)
new int[] { 0, 0, 0, 0, 0, 0, 0 }, // 3. rinda (7 vietas)
new int[] { 0, 0, 0, 0, 0, 0, 0 }, // 4. rinda (7 vietas)
new int[] { 0, 0, 0, 0, 0, 0, 0 }, // 5. rinda (7 vietas)
};

List<string> rezervacijas = new List<string>();

bool turpinat = true;

do
{
Console.Clear();
Console.WriteLine("==== Zāles rezervācijas sitēma ====");
Console.WriteLine("1 - Parādīt zāli");
Console.WriteLine("2 - Rezervēt vietu");
Console.WriteLine("3 - Parādīt rezervāciju sarakstu");
Console.WriteLine("4 - Iziet");
Console.Write("Izvēle: ");
string izvele = Console.ReadLine();

switch (izvele)
{
case "1":
ParaditZali(vietas);
break;
case "2":
RezervetVietu(vietas, rezervacijas);
break;
case "3":
ParaditRezervacijas(rezervacijas);
break;
case "4":
turpinat = false;
break;
default:
Console.WriteLine("Nepareiza izvēle!");
break;
}

if (turpinat)
{
Console.WriteLine("\nNospied Enter, lai turpinātu...");
Console.ReadLine();
}
} while (turpinat);
}

static void ParaditZali(int[][] vietas)
{
Console.WriteLine("\nZāles vietu stāvoklis:");
for (int i = 0; i < vietas.Length; i++)
{
Console.Write($"Rinda {i + 1}: ");
for (int j = 0; j < vietas[i].Length; j++)
{
if (vietas[i][j] == 0)
Console.Write("[0] ");
else
Console.Write("[X] ");
}
Console.WriteLine();
}

}

static void RezervetVietu(int[][] vietas, List<string> rezervacijas)
{
Console.Write("\nIevadi rindas numuru: ");
if (!int.TryParse(Console.ReadLine(), out int rinda))
{
Console.WriteLine("Nederīgs rindas numurs!");
return;
}

Console.Write("Ievadi vietas numuru: ");
if (!int.TryParse(Console.ReadLine(), out int vieta))
{
Console.WriteLine("Nederīgs vietas numurs!");
return;
}

rinda--;
vieta--;

if (rinda < 0 || rinda >= vietas.Length)
{
Console.WriteLine("Tāda rinda neeksistē!");
return;
}

if (vieta < 0 || vieta >= vietas[rinda].Length)
{
Console.WriteLine("Tāda vieta neeksistē!");
return;
}

if (vietas[rinda][vieta] == 1)
{
Console.WriteLine("šī vieta jau ir rezervēta!");
return;
}

vietas[rinda][vieta] = 1;
string ieraksts = $"Rinda {rinda + 1}, Vieta {vieta + 1}";
rezervacijas.Add(ieraksts);
Console.WriteLine($"Rezervācija veiksmīga: {ieraksts}");
}

static void ParaditRezervacijas(List<string> rezervacijas)
{
Console.WriteLine("\nRezervācijas saraksts:");
if (rezervacijas.Count == 0)
{
Console.WriteLine("Nav rezervāciju.");
}
else
{
foreach (var r in rezervacijas)
{
Console.WriteLine(r);
}
}
}

}
}