using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas; using Kreta.BusinessLogic.Validation; using Kreta.Core; using Kreta.Core.CustomAttributes; using Kreta.Enums; using Kreta.Enums.ManualEnums.ImportExport; using Kreta.Resources; using Newtonsoft.Json; namespace Kreta.BusinessLogic.HelperClasses.ImportCo { public class TanuloBesorolasImportCo : BaseImportCo { [JsonIgnore] public List MainImportItemList { get; set; } = new List(); [JsonIgnore] public List NemImportalhatoItemList { get; set; } = new List(); [JsonProperty("T_TANULOCSOPORT_OSSZES")] public List MainImportJsonItemList { get; set; } [JsonProperty("T_TANULOTANUGYIADATOK_OSSZES")] public List TanuloBesorolasTanuloTanugyiAdatokImportJsonItemList { get; set; } [JsonIgnore] public List OsztalyCsoportCoList { get; set; } [JsonIgnore] public List TanuloCsoportCoList { get; set; } [JsonIgnore] public bool? IsJuttatasUpdate { get; set; } [JsonIgnore] public bool IsIntezmenySzakkepzoJuttatas { get; set; } [JsonIgnore] public DateTime BesorolasDatum { get; set; } [JsonIgnore] public DateTime? KisorolasDatum { get; set; } [JsonIgnore] public DateTime TanevUtolsoNapja { get; set; } [JsonIgnore] public Dictionary JogviszonyLimits { get; set; } public Dictionary> Validate() { var validationResultDictionary = new Dictionary>(); foreach (TanuloBesorolasImportItemCo importItem in MainImportItemList) { var validationResultList = new List(); //NOTE: Az import item-eket egyesével levalidáljuk! var blValidator = new BlValidator(importItem); if (!blValidator.IsValid) { validationResultList.AddRange(blValidator.ErrorList); } if (importItem.TanuloId.IsEntityId() && importItem.OsztalyCsoportId.IsEntityId()) { var besorolasVege = KisorolasDatum ?? TanevUtolsoNapja; var osztalyok = OsztalyCsoportCoList.Where(o => o.IsOsztaly); var currentOsztalyCsoport = OsztalyCsoportCoList.Single(x => x.Id == importItem.OsztalyCsoportId.Value); var currentOsztalyFeladatKategoriaId = currentOsztalyCsoport.FeladatKategoriaId; var isAmi = currentOsztalyFeladatKategoriaId == (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas; var tanulohozTartozoExcelBesorolasok = MainImportItemList.Where(x => x.TanuloId.IsEntityId() && x.OsztalyCsoportId.IsEntityId() && x.TanuloId == importItem.TanuloId.Value && osztalyok.Any(o => (o.Id == x.OsztalyCsoportId) && (o.FeladatKategoriaId == currentOsztalyFeladatKategoriaId))); var tanulohozTartozoElozoExcelBesorolasok = tanulohozTartozoExcelBesorolasok.Where(x => x.LineNumber < importItem.LineNumber); var tanulohozTartozoElozoExcelBesorolasokByOsztaly = tanulohozTartozoElozoExcelBesorolasok.Where(x => osztalyok.Any(o => o.Id == x.OsztalyCsoportId)); var tanulohozTartozoTanuloCsoportListFromDb = TanuloCsoportCoList.Where(x => x.OsztalyCsoportFeladatKategoriaId == currentOsztalyFeladatKategoriaId && x.FelhasznaloId == importItem.TanuloId).ToList(); var tanulohozTartozoDbBesorolasokByOsztaly = tanulohozTartozoTanuloCsoportListFromDb.Where(x => osztalyok.Any(o => o.Id == x.OsztalyCsoportId)); if (currentOsztalyCsoport.IsOsztaly) { var jogviszonyLimit = JogviszonyLimits[(OktNevelesiKategoriaEnum)currentOsztalyFeladatKategoriaId]; //NOTE: Kikeressük, melyik dátumnál van a legnagyobb átfedés a besorolások között, és ha több mint a limit, hiba. var besorolasok = CreateBesorolasDateRangeList(besorolasVege, tanulohozTartozoDbBesorolasokByOsztaly, tanulohozTartozoElozoExcelBesorolasokByOsztaly, withCurrentOne: true); var overlapResult = BesorolasDateRangeUtil.CalculateMaxOverlap(BesorolasDatum, besorolasVege, besorolasok); if (overlapResult.OverlapCount > jogviszonyLimit) { var errorMsg = string.Empty; if (isAmi) { errorMsg = string.Format(ImportExportTanuloBesorolasResource.TanuloBeVanSorolvaMegengedettSzamuOsztalyba, importItem.TanuloNeveImportData, overlapResult.OverlapBeginDate.ToShortDateString()); } else { var osztalyNev = osztalyok.First(o => o.Id == overlapResult.MaxOverlapOsztalyId.Value).Nev; errorMsg = string.Format(ImportExportTanuloBesorolasResource.TanuloBeVanSorolvaOsztalyba, importItem.TanuloNeveImportData, overlapResult.OverlapBeginDate.ToShortDateString(), osztalyNev); } validationResultList.Add(new ValidationResult(errorMsg)); } //NOTE: Ha a limit nagyobb mint 1, meg kell vizsgálni, hogy nem akarják-e ugyan abba az osztályba besorolni. else if (jogviszonyLimit > 1) { var duplicateBesorolas = tanulohozTartozoDbBesorolasokByOsztaly.FirstOrDefault(x => x.OsztalyCsoportId == importItem.OsztalyCsoportId.Value && BesorolasDatum < (x.KilepesDatum ?? TanevUtolsoNapja) && x.BelepesDatum < besorolasVege); if (duplicateBesorolas != null) { var errorMsg = string.Format(ImportExportTanuloBesorolasResource.TanuloBeVanSorolvaOsztalyba, importItem.TanuloNeveImportData, duplicateBesorolas.BelepesDatum.ToShortDateString(), duplicateBesorolas.OsztalyCsoportNev); validationResultList.Add(new ValidationResult(errorMsg)); } } } else { if (currentOsztalyCsoport.IsAutoEgyeniCsoport) { validationResultList.Add(new ValidationResult(ImportExportTanuloBesorolasResource.ADiakotNemLehetBesorolniAutomatikusanLetrehozottEgyeniCsoportba)); } else { var tanulohozTartozoElozoExcelBesorolasokByCsoport = tanulohozTartozoElozoExcelBesorolasok.Where(x => !osztalyok.Any(o => o.Id == x.OsztalyCsoportId)); var tanulohozTartozoDbBesorolasokByCsoport = tanulohozTartozoTanuloCsoportListFromDb.Where(x => !osztalyok.Any(o => o.Id == x.OsztalyCsoportId)); var marTagjaACsoportnakBesorolasok = CreateBesorolasDateRangeList(besorolasVege, tanulohozTartozoDbBesorolasokByCsoport, tanulohozTartozoElozoExcelBesorolasokByCsoport, withCurrentOne: false, examinedOsztalyCsoportId: currentOsztalyCsoport.Id); var marTagjaACsoportnakOverlapResult = BesorolasDateRangeUtil.CalculateMaxOverlap(BesorolasDatum, besorolasVege, marTagjaACsoportnakBesorolasok); if (marTagjaACsoportnakOverlapResult.OverlapCount > 0) { var errorMsg = string.Format(ImportExportTanuloBesorolasResource.TanuloMarTagjaACsoportnak, importItem.TanuloNeveImportData, marTagjaACsoportnakOverlapResult.OverlapBeginDate.ToShortDateString()); validationResultList.Add(new ValidationResult(errorMsg)); } if (currentOsztalyCsoport.OsztalyBontasId.IsEntityId()) { var besorolasok = CreateBesorolasDateRangeList(besorolasVege, tanulohozTartozoDbBesorolasokByOsztaly, tanulohozTartozoElozoExcelBesorolasokByOsztaly, withCurrentOne: false, examinedOsztalyCsoportId: currentOsztalyCsoport.OsztalyBontasId); var overlapResult = BesorolasDateRangeUtil.CalculateMinOverlap(BesorolasDatum, besorolasVege, besorolasok); if (overlapResult.OverlapCount == 0) { var osztalyNev = osztalyok.First(o => o.Id == currentOsztalyCsoport.OsztalyBontasId.Value).Nev; var errorMsg = string.Format(ImportExportTanuloBesorolasResource.TanuloNemTagjaAzOsztalynak, importItem.TanuloNeveImportData, overlapResult.OverlapBeginDate.ToShortDateString(), osztalyNev); validationResultList.Add(new ValidationResult(errorMsg)); } } else { var nemTagjaEgyetlenOsztalynakSemBesorolasok = CreateBesorolasDateRangeList(besorolasVege, tanulohozTartozoDbBesorolasokByOsztaly, tanulohozTartozoElozoExcelBesorolasokByOsztaly, withCurrentOne: false); var nemTagjaEgyetlenOsztalynakSemOverlapResult = BesorolasDateRangeUtil.CalculateMinOverlap(BesorolasDatum, besorolasVege, nemTagjaEgyetlenOsztalynakSemBesorolasok); if (nemTagjaEgyetlenOsztalynakSemOverlapResult.OverlapCount == 0) { var errorMsg = string.Format(ImportExportTanuloBesorolasResource.TanuloNemTagjaEgyetlenOsztalynakSem, importItem.TanuloNeveImportData, nemTagjaEgyetlenOsztalynakSemOverlapResult.OverlapBeginDate.ToShortDateString()); validationResultList.Add(new ValidationResult(errorMsg)); } } } } } if (validationResultList.Count > 0) { validationResultDictionary.Add(importItem.LineNumber, validationResultList); } } Dictionary lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash); var duplicatedRowConditonTextList = new List { ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve, ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloOktatasiAzonosito, ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport }; ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList); return validationResultDictionary; } private IEnumerable CreateBesorolasDateRangeList(DateTime besorolasVege, IEnumerable tanulohozTartozoDbBesorolasok, IEnumerable tanulohozTartozoElozoExcelBesorolasok, bool withCurrentOne, int? examinedOsztalyCsoportId = null) { //NOTE: aktuális besorolás var besorolasok = new List(); if (withCurrentOne) { besorolasok.Add(new BesorolasDateRange { Begin = BesorolasDatum, End = besorolasVege, }); } //NOTE: db-be lévők besorolasok.AddRange(tanulohozTartozoDbBesorolasok.Select(x => new BesorolasDateRange { Begin = x.BelepesDatum, End = x.KilepesDatum ?? TanevUtolsoNapja, OsztalyCsoportId = x.OsztalyCsoportId })); //NOTE: az excelbe ez előtt szerepeltek besorolasok.AddRange(tanulohozTartozoElozoExcelBesorolasok.Select(x => new BesorolasDateRange { Begin = BesorolasDatum, End = besorolasVege, OsztalyCsoportId = x.OsztalyCsoportId.Value })); if (examinedOsztalyCsoportId.HasValue) { besorolasok = besorolasok.Where(x => !x.OsztalyCsoportId.HasValue || x.OsztalyCsoportId == examinedOsztalyCsoportId).ToList(); } return besorolasok; } } public class TanuloBesorolasImportItemCo : BaseImportItemCo, IValidatableObject { public TanuloBesorolasImportItemCo(bool isSzakkepzoIntezmeny) : base() { IsSzakkepzoIntezmeny = isSzakkepzoIntezmeny; } #region Fields /// /// Technikai paraméter(ek) a reflection-ös exporthoz. /// public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId); #endregion Fields [SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve), typeof(ImportExportTanuloBesorolasResource))] [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve), ResourceType = typeof(ImportExportTanuloBesorolasResource))] public string TanuloNeveImportData { get; set; } [SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloOktatasiAzonosito), typeof(ImportExportTanuloBesorolasResource))] [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [KretaRegularExpression(Constants.RegularExpressions.OktatasiAzonositoTanulo, ErrorMessageResourceName = nameof(ErrorResource.OktatasiAzonositoFormatumaNemMegfeleloTanulo), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloOktatasiAzonosito), ResourceType = typeof(ImportExportTanuloBesorolasResource))] public string TanuloOktatasiAzonositoImportData { get; set; } [SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport), typeof(ImportExportTanuloBesorolasResource))] [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport), ResourceType = typeof(ImportExportTanuloBesorolasResource))] public string OsztalyCsoportImportData { get; set; } public string TanuloElotag => GetElotagFromTeljesNev(TanuloNeveImportData); public string TanuloVezeteknev => GetVezeteknevFromTeljesNev(TanuloNeveImportData); public string TanuloKeresztnev => GetKeresztnevekFromTeljesNev(TanuloNeveImportData); public string TanuloOktatasiAzonosito => GetStringValue(TanuloOktatasiAzonositoImportData); public string OsztalyCsoportNev => GetStringValue(OsztalyCsoportImportData); public TanuloItemCo Tanulo { get; set; } public int? TanuloId => Tanulo?.Id; public List TanuloOsztalyCsoportIdList { get; set; } public OsztalyCsoportItemCo OsztalyCsoport { get; set; } public int? OsztalyCsoportId { get; set; } public bool? IsOsztaly { get; set; } private bool IsSzakkepzoIntezmeny { get; } #region Validate public IEnumerable Validate(ValidationContext validationContext) { //NOTE: Ha van megadva tanuló neve és oktatási azonosítója az import data-ban, meg kell vizsgálni, hogy létezik-e az adatbázisban. if (!string.IsNullOrWhiteSpace(TanuloNeveImportData) && !string.IsNullOrWhiteSpace(TanuloOktatasiAzonositoImportData)) { //NOTE: Ha a TanuloId null, akkor a tanuló nem létezik az adatbázisban! if (!TanuloId.IsEntityId()) { yield return new ValidationResult(ImportExportTanuloBesorolasResource.ATanuloNemSzerepelAzAdatbazisban); } } //NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy legyen vezetéknév és keresztnév is if (!string.IsNullOrWhiteSpace(TanuloNeveImportData) && (string.IsNullOrWhiteSpace(TanuloVezeteknev) || string.IsNullOrWhiteSpace(TanuloKeresztnev))) { yield return new ValidationResult(ImportExportGondviseloResource.ATanuloNeveFormatumaNemMegfelelo); } //NOTE: Ha van megadva osztály vagy csoport neve az import data-ban, meg kell vizsgálni, hogy létezik-e az adatbázisban. if (!string.IsNullOrWhiteSpace(OsztalyCsoportImportData)) { //NOTE: Ha az OsztalyCsoportId null, akkor az osztály vagy csoport nem létezik az adatbázisban! if (!OsztalyCsoportId.IsEntityId()) { yield return new ValidationResult(ImportExportTanuloBesorolasResource.AzOsztalyVagyCsoportNemSzerepelAzAdatbazisban); } } if (IsSzakkepzoIntezmeny && !string.IsNullOrWhiteSpace(TanuloOktatasiAzonositoImportData) && !Extensions.FelhasznaloExtensions.IsValidOktatasiAzonosito(TanuloOktatasiAzonositoImportData)) { yield return new ValidationResult(ErrorResource.AMegadottOktatasiAzonositoHibas); } } #endregion Validate } public class TanuloBesorolasImportJsonItemCo : BaseImportJsonItemCo { public TanuloBesorolasImportJsonItemCo(TanuloBesorolasImportItemCo importItemCo, DateTime besorolasDatum, DateTime? kisorolasDatum, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId) { Now = DateTime.Now; BejegyzesIdopontja = Now.ToString(Constants.ToStringPattern.SortableDateTimePattern); TanuloElotag = importItemCo.TanuloElotag; TanuloVezeteknev = importItemCo.TanuloVezeteknev; TanuloKeresztnev = importItemCo.TanuloKeresztnev; TanuloOktatasiAzonosito = importItemCo.TanuloOktatasiAzonosito; OsztalyCsoportNev = importItemCo.OsztalyCsoportNev; //NOTE: Az IsOsztaly.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van osztály-/csoportja! IsOsztaly = importItemCo.IsOsztaly.Value; BelepesDatum = besorolasDatum; BelepesDatumString = BelepesDatum.ToString(Constants.ToStringPattern.SortableDateTimePattern); KilepesDatum = kisorolasDatum; KilepesDatumString = KilepesDatum?.ToString(Constants.ToStringPattern.SortableDateTimePattern); //NOTE: Az TanuloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van tanulója! TanuloId = importItemCo.TanuloId.Value; //NOTE: Az OsztalyCsoportId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van osztály-/csoportja! OsztalyCsoportId = importItemCo.OsztalyCsoportId.Value; Id = importItemCo.Id; LineNumber = importItemCo.LineNumber; Operation = importItemCo.Operation; } #region Import Json Properties [JsonIgnore] public string TanuloElotag { get; set; } [JsonIgnore] public string TanuloVezeteknev { get; set; } [JsonIgnore] public string TanuloKeresztnev { get; set; } [JsonIgnore] public string TanuloOktatasiAzonosito { get; set; } [JsonIgnore] public string OsztalyCsoportNev { get; set; } [JsonIgnore] public bool IsOsztaly { get; set; } [JsonIgnore] public DateTime BelepesDatum { get; set; } [JsonProperty("C_BELEPESDATUM")] public string BelepesDatumString { get; set; } [JsonProperty("C_TANULOID")] public int TanuloId { get; set; } [JsonProperty("C_OSZTALYCSOPORTID")] public int OsztalyCsoportId { get; set; } [JsonProperty("C_BEJEGYZESIDOPONTJA")] public string BejegyzesIdopontja { get; set; } [JsonIgnore] public DateTime? KilepesDatum { get; set; } [JsonProperty("C_KILEPESDATUM")] public string KilepesDatumString { get; set; } #region Default Required Import Json Properties [JsonProperty("C_ZARADEK")] public string Zaradek => null; [JsonProperty("C_BEFOGADOINTEZMENY")] public string BefogadoIntezmeny => null; [JsonProperty("C_MEGJEGYZES")] public string Megjegyzes => null; [JsonProperty("C_VEGZARADEK")] public string Vegzaradek => null; #endregion Default Required Import Json Properties #endregion Import Json Properties } public class TanuloBesorolasTanuloTanugyiAdatokImportJsonItemCo : BaseImportJsonItemCo { public TanuloBesorolasTanuloTanugyiAdatokImportJsonItemCo(int osztalyCsoportId, TanuloItemCo tanuloCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId) { OsztalyCsoportId = osztalyCsoportId; TanuloId = tanuloCo.Id; BeirasiNaploSorszam = tanuloCo.BeirasiNaploSorszam; IsBejaro = SDAConvert.ToSDABoolean(tanuloCo.IsBejaro); IsDiaksportkoros = SDAConvert.ToSDABoolean(tanuloCo.IsDiaksportkoros); IsEgyebOrszagosDonto = SDAConvert.ToSDABoolean(tanuloCo.IsEgyebDonto); IsEgyuttmukodeses = SDAConvert.ToSDABoolean(tanuloCo.IsEgyuttmukodeses); ElozoIntezmeny = tanuloCo.ElozoIntezmeny; IsEvismetlo = SDAConvert.ToSDABoolean(tanuloCo.IsEvismetlo); IsIskolaiKeretekKozott = SDAConvert.ToSDABoolean(tanuloCo.IsIskolaiKeretekKozott); IsJogviszonyatSzunetelteto = SDAConvert.ToSDABoolean(tanuloCo.IsJogviszonyatSzunetelteto); JogviszonyVarhatoBefejezese = tanuloCo.JogviszonyVarhatoBefejezese; JogviszonyVarhatoBefejezeseString = tanuloCo.JogviszonyVarhatoBefejezeseString; IsMagantanulo = SDAConvert.ToSDABoolean(tanuloCo.IsMagantanulo); MagantanulosaganakOkaId = tanuloCo.MagantanulosaganakOkaId; MagantanulosagKezdete = tanuloCo.MagantanulosagKezdete; MagantanulosagKezdeteString = tanuloCo.MagantanulosagKezdeteString; NyilvantartasKezdete = tanuloCo.NyilvantartasKezdete; NyilvantartasKezdeteString = tanuloCo.NyilvantartasKezdeteString; IsOsztv = SDAConvert.ToSDABoolean(tanuloCo.IsOsztv); IsPolgariSzerzodeses = SDAConvert.ToSDABoolean(tanuloCo.IsPolgariSzerzodeses); IsSzakmaiGyakorlaton = SDAConvert.ToSDABoolean(tanuloCo.IsSzakmaiGyakorlaton); IsSzetvAgazat = SDAConvert.ToSDABoolean(tanuloCo.IsSzetvAgazat); Szintvizsga = tanuloCo.Szintvizsga; IsSzktv = SDAConvert.ToSDABoolean(tanuloCo.IsSzktv); IsTandijatfizeto = SDAConvert.ToSDABoolean(tanuloCo.IsTandijatfizeto); IsTankotelezett = SDAConvert.ToSDABoolean(tanuloCo.IsTankotelezett); TankotelezettsegVege = tanuloCo.TankotelezettsegVege; TankotelezettsegVegeString = tanuloCo.TankotelezettsegVegeString; TanuloEvfolyamTipusId = tanuloCo.TanuloEvfolyamTipusId; IsTanuloSzerzodeses = SDAConvert.ToSDABoolean(tanuloCo.IsTanuloSzerzodeses); IsTechnikusiEvfolyam = SDAConvert.ToSDABoolean(tanuloCo.IsTechnikusiEvfolyam); IsTeritesiDijatFizeto = SDAConvert.ToSDABoolean(tanuloCo.IsTeritesiDijatFizeto); IsVendeg = SDAConvert.ToSDABoolean(tanuloCo.IsVendeg); Naplosorszam = tanuloCo.Naplosorszam; Torzslapszam = tanuloCo.Torzslapszam; TantervId = tanuloCo.TantervId; FelvetelTaneveId = tanuloCo.FelvetelTaneveId; Operation = (int)ImportItemOperationEnum.Insert; } #region Import Json Properties [JsonProperty("OsztalyCsoportId")] public int OsztalyCsoportId { get; set; } [JsonProperty("TanuloId")] public int TanuloId { get; set; } [JsonProperty("C_BEIRASINAPLOSORSZAM")] public string BeirasiNaploSorszam { get; set; } [JsonProperty("C_BEJARO")] public string IsBejaro { get; set; } [JsonProperty("C_DIAKSPORTKOROS")] public string IsDiaksportkoros { get; set; } [JsonProperty("C_EGYEBORSZAGOSDONTO")] public string IsEgyebOrszagosDonto { get; set; } [JsonProperty("C_EGYUTTMUKODESES")] public string IsEgyuttmukodeses { get; set; } [JsonProperty("C_ELOZOINTEZMENY")] public string ElozoIntezmeny { get; set; } [JsonProperty("C_EVISMETLO")] public string IsEvismetlo { get; set; } [JsonProperty("C_ISKOLAIKERETEKKOZOTT")] public string IsIskolaiKeretekKozott { get; set; } [JsonProperty("C_JOGVISZONYATSZUNETELTETO")] public string IsJogviszonyatSzunetelteto { get; set; } [JsonIgnore] public DateTime? JogviszonyVarhatoBefejezese { get; set; } [JsonProperty("C_JOGVISZONYVARHATOBEFEJEZESE")] public string JogviszonyVarhatoBefejezeseString { get; set; } [JsonProperty("C_MAGANTANULO")] public string IsMagantanulo { get; set; } [JsonProperty("C_MAGANTANULOSAGANAKOKAID")] public int? MagantanulosaganakOkaId { get; set; } [JsonIgnore] public DateTime? MagantanulosagKezdete { get; set; } [JsonProperty("C_MAGANTANULOSAGKEZDETE")] public string MagantanulosagKezdeteString { get; set; } [JsonIgnore] public DateTime NyilvantartasKezdete { get; set; } [JsonProperty("C_NYILVANTARTASKEZDETE")] public string NyilvantartasKezdeteString { get; set; } [JsonProperty("C_OSZTV")] public string IsOsztv { get; set; } [JsonProperty("C_POLGARISZERZODESES")] public string IsPolgariSzerzodeses { get; set; } [JsonProperty("C_SZAKMAIGYAKORLATON")] public string IsSzakmaiGyakorlaton { get; set; } [JsonProperty("C_SZETVAGAZAT")] public string IsSzetvAgazat { get; set; } [JsonProperty("C_SZINTVIZSGA")] public double? Szintvizsga { get; set; } [JsonProperty("C_SZKTV")] public string IsSzktv { get; set; } [JsonProperty("C_TANDIJATFIZETO")] public string IsTandijatfizeto { get; set; } [JsonProperty("C_TANKOTELEZETT")] public string IsTankotelezett { get; set; } [JsonIgnore] public DateTime? TankotelezettsegVege { get; set; } [JsonProperty("C_TANKOTELEZETTSEGVEGE")] public string TankotelezettsegVegeString { get; set; } [JsonProperty("C_TANULOEVFOLYAMTIPUSID")] public int? TanuloEvfolyamTipusId { get; set; } [JsonProperty("C_TANULOSZERZODESES")] public string IsTanuloSzerzodeses { get; set; } [JsonProperty("C_TECHNIKUSIEVFOLYAM")] public string IsTechnikusiEvfolyam { get; set; } [JsonProperty("C_TERITESIDIJATFIZETO")] public string IsTeritesiDijatFizeto { get; set; } [JsonProperty("C_VENDEG")] public string IsVendeg { get; set; } [JsonProperty("C_NAPLOSORSZAM")] public int? Naplosorszam { get; set; } [JsonProperty("C_TORZSLAPSZAM")] public string Torzslapszam { get; set; } [JsonProperty("C_TANTERVID")] public int TantervId { get; set; } [JsonProperty("C_FELVETELTANEVEID")] public int FelvetelTaneveId { get; set; } #region Default Required Import Json Properties [JsonProperty("C_HOZOTTIGAZOLATLANHIANYZAS")] public int HozottIgazolatlanHianyzas => 0; [JsonProperty("C_HOZOTTIGAZOLATLANKESESPERCBE")] public int HozottIgazolatlanKesesPercbe => 0; [JsonProperty("C_HOZOTTIGAZOLTHIANYZAS")] public int HozottIgazoltHianyzas => 0; [JsonProperty("C_HOZOTTIGAZOLTKESESPERCBEN")] public int HozottIgazoltKesesPercben => 0; [JsonProperty("C_ISESL16EVESUTANBELEPETT")] public string IsEsl16EvesUtanBelepett => SDAConvert.ToSDABoolean(false); [JsonProperty("C_BIZONYITVANYSZAMA")] public string BizonyitvanySzama => null; #endregion Default Required Import Json Properties #endregion Import Json Properties } }