init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
581
Kreta.BusinessLogic/HelperClasses/ImportCo/OrarendImportCo.cs
Normal file
581
Kreta.BusinessLogic/HelperClasses/ImportCo/OrarendImportCo.cs
Normal file
|
@ -0,0 +1,581 @@
|
|||
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
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue