using System;
using System.Collections.Generic;
using System.Text;

namespace prog_tesztelo
{
	/// <summary>
	/// A tantárgyak adatait tartalmazó osztály
	/// </summary>
	/// <remarks>
	/// Egy-egy Subject példány hordozza a legördülő menüből választható tárgyak adatait,
	/// amelyeket a tesztelésnél használunk fel.
	/// </remarks>
	public class Subject
	{
		private string targy_nev;

		public string Targy_nev
		{
			get { return targy_nev; }
			set { targy_nev = value; }
		}

		private string zsuri;

		public string Zsuri
		{
			get { return zsuri; }
			set { zsuri = value; }
		}

		private string feladat;

		public string Feladat
		{
			get { return feladat; }
			set { feladat = value; }
		}

		private string tesztesetek;

		public string Tesztesetek
		{
			get { return tesztesetek; }
			set { tesztesetek = value; }
		}

		private string beadott_fajlok;

		public string Beadott_fajlok
		{
			get { return beadott_fajlok; }
			set { beadott_fajlok = value; }
		}

		private string tesztel;

		public string Tesztel
		{
			get { return tesztel; }
			set { tesztel = value; }
		}

		private string bead;

		public string Bead
		{
			get { return bead; }
			set { bead = value; }
		}

		private string beadva;

		public string Beadva
		{
			get { return beadva; }
			set { beadva = value; }
		}

		private string eredmeny;

		public string Eredmeny
		{
			get { return eredmeny; }
			set { eredmeny = value; }
		}

		/// <summary>
		/// Az osztály konstruktora, amely egy-egy konfigurációs fájl adatait dolgozza fel
		/// </summary>
		/// <remarks>
		/// A konfigurációs fájl felépítésével kapcsolatos megszorítások:
		///		A fájlt a Subjects könyvtárban kell elhelyezni, .ini kiterjesztéssel.
		///		
		///		A fájl csak változó=érték párokat, üres sorokat, illetve ;-vel kezdődő megjegyzés sorokat tartalmazhat.
		///	
		///		A lehetséges változók:
		///			targy_nev
		///			zsuri
		///			feladat
		///			tesztesetek
		///			beadott_fajlok
		///			tesztel
		///			bead
		///			beadva
		///			eredmeny
		///	
		///		Csak ezeket a változókat veszi figyelembe a program. A változó értékét az egyenlőségjel után, határolójelek
		///		(például '' vagy "") nélkül kell megadni.
		/// 
		///		Amennyiben valamelyik változót nem definiáljuk, úgy az ahhoz tartozó funkció 
		///		(és a hozzá rendelt vezérlő) nem lesz elérhető a programban.
		/// </remarks>
		/// <param name="targy_nev">a tantárgy teljes neve</param>
		/// <param name="zsuri">a zsűri könyvtárának elérési útvonala</param>
		/// <param name="feladat">a feladat elérési útvonala</param>
		/// <param name="tesztesetek">a feladat teszteseteinek útvonala</param>
		/// <param name="beadott_fajlok">a feladatra beadott megoldások könyvtára</param>
		/// <param name="bead">beadás parancs az adott tárgy esetében</param>
		/// <param name="beadva">beadva parancs az adott tárgy esetében</param>
		/// <param name="eredmeny">eredmény parancs az adott tárgy esetében</param>
		/// <param name="tesztel">tesztelés parancsa az adott tárgy esetében</param>
		public Subject(string targy_nev, string zsuri, string feladat, string tesztesetek, string beadott_fajlok, string bead, string beadva, string eredmeny, string tesztel)
		{
			this.targy_nev = targy_nev;
			this.zsuri = zsuri;
			this.feladat = feladat;
			this.tesztesetek = tesztesetek;
			this.beadott_fajlok = beadott_fajlok;
			this.tesztel = tesztel;
			this.bead = bead;
			this.beadva = beadva;
			this.eredmeny = eredmeny;
		}
	}
}
