581 lines
31 KiB
C#
581 lines
31 KiB
C#
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<OrarendImportItemCo> MainImportItemList { get; set; } = new List<OrarendImportItemCo>();
|
|
|
|
[JsonIgnore]
|
|
public List<OrarendImportItemCo> NemImportalhatoItemList { get; set; } = new List<OrarendImportItemCo>();
|
|
|
|
[JsonProperty("T_ORARENDIORA_OSSZES")]
|
|
public List<OrarendImportJsonItemCo> MainImportJsonItemList { get; set; }
|
|
|
|
[JsonProperty("T_TEREM_OSSZES")]
|
|
public List<TeremImportJsonItemCo> TeremImportJsonItemList { get; set; }
|
|
|
|
[JsonProperty("T_FOGLALKOZAS_OSSZES")]
|
|
public List<TantargyfelosztasImportJsonItemCo> 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<TanevrendOsztalyokkalNaptipusTulajdonsagokkalCO> TanevrendOsztalyokkalNaptipusTulajdonsagokkalCOs { get; set; }
|
|
|
|
[JsonIgnore]
|
|
public List<string> TantargyNincsBeloleOra { get; set; }
|
|
|
|
[JsonIgnore]
|
|
public List<TantargyfelosztasItemCo> TantargyfelosztasCoList { get; set; }
|
|
|
|
[JsonIgnore]
|
|
public SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum OrarendiElemekRogzitesenekElofeltetele { get; set; }
|
|
|
|
public Dictionary<int, List<ValidationResult>> Validate(bool isAktivTanev)
|
|
{
|
|
Dictionary<int, List<ValidationResult>> 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<ValidationResult>();
|
|
|
|
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<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
|
|
var duplicatedRowConditonTextList = new List<string>();
|
|
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<BaseTantargyfelosztasImportItemCo> GetBaseImportItemCoList()
|
|
{
|
|
var result = MainImportItemList.ConvertAll(new Converter<OrarendImportItemCo, BaseTantargyfelosztasImportItemCo>(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<int, string> HetirendTipusDictionary { get; set; }
|
|
|
|
public int? CsengetesiRendId { get; set; }
|
|
|
|
public int? CsengetesiRendOraId { get; set; }
|
|
|
|
public List<CsengetesiRendOraCO> 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<ValidationResult> 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<HetNapjaTipusEnum>(_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
|
|
}
|
|
}
|