/*
Veidoja: Roberts Onzuls
Grupa: 110
Praktiskais darbs: 6.3
Izmantotais compiler: www.programiz.com
*/


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int[][] vietas = new int[][]
        {
            new int[] { 0, 0, 0, 0, 0 },
            new int[] { 0, 0, 0, 0, 0, 0, 0 },
            new int[] { 0, 0, 0, 0 }
        };

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

        ApstradatIzveli(vietas, rezervacijas);
    }

    static void ApstradatIzveli(int[][] vietas, List<string> rezervacijas)
    {
        bool turpini = true;

        do
        {
            Console.Clear();
            Console.WriteLine("1 - Pardt zli");
            Console.WriteLine("2 - Rezervt vietu");
            Console.WriteLine("3 - Pardt rezervciju sarakstu");
            Console.WriteLine("4 - Iziet");
            Console.Write("Izvlies darbbu: ");

            string ievade = Console.ReadLine();

            switch (ievade)
            {
                case "1":
                    ParaditZali(vietas);
                    break;
                case "2":
                    RezervetVietu(vietas, rezervacijas);
                    break;
                case "3":
                    if (rezervacijas.Count == 0)
                        Console.WriteLine("Nav rezervciju.");
                    else
                        rezervacijas.ForEach(r => Console.WriteLine(r));
                    break;
                case "4":
                    turpini = false;
                    break;
                default:
                    Console.WriteLine("Nepareiza izvle.");
                    break;
            }

            if (turpini)
            {
                Console.WriteLine("\nNospied jebkuru taustiu, lai turpintu...");
                Console.ReadKey();
            }

        } while (turpini);
    }

    static void ParaditZali(int[][] vietas)
    {
        for (int rinda = 0; rinda < vietas.Length; rinda++)
        {
            for (int vieta = 0; vieta < vietas[rinda].Length; vieta++)
            {
                if (vietas[rinda][vieta] == 0)
                    Console.Write("[O] ");
                else
                    Console.Write("[X] ");
            }
            Console.WriteLine();
        }
    }

    static bool RezervetVietu(int[][] vietas, List<string> rezervacijas)
    {
        for (int i = 0; i < vietas.Length; i++)
        {
            for (int j = 0; j < vietas[i].Length; j++)
            {
                if (vietas[i][j] == 0)
                    Console.Write("[O] ");
                else
                    Console.Write("[X] ");
            }
            Console.WriteLine();
        }
        Console.Write("Ievadi rindas numuru: ");
        if (!int.TryParse(Console.ReadLine(), out int rinda) || rinda < 1 || rinda > vietas.Length)
        {
            Console.WriteLine("Nepareizs rindas numurs!");
            return false;
        }

        Console.Write("Ievadi vietas numuru: ");
        if (!int.TryParse(Console.ReadLine(), out int vieta) || vieta < 1 || vieta > vietas[rinda - 1].Length)
        {
            Console.WriteLine("Nepareizs vietas numurs!");
            return false;
        }

        if (vietas[rinda - 1][vieta - 1] == 1)
        {
            Console.WriteLine(" vieta jau ir rezervta!");
            return false;
        }

        vietas[rinda - 1][vieta - 1] = 1;
        string ieraksts = $"Rinda {rinda}, Vieta {vieta}";
        rezervacijas.Add(ieraksts);
        Console.WriteLine($"Veiksmgi rezervta {ieraksts}.");
        return true;
    }
}



