/*    
    Veidoja: Dimitrijs Mihailovskis
    Grupa: 110
    Praktiskais darbs 6.3
    Izmantotais Compiler: Visual Studio 2026
*/
using System;
using System.Collections.Generic;
class Program
{
    static void Main(string[] args)
    {
        int[][] vietas = new int[][]
        {
            new int[] { 0, 0, 0, 0, 0, 0, 0, 0,},
            new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            new int[] { 0, 0, 0, 0, 0, 0, },
            new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            new int[] { 0, 0, 0, 0, 0, 0, }
        };
        List<string> rezervacijas = new List<string>();
        ApstradatIzveli(vietas, rezervacijas);
    }
    static void ParaditZali(int[][] vietas)
    {
        Console.Clear();
        Console.WriteLine("===== ZALES STAVOKLIS =====");
        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("[O] ");
                else
                    Console.Write("[X] ");
            }
            Console.WriteLine();
        }
        Console.WriteLine("============================\n");
    }
    static bool RezervetVietu(int[][] vietas, List<string> rezervacijas)
    {
        Console.Write("Ievadi rindas numuru: ");
        bool rOk = int.TryParse(Console.ReadLine(), out int rinda);
        Console.Write("Ievadi vietas numuru: ");
        bool vOk = int.TryParse(Console.ReadLine(), out int vieta);
        if (!rOk || !vOk)
        {
            Console.WriteLine("Kļūda: jāievada skaitļi!");
            return false;
        }
        if (rinda < 1 || rinda > vietas.Length)
        {
            Console.WriteLine("Kļūda: tādas rindas nav!");
            return false;
        }
        if (vieta < 1 || vieta > vietas[rinda - 1].Length)
        {
            Console.WriteLine("Kļūda: šajā rindā nav tik daudz vietu!");
            return false;
        }
        if (vietas[rinda - 1][vieta - 1] == 1)
        {
            Console.WriteLine("Šī vieta jau ir rezervēta!");
            return false;
        }
        vietas[rinda - 1][vieta - 1] = 1;
        string ieraksts = $"Rinda {rinda}, Vieta {vieta}";
        rezervacijas.Add(ieraksts);
        Console.WriteLine($"Veiksmīgi rezervēta: {ieraksts}");
        return true;
    }
    static void ApstradatIzveli(int[][] vietas, List<string> rezervacijas)
    {
        bool turpinat = true;
        do
        {
            Console.WriteLine("===== GALVENA IZVELNE =====");
            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ēlies darbību: ");
            string izvele = Console.ReadLine();
            Console.WriteLine();
            switch (izvele)
            {
                case "1":
                    ParaditZali(vietas);
                    break;
                case "2":
                    RezervetVietu(vietas, rezervacijas);
                    break;
                case "3":
                    Console.WriteLine("===== REZERVACIJAS =====");
                    if (rezervacijas.Count == 0)
                        Console.WriteLine("Nav rezervāciju.");
                    else
                    {
                        foreach (var r in rezervacijas)
                            Console.WriteLine(r);
                    }
                    Console.WriteLine("==========================\n");
                    break;
                case "4":
                    turpinat = false;
                    Console.WriteLine("Programma beidz darbu. Uzredzēšanos!");
                    break;
                default:
                    Console.WriteLine("Nepareiza izvēle! Mēģini vēlreiz.");
                    break;
            }
        } while (turpinat);
    }
}
