using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Helpers; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Enums.ManualEnums.ImportExport; using Kreta.Enums.ManualEnums.SystemSettings; using Kreta.Framework.Util; using Kreta.Resources; using Newtonsoft.Json; namespace Kreta.BusinessLogic.HelperClasses.ImportCo { public class OrarendImportCo : BaseTantargyfelosztasImportCo { [JsonIgnore] public List MainImportItemList { get; set; } = new List(); [JsonIgnore] public List NemImportalhatoItemList { get; set; } = new List(); [JsonProperty("T_ORARENDIORA_OSSZES")] public List MainImportJsonItemList { get; set; } [JsonProperty("T_TEREM_OSSZES")] public List TeremImportJsonItemList { get; set; } [JsonProperty("T_FOGLALKOZAS_OSSZES")] public List TantargyfelosztasImportJsonItemList { get; set; } [JsonIgnore] public int OrarendImportMuvelet { get; set; } [JsonIgnore] public int MukodesiHelyId { get; set; } [JsonIgnore] public int OrarendImportTipus { get; set; } [JsonIgnore] public bool IsNapirendImport { get; set; } [JsonIgnore] public bool IsTtfImport { get; set; } [JsonIgnore] public DateTime? OrarendiOraLezarasDateTime { get; set; } [JsonIgnore] public List TanevrendOsztalyokkalNaptipusTulajdonsagokkalCOs { get; set; } [JsonIgnore] public List TantargyNincsBeloleOra { get; set; } [JsonIgnore] public List TantargyfelosztasCoList { get; set; } [JsonIgnore] public SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum OrarendiElemekRogzitesenekElofeltetele { get; set; } public Dictionary> Validate(bool isAktivTanev) { Dictionary> validationResultDictionary = Validate(GetBaseImportItemCoList()); foreach (OrarendImportItemCo importItem in MainImportItemList) { var tantargyNevToCompare = importItem.TantargyNev?.ToComparableString(); var tanarNevToCompare = importItem.TanarNev?.ToComparableString(); var osztalyCsoportNevToCompare = importItem.OsztalyCsoportNev?.ToComparableString(); var validationResultList = new List(); if (!string.IsNullOrWhiteSpace(tantargyNevToCompare) && TantargyNincsBeloleOra.Any(t => t.ToComparableString() == tantargyNevToCompare)) { validationResultList.Add(new ValidationResult(ImportExportOrarendResource.AMegadottTantargyhozNemRogzithetoOraAzOrarendbenABeallitottParametereAlapjan)); } if (importItem.IsOsszefuggoSzakmaiGyakorlat && isAktivTanev) { var csoportNevToCompare = importItem.CsoportNev?.ToComparableString(); var osztalyNevToCompare = importItem.OsztalyNev?.ToComparableString(); if (!string.IsNullOrWhiteSpace(osztalyNevToCompare) && string.IsNullOrWhiteSpace(csoportNevToCompare)) { validationResultList.Add(new ValidationResult(ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasaEsetenNemImportalhatoakOsztalyokNincsMegadvaCsoportCsakOsztaly)); } if (!string.IsNullOrWhiteSpace(osztalyNevToCompare) && OsztalyCoList.All(x => x.NevComparableString != osztalyNevToCompare)) { validationResultList.Add(new ValidationResult(ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasaEsetenNemImportalhatoakOsztalyokCsakOlyanOsztalyAdhatoMegAmiSzerepelAzAdatbazisban)); } if (!string.IsNullOrWhiteSpace(csoportNevToCompare) && CsoportCoList.Any(x => x.NevComparableString == csoportNevToCompare && x.TipusId != (int)CsoportTipusEnum.OsszefuggoSzakmaiGyakorlatiCsoport)) { validationResultList.Add(new ValidationResult(ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasaEsetenCsakOsszefuggoSzakmaiGyakorlatTipusuCsoportokhozImportalhatoOrarend)); } } if (OrarendiElemekRogzitesenekElofeltetele != SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum.NincsTTF) { if (!IsTtfImport && !TantargyfelosztasCoList.Any(x => x.TanarNevComparableString == tanarNevToCompare && x.TantargyNevComparableString == tantargyNevToCompare && x.OsztalyCsoportNevComparableString == osztalyCsoportNevToCompare)) { validationResultList.Add(new ValidationResult(ImportExportOrarendResource.AzOraNemSzerepelATantargyfelosztasban)); } if (OrarendiElemekRogzitesenekElofeltetele == SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum.NemNullasTTF && !IsTtfImport && TantargyfelosztasCoList.Any(x => x.TanarNevComparableString == tanarNevToCompare && x.TantargyNevComparableString == tantargyNevToCompare && x.OsztalyCsoportNevComparableString == osztalyCsoportNevToCompare && x.Oraszam == 0)) { validationResultList.Add(new ValidationResult(ImportExportOrarendResource.AzOraNullaHetiOraszammalSzerepelATantargyfelosztasban)); } } var teremNevToCompare = importItem.TeremNev?.ToComparableString(); if (teremNevToCompare != null) { var teremCo = TeremCoList.SingleOrDefault(x => x.Nev.ToComparableString().Equals(teremNevToCompare)); if (teremCo != null && teremCo.SzervezetId.HasValue) { validationResultList.Add(new ValidationResult(ImportExportCommonResource.DualisKepzeshezKapcsolodoElemekImportalasaNemLehetseges)); } } if (validationResultList.Count > 0) { if (validationResultDictionary.ContainsKey(importItem.LineNumber)) { validationResultDictionary[importItem.LineNumber].AddRange(validationResultList); } else { validationResultDictionary.Add(importItem.LineNumber, validationResultList); } } } Dictionary lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash); var duplicatedRowConditonTextList = new List(); if (OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport) { duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete); duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege); } duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameHetirend); duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameNap); if (!IsNapirendImport) { duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameOra); } else { duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete); duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege); } duplicatedRowConditonTextList.Add($"{ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly}/{ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport}"); duplicatedRowConditonTextList.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy); duplicatedRowConditonTextList.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar); duplicatedRowConditonTextList.Add(ImportExportOrarendResource.ImportHeaderNameHelyiseg); ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList); return validationResultDictionary; } public List GetBaseImportItemCoList() { var result = MainImportItemList.ConvertAll(new Converter(x => x)); return result; } } public class OrarendImportItemCo : BaseTantargyfelosztasImportItemCo, IValidatableObject { internal readonly int _tanevId; internal readonly bool _isAktivTanev; private OrarendImportItemCo() { } public OrarendImportItemCo(int tanevId, bool isAktivTanev) { _tanevId = tanevId; _isAktivTanev = isAktivTanev; } [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete), ResourceType = typeof(ImportExportOrarendResource))] public string OraErvenyessegKezdeteImportData { get; set; } [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege), ResourceType = typeof(ImportExportOrarendResource))] public string OraErvenyessegVegeImportData { get; set; } [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameHetirend), ResourceType = typeof(ImportExportOrarendResource))] public string HetirendImportData { get; set; } [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameNap), ResourceType = typeof(ImportExportOrarendResource))] public string NapImportData { get; set; } [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameOra), ResourceType = typeof(ImportExportOrarendResource))] public string OraImportData { get; set; } [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete), ResourceType = typeof(ImportExportOrarendResource))] public string FoglalkozasKezdeteImportData { get; set; } [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege), ResourceType = typeof(ImportExportOrarendResource))] public string FoglalkozasVegeImportData { get; set; } [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(ImportExportOrarendResource.ImportHeaderNameHelyiseg), ResourceType = typeof(ImportExportOrarendResource))] public string HelyisegImportData { get; set; } public DateTime? OraErvenyessegKezdete => GetDateTimeValue(OraErvenyessegKezdeteImportData); public string OraErvenyessegKezdeteString => GetDateTimeString(OraErvenyessegKezdete); public DateTime? OraErvenyessegVege => GetDateTimeValue(OraErvenyessegVegeImportData); public string OraErvenyessegVegeString => GetDateTimeString(OraErvenyessegVege); public string HetirendTipusNev => GetStringValue(HetirendImportData); public int? HetNapjaTipusId => ((int)GeneratedAdatszotarTipusEnum.HetNapjaTipus).GetItemIdByTypeAndName(NapImportData, _tanevId); public int? OraSorszam => GetIntValue(OraImportData); public DateTime? OraKezdete => OraSorszam == null ? GetDateTimeValueFromTimeString(FoglalkozasKezdeteImportData) : CsengetesiRendOraCoList.SingleOrDefault(x => x.Oraszam == OraSorszam)?.Kezd; public string OraKezdeteString => GetDateTimeString(OraKezdete); public string OraVegeString => GetDateTimeString(OraVege); public string TeremNev => GetStringValue(HelyisegImportData); public double? Oraszam => 1; public DateTime? OraVege { get; set; } public int OperationTantargyfelosztas { get; set; } public string CompareHashTantargyfelosztas { get; set; } public int OperationTerem { get; set; } public string CompareHashTerem { get; set; } public DateTime OraErvenyessegMinDate { get; set; } public DateTime OraErvenyessegMaxDate { get; set; } public Dictionary HetirendTipusDictionary { get; set; } public int? CsengetesiRendId { get; set; } public int? CsengetesiRendOraId { get; set; } public List CsengetesiRendOraCoList { get; set; } public int? HetirendTipusId { get; set; } public bool IsNapirendImport { get; set; } public int FoglalkozasokRogziteseHetvegereId { get; set; } public bool IsEgyediNap => OraErvenyessegKezdete?.Equals(OraErvenyessegVege) ?? false; #region Validate public IEnumerable Validate(ValidationContext validationContext) { string korabbiMessage = IsOsszefuggoSzakmaiGyakorlat && _isAktivTanev ? ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatKezdete : ImportExportCommonResource.ElsoTanitasiNap; string kesobbiMessage = IsOsszefuggoSzakmaiGyakorlat && _isAktivTanev ? ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatVege : ImportExportCommonResource.UtolsoTanitasiNap; //NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy sikerült-e átkonvertálni a megfelelő típusra. // Ha nem, akkor azt később beállítjuk a tanév első tanítási napjára, de azt nem kell validálnunk! if (!string.IsNullOrWhiteSpace(OraErvenyessegKezdeteImportData)) { //NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú! if (!OraErvenyessegKezdete.HasValue) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete.ToLowerInvariant(), OraErvenyessegKezdeteImportData)); } else { if (OraErvenyessegKezdete < OraErvenyessegMinDate) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidKorabbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, OraErvenyessegKezdete.Value.ToString(Constants.ToStringPattern.HungarianDate), korabbiMessage.ToLowerInvariant(), OraErvenyessegMinDate.ToString(Constants.ToStringPattern.HungarianDate))); } else if (OraErvenyessegKezdete > OraErvenyessegMaxDate) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, OraErvenyessegKezdete.Value.ToString(Constants.ToStringPattern.HungarianDate), kesobbiMessage.ToLowerInvariant(), OraErvenyessegMaxDate.ToString(Constants.ToStringPattern.HungarianDate))); } } } //NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy sikerült-e átkonvertálni a megfelelő típusra. // Ha nincs, akkor azt később beállítjuk a tanév utolsó tanítási napjára, de azt nem kell validálnunk! if (!string.IsNullOrWhiteSpace(OraErvenyessegVegeImportData)) { //NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú! if (!OraErvenyessegVege.HasValue) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege.ToLowerInvariant(), OraErvenyessegVegeImportData)); } else { if (OraErvenyessegVege < OraErvenyessegMinDate) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidKorabbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege, OraErvenyessegVege.Value.ToString(Constants.ToStringPattern.HungarianDate), korabbiMessage.ToLowerInvariant(), OraErvenyessegMinDate.ToString(Constants.ToStringPattern.HungarianDate))); } else if (OraErvenyessegVege > OraErvenyessegMaxDate) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege, OraErvenyessegVege.Value.ToString(Constants.ToStringPattern.HungarianDate), kesobbiMessage.ToLowerInvariant(), OraErvenyessegMaxDate.ToString(Constants.ToStringPattern.HungarianDate))); } } } if (OraErvenyessegKezdete.HasValue && OraErvenyessegVege.HasValue) { if (OraErvenyessegKezdete > OraErvenyessegVege) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, OraErvenyessegKezdete.Value.ToString(Constants.ToStringPattern.HungarianDate), ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege.ToLowerInvariant(), OraErvenyessegVege.Value.ToString(Constants.ToStringPattern.HungarianDate))); } } if (!HetirendTipusId.IsEntityId()) { yield return new ValidationResult(string.Format(ImportExportOrarendResource.InvalidOrarendHetirend, HetirendImportData)); } //NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy sikerült-e átkonvertálni a megfelelő típusra. if (!string.IsNullOrWhiteSpace(NapImportData)) { //NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú! if (!HetNapjaTipusId.IsEntityId()) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidNumberFormat, ImportExportOrarendResource.ImportHeaderNameNap.ToLowerInvariant(), NapImportData)); } else { bool isErvenyesNap = true; switch (FoglalkozasokRogziteseHetvegereId) { case (int)FoglalkozasokRogziteseHetvegere.CsakSzombat: isErvenyesNap = HetNapjaTipusId != (int)HetNapjaTipusEnum.Vasarnap; break; case (int)FoglalkozasokRogziteseHetvegere.NemEngedelyezett: isErvenyesNap = HetNapjaTipusId != (int)HetNapjaTipusEnum.Vasarnap && HetNapjaTipusId != (int)HetNapjaTipusEnum.Szombat; break; } if (!isErvenyesNap) { yield return new ValidationResult(string.Format(ImportExportOrarendResource.InvalidNapirend, HetNapjaTipusId.GetDisplayName(_tanevId))); } } } if (!IsNapirendImport) { //NOTE: Ha nincs megadva érték az import data-ban, akkor hiba, ha van, meg kell vizsgálni, hogy sikerült-e átkonvertálni a megfelelő típusra. if (string.IsNullOrWhiteSpace(OraImportData)) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidNumberFormat, ImportExportOrarendResource.ImportHeaderNameOra.ToLowerInvariant(), OraImportData)); } else { //NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú! if (!OraSorszam.HasValue) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidNumberFormat, ImportExportOrarendResource.ImportHeaderNameOra.ToLowerInvariant(), OraImportData)); } else { //NOTE: Ha nincs csengetési rend vagy nem szerepel az óraszám a csengetési rendben akkor hibát dobunk! if (!CsengetesiRendId.IsEntityId()) { yield return new ValidationResult(ImportExportOrarendResource.InvalidCsengetesiRend); } else { //NOTE: Korábban beállítottuk a CsengetesiRendOraId az óra sorszám alapján, ezért ha a CsengetesiRendOraId-nak nincs értéke, akkor nem megfelelő az óra sorszám! if (!CsengetesiRendOraId.IsEntityId()) { yield return new ValidationResult(string.Format(ImportExportOrarendResource.InvalidOraszam, OraSorszam)); } } } } } else { if (string.IsNullOrWhiteSpace(FoglalkozasKezdeteImportData) || !OraKezdete.HasValue) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidFormat, ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete.ToLowerInvariant(), FoglalkozasKezdeteImportData)); } if (string.IsNullOrWhiteSpace(FoglalkozasVegeImportData) || !OraVege.HasValue) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidFormat, ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege.ToLowerInvariant(), FoglalkozasVegeImportData)); } if (OraKezdete.HasValue && OraVege.HasValue) { if (OraKezdete > OraVege) { yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidKesobbiIdopont, ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete, OraKezdete.Value.ToString(Constants.ToStringPattern.HungarianTime), ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege.ToLowerInvariant(), OraVege.Value.ToString(Constants.ToStringPattern.HungarianTime))); } } } if (string.IsNullOrWhiteSpace(OsztalyNev) && string.IsNullOrWhiteSpace(CsoportNev)) { yield return new ValidationResult(ImportExportTantargyfelosztasResource.OsztalyOrCsoportRequired); } else if (OsztalyNev == CsoportNev) { yield return new ValidationResult(ImportExportTantargyfelosztasResource.OsztalyCsoportNemLehetEgyenlo); } } #endregion Validate } public class OrarendImportJsonItemCo : BaseImportJsonItemCo { public OrarendImportJsonItemCo(OrarendImportItemCo importItemCo, OrarendImportFileUploadCo orarendImportFileUploadCo, bool isVegzos, IConnectionType connectionType) : base(connectionType.TanevId, connectionType.IntezmenyId, connectionType.FelhasznaloId) { OsztalyCsoportNev = importItemCo.OsztalyCsoportNev; TantargyNev = importItemCo.TantargyNev; TeremNev = importItemCo.TeremNev; OraSorszam = importItemCo.OraSorszam; CsengetesiRendId = importItemCo.CsengetesiRendId; CsengetesiRendOraId = importItemCo.CsengetesiRendOraId; //NOTE: Az TanarId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van tanár id-ja! TanarId = importItemCo.TanarId.Value; TanarNev = importItemCo.TanarNev; //NOTE: Az HetirendTipusId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van hetirend típusa! HetirendTipusId = importItemCo.HetirendTipusId.Value; HetirendTipusNev = importItemCo.HetirendTipusNev; DateTime oraErvenyessegKezdete = importItemCo.OraErvenyessegKezdete ?? orarendImportFileUploadCo.OraErvenyessegMinDate; OraErvenyessegKezdete = oraErvenyessegKezdete; OraErvenyessegKezdeteString = oraErvenyessegKezdete.ToString(Constants.ToStringPattern.SortableDateTimePattern); DateTime oraErvenyessegVege; //NOTE: Ha a végzős évfolyamú az osztály és az utolsó tanítási nap későbbi, mint az felhasználó által beállított óra érvényesség kezdete, // akkor az eredeti utolsó tanítási napig állítjuk be az óra érvényesség végét, különben a végzősig. if (isVegzos && oraErvenyessegKezdete < orarendImportFileUploadCo.OraErvenyessegVegzosMaxDate.AddDays(1)) { oraErvenyessegVege = importItemCo.OraErvenyessegVege == null || importItemCo.OraErvenyessegVege.Value > orarendImportFileUploadCo.OraErvenyessegVegzosMaxDate ? orarendImportFileUploadCo.OraErvenyessegVegzosMaxDate : importItemCo.OraErvenyessegVege.Value; } else { oraErvenyessegVege = importItemCo.OraErvenyessegVege ?? orarendImportFileUploadCo.OraErvenyessegMaxDate; } OraErvenyessegVege = oraErvenyessegVege; //NOTE: Az OraErvenyessegVege 00:00-t tartalmaz, de aznap napközben még lehet óra, ezért a következő nap 00:00 időpont a jó és azt mentjük a db-be, // kivéve, amikor az OraErvenyessegKezdete és OraErvenyessegVege megegyezik, mert akkor akkor meg kell egyezniük(és lehet akár egyedi nap is)! if (importItemCo.IsEgyediNap) { OraErvenyessegVegeString = oraErvenyessegVege.ToString(Constants.ToStringPattern.SortableDateTimePattern); EgyediNapCo egyediNapCo = new NaptariNapHelper(connectionType).GetIsEgyediNapByDateAndOsztalyCsoportNev(oraErvenyessegKezdete, importItemCo.OsztalyCsoportNev); IsEgyediNap = SDAConvert.ToSDABoolean(egyediNapCo.IsEgyediNap); HetNapjaTipusId = egyediNapCo.IsEgyediNap ? egyediNapCo.HetNapjaTipusId.Value : importItemCo.HetNapjaTipusId.Value; } else { OraErvenyessegVegeString = oraErvenyessegVege.AddDays(1).ToString(Constants.ToStringPattern.SortableDateTimePattern); IsEgyediNap = SDAConvert.ToSDABoolean(false); //NOTE: Az HetNapjaTipusId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van hét napjának típusa! HetNapjaTipusId = importItemCo.HetNapjaTipusId.Value; } IsKezzelFelvettEgyediNap = IsEgyediNap; //NOTE: Az OraKezdete.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van óra kezdete! DateTime oraKezdete = importItemCo.OraKezdete.Value; OraKezdete = oraKezdete; OraKezdeteString = oraKezdete.ToString(Constants.ToStringPattern.SortableDateTimePattern); //NOTE: Az OraVege.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van óra vége! DateTime oraVege = importItemCo.OraVege.Value; OraVege = oraVege; OraVegeString = oraVege.ToString(Constants.ToStringPattern.SortableDateTimePattern); LineNumber = importItemCo.LineNumber; Operation = importItemCo.Operation; } #region Import Json Properties [JsonProperty("OsztalyCsoportNev")] public string OsztalyCsoportNev { get; set; } [JsonProperty("TantargyNev")] public string TantargyNev { get; set; } [JsonProperty("TeremNev")] public string TeremNev { get; set; } [JsonIgnore] public string TanarNev { get; set; } [JsonProperty("C_TANARID")] public int TanarId { get; set; } [JsonProperty("C_HETIREND")] public int HetirendTipusId { get; set; } [JsonIgnore] public string HetirendTipusNev { get; set; } [JsonProperty("C_HETNAPJA")] public int HetNapjaTipusId { get; set; } [JsonProperty("C_ORASZAM")] public int? OraSorszam { get; set; } [JsonIgnore] public DateTime OraKezdete { get; set; } [JsonProperty("C_ORAKEZDETE")] public string OraKezdeteString { get; set; } [JsonIgnore] public DateTime OraVege { get; set; } [JsonProperty("C_ORAVEGE")] public string OraVegeString { get; set; } [JsonIgnore] public DateTime? OraErvenyessegKezdete { get; set; } [JsonProperty("C_ORAERVENYESSEGKEZDETE")] public string OraErvenyessegKezdeteString { get; set; } [JsonIgnore] public DateTime? OraErvenyessegVege { get; set; } [JsonProperty("C_ORAERVENYESSEGVEGE")] public string OraErvenyessegVegeString { get; set; } [JsonProperty("C_CSENGETESIRENDID")] public int? CsengetesiRendId { get; set; } [JsonProperty("C_CSENGETESIRENDORAID")] public int? CsengetesiRendOraId { get; set; } [JsonProperty("C_EGYEDINAP")] public string IsEgyediNap { get; set; } [JsonProperty("C_ISKEZZELFELVETTEGYEDINAP")] public string IsKezzelFelvettEgyediNap { get; set; } #region Default Required Import Json Properties [JsonProperty("C_BONTOTT")] public string Bontott => SDAConvert.ToSDABoolean(false); [JsonProperty("C_ORATULAJDONOSID")] public int OratulajdonosId => Creator; #endregion Default Required Import Json Properties #endregion Import Json Properties } }