This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,779 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class AlkalmazottMunkaugyiAdatokImportCo : BaseImportCo
{
[JsonIgnore]
public List<AlkalmazottMunkaugyiAdatokImportItemCo> MainImportItemList { get; set; } = new List<AlkalmazottMunkaugyiAdatokImportItemCo>();
[JsonIgnore]
public List<AlkalmazottMunkaugyiAdatokImportItemCo> NemImportalhatoItemList { get; set; } = new List<AlkalmazottMunkaugyiAdatokImportItemCo>();
[JsonProperty("T_MUNKAUGYIADATOK_OSSZES")]
public List<AlkalmazottMunkaugyiAdatokImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<AlkalmazottMunkaugyiAdatokCo> AlkalmazottMunkaugyiAdatokCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate(bool isSzakkepzoIntezmeny)
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (AlkalmazottMunkaugyiAdatokImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
//NOTE: Levalidáljuk, hogy az alkalmazott szerepel-e az adatbázisban!
if (!AlkalmazottMunkaugyiAdatokCoList.Any(x =>
$"{x.FelhasznaloVezeteknevComparableString} {x.FelhasznaloKeresztnevComparableString}" == $"{importItem.Vezeteknev?.ToComparableString()} {importItem.Keresztnev?.ToComparableString()}" &&
x.FelhasznaloAnyjaNeveComparableString == importItem.AnyjaNeve?.ToComparableString() &&
x.FelhasznaloSzuletesiIdo == importItem.SzuletesiIdo &&
x.FelhasznaloSzuletesiHelyComparableString == importItem.SzuletesiHely?.ToComparableString()))
{
validationResultList.Add(new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaAPedagogusNemSzerepelAzAdatbazisban));
}
if (!string.IsNullOrWhiteSpace(importItem.OktatasiAzonosito))
{
string oktatasiAzonositoToCompare = importItem.OktatasiAzonosito.ToComparableString();
if (isSzakkepzoIntezmeny && !string.IsNullOrWhiteSpace(oktatasiAzonositoToCompare) && !Extensions.FelhasznaloExtensions.IsValidOktatasiAzonosito(oktatasiAzonositoToCompare))
{
validationResultList.Add(new ValidationResult(ErrorResource.AMegadottOktatasiAzonositoHibas));
}
//NOTE: Levalidáljuk, hogy az oktatási azonosítóval szerepel-e alkalmazott az adatbázisban, de nem a alkalmazott maga az!
if (AlkalmazottMunkaugyiAdatokCoList.Any(x =>
x.FelhasznaloOktatasiAzonositoComparableString == oktatasiAzonositoToCompare && (
$"{x.FelhasznaloVezeteknevComparableString} {x.FelhasznaloKeresztnevComparableString}" != $"{importItem.Vezeteknev?.ToComparableString()} {importItem.Keresztnev?.ToComparableString()}" ||
x.FelhasznaloAnyjaNeveComparableString != importItem.AnyjaNeve?.ToComparableString() ||
x.FelhasznaloSzuletesiIdo != importItem.SzuletesiIdo ||
x.FelhasznaloSzuletesiHelyComparableString != importItem.SzuletesiHely?.ToComparableString())))
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaAMegadottOktatasiAzonositovalSzerepelPedagogusAzAdatbazisban, importItem.PedagogusOktatasiAzonositoImportData)));
}
//NOTE: Levalidáljuk, hogy ugyanazzal az oktatási azonosítóval csak egyszer szerepeljen alkalmazott a dokumnetumban!
if (MainImportItemList.Count(x => x.OktatasiAzonosito.ToComparableString() == oktatasiAzonositoToCompare) > 1)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportCommonResource.OktatasiAzonositoExistsMoreTimesInDocument, importItem.OktatasiAzonosito)));
}
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusVezetekneve,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusUtoneve,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusAnyjaNeve,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiDatuma,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiHelye
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class AlkalmazottMunkaugyiAdatokImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private AlkalmazottMunkaugyiAdatokImportItemCo() { }
public AlkalmazottMunkaugyiAdatokImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
#region Fields
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNeve), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNeve), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNevElotag), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNevElotag), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusNevElotagImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusVezetekneve), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusVezetekneve), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusVezetekneveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusUtoneve), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusUtoneve), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusUtoneveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusAnyjaNeve), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusAnyjaNeve), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusAnyjaNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 05, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiDatuma), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(25, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiDatuma), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusSzuletesiDatumaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 06, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiHelye), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiHelye), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusSzuletesiHelyeImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 07, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusOktatasiAzonosito), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(11, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[KretaRegularExpression(Constants.RegularExpressions.OktatasiAzonosito, ErrorMessageResourceName = nameof(ErrorResource.OktatasiAzonositoFormatumaNemMegfelelo), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusOktatasiAzonosito), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusOktatasiAzonositoImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 08, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAdoazonositoJel), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(10, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAdoazonositoJel), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string AdoazonositoJelImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 09, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusFokozat), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusFokozat), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string PedagogusFokozatImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 10, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkakor), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkakor), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string MunkakorImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 11, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasiJogviszony), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasiJogviszony), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string FoglalkoztatasiJogviszonyImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 12, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string KotelezoOraszamaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 13, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string MunkaidokedvezmenyOraszamaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 14, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFeladattalTerheltOraszamOka), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFeladattalTerheltOraszamOka), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string FeladattalTerheltOraszamOkaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 15, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAlkalmazasKezdete), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(25, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAlkalmazasKezdete), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string AlkalmazasKezdeteImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 16, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasTipusa), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasTipusa), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string FoglalkoztatasTipusaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 17, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameVezetoiOraszamOka), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameVezetoiOraszamOka), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string VezetoiOraszamOkaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 18, nameof(CommonResource.Feladatellatasihely), typeof(CommonResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(CommonResource.Feladatellatasihely), ResourceType = typeof(CommonResource))]
public string FeladatellatasiHelyImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 19, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosanTavollevo), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosanTavollevo), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string TartosanTavollevoImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 20, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameBetoltetlenAllashely), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameBetoltetlenAllashely), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string BetoltetlenAllashelyImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 21, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKulsoAlkalmazott), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKulsoAlkalmazott), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string KulsoAlkalmazottImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 22, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoallasu), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoallasu), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string FoallasuImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 23, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameNyugdijasTovabbfoglalkoztatott), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameNyugdijasTovabbfoglalkoztatott), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string NyugdijasTovabbfoglalkoztatottImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 24, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoiVagyvizsgaelnokiTevekenyseg), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoiVagyvizsgaelnokiTevekenyseg), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string SzakertoiVagyVizsgaelnokiTevekenyseguImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 25, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakmaiTovabbkepzes), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakmaiTovabbkepzes), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string SzakmaiTovabbkepzesImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 26, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakvizsga), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakvizsga), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string SzakvizsgaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 27, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoIntezmenyenBelul), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoIntezmenyenBelul), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string AttanitoIntezmenyenBelulImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 28, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoMasIntezmenynel), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoMasIntezmenynel), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string IsAttanitoMasIntezmenynelImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 29, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosHelyettesites), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosHelyettesites), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string IsTartosanTavollevoHelyettesitesImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 30, nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoSzaktanacsado), typeof(ImportExportAlkalmazottMunkaugyiAdatokResource), ForcedType = typeof(bool))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoSzaktanacsado), ResourceType = typeof(ImportExportAlkalmazottMunkaugyiAdatokResource))]
public string SzakertoImportData { get; set; }
public string Nev => GetStringValue(PedagogusNeveImportData);
public string NevElotag => GetStringValue(PedagogusNevElotagImportData);
public string Vezeteknev => GetStringValue(PedagogusVezetekneveImportData);
public string Keresztnev => GetStringValue(PedagogusUtoneveImportData);
public string AnyjaNeve => GetStringValue(PedagogusAnyjaNeveImportData);
public DateTime? SzuletesiIdo => GetDateTimeValue(PedagogusSzuletesiDatumaImportData);
public string SzuletesiIdoString => GetDateTimeString(SzuletesiIdo);
public string SzuletesiHely => GetStringValue(PedagogusSzuletesiHelyeImportData);
public string AdoazonositoJel => GetStringValue(AdoazonositoJelImportData);
public int? BesorolasiFokozat => string.IsNullOrWhiteSpace(PedagogusFokozatImportData) ? (int)BesorolasiFokozatTipusEnum.na : ((int)GeneratedAdatszotarTipusEnum.BesorolasiFokozatTipus).GetItemIdByTypeAndName(PedagogusFokozatImportData, _tanevId);
public int? Munkakor => string.IsNullOrWhiteSpace(MunkakorImportData) ? (int)MunkakorTipusEnum.na : ((int)GeneratedAdatszotarTipusEnum.MunkakorTipus).GetItemIdByTypeAndName(MunkakorImportData, _tanevId);
public int? FoglalkoztatasiJogviszony => string.IsNullOrWhiteSpace(FoglalkoztatasiJogviszonyImportData) ? (int)MunkaviszonyTipusEnum.na : ((int)GeneratedAdatszotarTipusEnum.MunkaviszonyTipus).GetItemIdByTypeAndName(FoglalkoztatasiJogviszonyImportData, _tanevId);
public int? FoglalkoztatasTipusa => string.IsNullOrWhiteSpace(FoglalkoztatasTipusaImportData) ? (int)FoglalkoztatasTipusaEnum.TeljesMunkaidos : ((int)GeneratedAdatszotarTipusEnum.FoglalkoztatasTipusa).GetItemIdByTypeAndName(FoglalkoztatasTipusaImportData, _tanevId);
public double? KotelezoOraszama => GetDoubleValue(KotelezoOraszamaImportData);
public double? MunkaidoKedvezmenyOraszama => GetDoubleValue(MunkaidokedvezmenyOraszamaImportData);
public int? MunkaidoKedvezmenyOka => string.IsNullOrWhiteSpace(FeladattalTerheltOraszamOkaImportData) ? (int)MunkaidoKedvezmenyOkaEnum.Na : ((int)GeneratedAdatszotarTipusEnum.MunkaidoKedvezmenyOka).GetItemIdByTypeAndName(FeladattalTerheltOraszamOkaImportData, _tanevId);
public int? VezetoiOraszamOka => string.IsNullOrWhiteSpace(VezetoiOraszamOkaImportData) ? (int)VezetoiOraszamokTipusEnum.Nincs : ((int)GeneratedAdatszotarTipusEnum.VezetoiOraszamokTipus).GetItemIdByTypeAndName(VezetoiOraszamOkaImportData, _tanevId);
public DateTime? AlkalmazasKezdete => GetDateTimeValue(AlkalmazasKezdeteImportData);
public string OktatasiAzonosito => GetStringValue(PedagogusOktatasiAzonositoImportData);
public string FeladatellatasiHely => GetStringValue(FeladatellatasiHelyImportData);
public bool? TartosTavollevo => GetBooleanValue(TartosanTavollevoImportData);
public bool? BetoltetlenAllashely => GetBooleanValue(BetoltetlenAllashelyImportData);
public bool? Szakerto => GetBooleanValue(SzakertoImportData);
public bool? Foallasu => GetBooleanValue(FoallasuImportData);
public bool? Nyugdijas => GetBooleanValue(NyugdijasTovabbfoglalkoztatottImportData);
public bool? SzakertoiVagyVizsgaelnokiTevekenysegu => GetBooleanValue(SzakertoiVagyVizsgaelnokiTevekenyseguImportData);
public bool? SzakmaiTovabbkepzes => GetBooleanValue(SzakmaiTovabbkepzesImportData);
public bool? Szakvizsga => GetBooleanValue(SzakvizsgaImportData);
public bool? Attanito => GetBooleanValue(AttanitoIntezmenyenBelulImportData);
public bool? AttanitoMasIntezmenynel => GetBooleanValue(IsAttanitoMasIntezmenynelImportData);
public bool? IsTartosTavolletHelyettesites => GetBooleanValue(IsTartosanTavollevoHelyettesitesImportData);
public int? FeladatellatasiHelyId { get; set; }
public bool? KulsoAlkalmazott => GetBooleanValue(KulsoAlkalmazottImportData);
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//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(PedagogusSzuletesiDatumaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!SzuletesiIdo.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiDatuma, PedagogusSzuletesiDatumaImportData));
}
}
//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(AlkalmazasKezdeteImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!AlkalmazasKezdete.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAlkalmazasKezdete, AlkalmazasKezdeteImportData));
}
}
//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(PedagogusFokozatImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!BesorolasiFokozat.HasValue)
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenPedagogusFokozat);
}
}
//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(MunkakorImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!Munkakor.HasValue)
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenMunkakor);
}
}
//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(FoglalkoztatasiJogviszonyImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!FoglalkoztatasiJogviszony.HasValue)
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenFoglalkoztatasiJogviszony);
}
}
//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(FoglalkoztatasTipusaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!FoglalkoztatasTipusa.HasValue)
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenFoglalkoztatasTipusa);
}
}
//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(KotelezoOraszamaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!KotelezoOraszama.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNemMegfeleloAz0Formatuma, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama));
}
else
{
if (KotelezoOraszama < 0)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaAz0NemLehetKisebbMint0, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama));
}
else if (KotelezoOraszama > 50)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaAz0NemLehetNagyobbMint50, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama));
}
}
}
else
{
if (FoglalkoztatasTipusa == (int)FoglalkoztatasTipusaEnum.Oraado || VezetoiOraszamOka != (int)VezetoiOraszamokTipusEnum.Nincs)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaOraszamMegadasaKotelezo,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameVezetoiOraszamOka,
ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasTipusa));
}
}
//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(MunkaidokedvezmenyOraszamaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!MunkaidoKedvezmenyOraszama.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNemMegfeleloAz0Formatuma, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama));
}
else
{
if (MunkaidoKedvezmenyOraszama < 0)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaAz0NemLehetKisebbMint0, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama));
}
else if (MunkaidoKedvezmenyOraszama > 50)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaAz0NemLehetNagyobbMint50, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama));
}
}
}
//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(FeladattalTerheltOraszamOkaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!MunkaidoKedvezmenyOka.HasValue)
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenFeladattalTerheltOraszamOka);
}
}
//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(VezetoiOraszamOkaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!VezetoiOraszamOka.HasValue)
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenVezetoiOraszamOka);
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy létezik-e a feladatellátási hely a tanévben!
if (!string.IsNullOrWhiteSpace(FeladatellatasiHely))
{
if (!FeladatellatasiHelyId.IsEntityId())
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaNincsIlyenFeladatellatasiHelyEbbenATanevben);
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(IsTartosanTavollevoHelyettesitesImportData))
{
if (!IsTartosTavolletHelyettesites.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosHelyettesites));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(TartosanTavollevoImportData))
{
if (!TartosTavollevo.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosanTavollevo));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(BetoltetlenAllashelyImportData))
{
if (!BetoltetlenAllashely.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameBetoltetlenAllashely));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(FoallasuImportData))
{
if (!Foallasu.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoallasu));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(NyugdijasTovabbfoglalkoztatottImportData))
{
if (!Nyugdijas.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameNyugdijasTovabbfoglalkoztatott));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(SzakertoiVagyVizsgaelnokiTevekenyseguImportData))
{
if (!SzakertoiVagyVizsgaelnokiTevekenysegu.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoiVagyvizsgaelnokiTevekenyseg));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(SzakmaiTovabbkepzesImportData))
{
if (!SzakmaiTovabbkepzes.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakmaiTovabbkepzes));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(SzakvizsgaImportData))
{
if (!Szakvizsga.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakvizsga));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(AttanitoIntezmenyenBelulImportData))
{
if (!Attanito.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoIntezmenyenBelul));
}
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, meg kell vizsgálni, hogy valid-e az érték!
if (!string.IsNullOrWhiteSpace(IsAttanitoMasIntezmenynelImportData))
{
if (!AttanitoMasIntezmenynel.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaErvenytelenAdatAz0MezobenAzAlabbiErtekeketLehetMegadni, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoMasIntezmenynel));
}
}
if (Szakerto.HasValue && Szakerto.Value &&
BesorolasiFokozat.HasValue && (BesorolasiFokozat.Value != (int)BesorolasiFokozatTipusEnum.kutatotanar && BesorolasiFokozat.Value != (int)BesorolasiFokozatTipusEnum.mesterpedagogus))
{
yield return new ValidationResult(ImportExportAlkalmazottMunkaugyiAdatokResource.HibaSzakertoSzaktanacsado);
}
}
#endregion Validate
}
public class AlkalmazottMunkaugyiAdatokImportJsonItemCo : BaseImportJsonItemCo
{
public AlkalmazottMunkaugyiAdatokImportJsonItemCo(AlkalmazottMunkaugyiAdatokImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
// T_ALKALMAZOTT
PedagogusNeve = importItemCo.Nev;
PedagogusElotag = importItemCo.NevElotag;
PedagogusVezeteknev = importItemCo.Vezeteknev;
PedagogusUtonev = importItemCo.Keresztnev;
PedagogusAnyjaNeve = importItemCo.AnyjaNeve;
SzuletesiDatum = importItemCo.SzuletesiIdo;
SzuletesiHely = importItemCo.SzuletesiHely;
AdoazonositoJel = importItemCo.AdoazonositoJel;
IsFoallasu = importItemCo.Foallasu;
IsSzakertoiVagyVizsgaelnokiTevekenysegu = importItemCo.SzakertoiVagyVizsgaelnokiTevekenysegu;
IsSzakmaiTovabbkepzes = importItemCo.SzakmaiTovabbkepzes;
IsSzakvizsga = importItemCo.Szakvizsga;
OktatasiAzonosito = importItemCo.OktatasiAzonosito;
// T_MUNKAUGYIADATOK
BesorolasiFokozat = importItemCo.BesorolasiFokozat;
Munkakor = importItemCo.Munkakor;
Munkaviszony = importItemCo.FoglalkoztatasiJogviszony;
KotelezoOraszam = importItemCo.KotelezoOraszama;
MunkaidoKedvezmenyOraszam = importItemCo.MunkaidoKedvezmenyOraszama;
MunkaidoKedvezmenyOka = importItemCo.MunkaidoKedvezmenyOka;
AlkalmazasKezdete = importItemCo.AlkalmazasKezdete;
FoglalkoztatasTipus = importItemCo.FoglalkoztatasTipusa;
VezetoiOraszamOka = importItemCo.VezetoiOraszamOka;
FeladataellatasiHely = importItemCo.FeladatellatasiHely;
//NOTE: Az FeladatellatasiHelyId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van id-ja!
FeladatellatasiHelyId = importItemCo.FeladatellatasiHelyId.Value;
IsTartosTavollet = importItemCo.TartosTavollevo;
IsTartosTavollevoHelyettesites = importItemCo.IsTartosTavolletHelyettesites;
IsKulsoAlkalmazott = importItemCo.KulsoAlkalmazott;
IsBetoltetlenAllashely = importItemCo.BetoltetlenAllashely;
IsNyugdijas = importItemCo.Nyugdijas;
IsAttanito = importItemCo.Attanito;
IsAttanitoMasIntezmenynel = importItemCo.AttanitoMasIntezmenynel;
IsSzakerto = importItemCo.Szakerto;
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Ignore Json Propreties
[JsonIgnore]
public string PedagogusNeve { get; set; }
[JsonIgnore]
public string PedagogusElotag { get; set; }
[JsonIgnore]
public string PedagogusVezeteknev { get; set; }
[JsonIgnore]
public string PedagogusUtonev { get; set; }
[JsonIgnore]
public string PedagogusAnyjaNeve { get; set; }
[JsonIgnore]
public DateTime? SzuletesiDatum { get; set; }
[JsonIgnore]
public string SzuletesiHely { get; set; }
[JsonIgnore]
public string AdoazonositoJel { get; set; }
[JsonIgnore]
public string OktatasiAzonosito { get; set; }
[JsonIgnore]
public bool? IsFoallasu { get; set; }
[JsonIgnore]
public bool? IsSzakertoiVagyVizsgaelnokiTevekenysegu { get; set; }
[JsonIgnore]
public bool? IsSzakmaiTovabbkepzes { get; set; }
[JsonIgnore]
public bool? IsSzakvizsga { get; set; }
[JsonIgnore]
public string FeladataellatasiHely { get; set; }
#endregion Ignore Json Propreties
#region Import Json Properties
[JsonProperty("C_ALKALMAZASKEZDETE")]
public DateTime? AlkalmazasKezdete { get; set; }
[JsonProperty("C_KOTELEZOORASZAM")]
public double? KotelezoOraszam { get; set; }
[JsonProperty("C_MUNKAIDOKEDVEZMENYORASZAM")]
public double? MunkaidoKedvezmenyOraszam { get; set; }
[JsonProperty("C_MUNKAKORTIPUSA")]
public int? Munkakor { get; set; }
[JsonProperty("C_MUNKAVISZONYTIPUSA")]
public int? Munkaviszony { get; set; }
[JsonProperty("C_FOGLALKOZTATASTIPUS")]
public int? FoglalkoztatasTipus { get; set; }
[JsonProperty("C_VEZETOIORASZAMOK")]
public int? VezetoiOraszamOka { get; set; }
[JsonProperty("C_BETOLTETLENALLASHELY")]
public bool? IsBetoltetlenAllashely { get; set; }
[JsonProperty("C_ISKULSOALKALMAZOTT")]
public bool? IsKulsoAlkalmazott { get; set; }
[JsonProperty("C_TARTOSTAVOLLET")]
public bool? IsTartosTavollet { get; set; }
[JsonProperty("C_MUNKAIDOKEDVEZMENYOKA")]
public int? MunkaidoKedvezmenyOka { get; set; }
[JsonProperty("C_NYUGDIJAS")]
public bool? IsNyugdijas { get; set; }
[JsonProperty("C_ATTANITO")]
public bool? IsAttanito { get; set; }
[JsonProperty("C_FELADATELLATASIHELYID")]
public int FeladatellatasiHelyId { get; set; }
[JsonProperty("C_ALKALMAZOTTID")]
public int AlkalmazottId { get; set; }
[JsonProperty("C_BESOROLASIFOKOZAT")]
public int? BesorolasiFokozat { get; set; }
[JsonProperty("C_ATTANITOMASINTEZMENYNEL")]
public bool? IsAttanitoMasIntezmenynel { get; set; }
[JsonProperty("C_TARTOSHELYETTESITES")]
public bool? IsTartosTavollevoHelyettesites { get; set; }
[JsonProperty("C_ISSZAKERTOKUTATOTANAR")]
public bool? IsSzakerto { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ALKALMAZASMEGSZUNESE")]
public DateTime? AlkalmazasMegszunese => null;
[JsonProperty("C_MUNKAIDOKEDVEZMENYOKASZOVEG")]
public string MunkaidoKedvezmenyOkaSzoveg => "nincs";
[JsonProperty("C_PEDAGOGUSSTATUSZA")]
public string PedagogusStatusza => string.Empty;
[JsonProperty("C_RESZMUNKAIDOSZAZALEK")]
public int? ReszmunkaidoSzazalek => null;
[JsonProperty("C_UTAZOGYOGYPEDAGOGUS")]
public string IsUtazoPedagogus => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_CSOKKENTETTMUNKAIDOS")]
public string IsCsokkentettMunkaidos => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SZAKERTOMESTERPEDAGOGUS")]
public string IsSzakertoMesterPedagogus => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SZABADALLASHELY")]
public string IsSzabadAllashely => SDAConvert.ToSDABoolean(false);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,60 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Kreta.Core;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class BaseImportCo
{
[JsonIgnore]
public int ImportMuvelet { get; set; }
protected static void ValidateDuplicatedRows(Dictionary<int, List<ValidationResult>> validationResultDictionary, Dictionary<int, string> lineNumberCompareHashDictionary, List<string> duplicatedRowConditonTextList)
{
//NOTE: Levalidáljuk a duplikált sorokat!
// Azért van szükség Dictionary-re, mert így nagyságrendekkel gyorsabb a keresés!
// Először csoportosítjuk a sorokat egyezőség(compareHash) szerint.
var duplicatedRowDictionary = new Dictionary<string, List<int>>();
foreach (KeyValuePair<int, string> item in lineNumberCompareHashDictionary)
{
int lineNumber = item.Key;
string compareHash = item.Value;
if (compareHash == Constants.General.ImportMD5InvalidInput)
{
continue;
}
if (duplicatedRowDictionary.ContainsKey(compareHash))
{
duplicatedRowDictionary[compareHash].Add(lineNumber);
}
else
{
duplicatedRowDictionary.Add(compareHash, new List<int> { lineNumber });
}
}
//NOTE: Ha egynél több sor kerül egy elemhez, akkor kiírjuk hibának az adott sorokhoz, hogy többször szerepel.
foreach (KeyValuePair<string, List<int>> item in duplicatedRowDictionary)
{
List<int> lineNumberList = item.Value;
if (lineNumberList.Count > 1)
{
foreach (var lineNumber in lineNumberList)
{
var validationResult = new ValidationResult(string.Format(CommonResource.DuplicatedRow0, string.Join(", ", duplicatedRowConditonTextList)));
if (validationResultDictionary.ContainsKey(lineNumber))
{
validationResultDictionary[lineNumber].Add(validationResult);
}
else
{
validationResultDictionary.Add(lineNumber, new List<ValidationResult> { validationResult });
}
}
}
}
}
}
}

View file

@ -0,0 +1,166 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class BaseImportItemCo
{
public int? Id;
public int LineNumber { get; set; }
public int Operation { get; set; }
public string CompareHash { get; set; }
public List<string> ErrorList { get; set; } = new List<string>();
public DateTime Now => DateTime.Now;
#region Methods
public static bool? GetBooleanValue(string data, bool? defaultValue = null)
{
bool? result = !string.IsNullOrWhiteSpace(data) ? data.GetBooleanValueFromString() : defaultValue;
return result;
}
protected string GetStringValue(string data, string defaultValue = null)
{
string result = !string.IsNullOrWhiteSpace(data) ? data : defaultValue;
return result;
}
protected int? GetIntValue(string data, int? defaultValue = null)
{
int? result = !string.IsNullOrWhiteSpace(data) ? data.ToNullableInt() : defaultValue;
return result;
}
protected double? GetDoubleValue(string data, double? defaultValue = null)
{
double? result = !string.IsNullOrWhiteSpace(data) ? data.GetDoubleFromString() : defaultValue;
return result;
}
protected DateTime? GetDateTimeValue(string data, DateTime? defaultValue = null)
{
DateTime? result = !string.IsNullOrWhiteSpace(data) ? data.GetDateTimeFromString() : defaultValue;
return result;
}
public static DateTime? GetDateTimeValueFromTimeString(string data, DateTime? defaultValue = null)
{
var trimmed = data.ReplaceMultipleSpacesAndTrim();
if (string.IsNullOrWhiteSpace(trimmed))
{
return defaultValue;
}
var timeRegex = new Regex(@"([01]?[0-9]|2[0-3]):([0-5][0-9])");
var matches = timeRegex.Match(trimmed);
if (matches.Groups.Count < 3)
{
return null;
}
if (!int.TryParse(matches.Groups[1].Value.ReplaceMultipleSpacesAndTrim(), out var hours) ||
!int.TryParse(matches.Groups[2].Value.ReplaceMultipleSpacesAndTrim(), out var minutes))
{
return null;
}
if (hours < 0 || hours >= 24)
{
return null;
}
if (minutes < 0 || minutes >= 60)
{
return null;
}
return new DateTime(1900, 1, 1).AddHours(hours).AddMinutes(minutes);
}
protected string GetDateTimeString(DateTime? data)
{
//NOTE: Azért a SortableDateTimePattern-t használjuk, mert az sql ezt a formátumot hibátlanul kezeli!
string result = data?.ToString(Constants.ToStringPattern.SortableDateTimePattern);
return result;
}
//NOTE: Erre akkor van szükség, ha névegyezőség van, de külön személyről van szó. Akkor a születési dátummal tudjuk megkülönböztetni.
// Az alábbi formátumot kell alkalmaznia a felhasználónak: Tanár Neve (1985.01.01.)
protected DateTime? GetSzuletesIdoFromNev(string nevImportData)
{
if (string.IsNullOrWhiteSpace(nevImportData))
{
return null;
}
Regex regex = new Regex(@"\((.+?)\)");
MatchCollection matchCollection = regex.Matches(nevImportData);
DateTime? result = null;
if (matchCollection.Count > 0)
{
result = matchCollection[0].Groups[1].Value.Replace(" ", string.Empty).GetDateTimeFromString();
}
return result;
}
protected string GetElotagFromTeljesNev(string nevImportData)
{
if (string.IsNullOrWhiteSpace(nevImportData))
{
return null;
}
var elotag = NevUtils.GetNevCo(nevImportData).Elotag;
string result = string.IsNullOrWhiteSpace(elotag) ? null : elotag;
return result;
}
protected string GetVezeteknevFromTeljesNev(string nevImportData)
{
if (string.IsNullOrWhiteSpace(nevImportData))
{
return null;
}
string result = NevUtils.GetNevCo(nevImportData).Vezeteknev;
return result;
}
protected string GetKeresztnevekFromTeljesNev(string nevImportData)
{
if (string.IsNullOrWhiteSpace(nevImportData))
{
return null;
}
string result = NevUtils.GetNevCo(nevImportData).Keresztnev;
return result;
}
//NOTE: Ha a névben szerepelt születési dátum(a névegyezőségnél azzal különböztetjük meg), akkor azt levágva adjuk vissza a nevet.
protected string GetNev(string nevImportData, DateTime? szuletesiIdo)
{
if (string.IsNullOrWhiteSpace(nevImportData))
{
return null;
}
var result = szuletesiIdo != null ? nevImportData.Substring(0, nevImportData.IndexOf("(", StringComparison.Ordinal)).ReplaceMultipleSpacesAndTrim() : nevImportData;
return result;
}
#endregion Methods
}
}

View file

@ -0,0 +1,63 @@
using System;
using Kreta.BusinessLogic.Classes;
using Kreta.Core;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class BaseImportJsonItemCo
{
private readonly int _tanevId;
private readonly int _intezmenyId;
private readonly int _felhasznaloId;
public BaseImportJsonItemCo(int tanevId, int intezmenyId, int felhasznaloId)
{
_tanevId = tanevId;
_intezmenyId = intezmenyId;
_felhasznaloId = felhasznaloId;
}
[JsonProperty("ID")]
public int? Id;
[JsonProperty("C_IMPORTALT")]
public string Importalt => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_INTEZMENYID")]
public int IntezmenyId => _intezmenyId;
[JsonProperty("C_TANEVID")]
public int TanevId => _tanevId;
[JsonProperty("TOROLT")]
public string Torolt => SDAConvert.ToSDABoolean(false);
[JsonProperty("SERIAL")]
public int? Serial => 0;
[JsonProperty("LASTCHANGED")]
public string LastChanged => Now.ToString(Constants.ToStringPattern.SortableDateTimePattern);
[JsonProperty("CREATED")]
public string Created => Now.ToString(Constants.ToStringPattern.SortableDateTimePattern);
[JsonProperty("MODIFIER")]
public int Modifier => _felhasznaloId;
[JsonProperty("CREATOR")]
public int Creator => _felhasznaloId;
[JsonProperty("ELOZOTANEVIREKORDID")]
public int? ElozoTaneviRekordId => null;
[JsonProperty("Operation")]
public int Operation { get; set; }
[JsonIgnore]
public DateTime Now { get; set; } = DateTime.Now;
[JsonIgnore]
public int LineNumber { get; set; }
}
}

View file

@ -0,0 +1,423 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Validation;
using Kreta.Enums;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class BaseTantargyfelosztasImportCo : BaseImportCo
{
[JsonProperty("T_TANTARGY_OSSZES")]
public List<TantargyImportJsonItemCo> TantargyImportJsonItemList { get; set; }
[JsonProperty("T_OSZTALYCSOPORT_OSSZES")]
public List<OsztalyCsoportImportJsonItemCo> OsztalyCsoportImportJsonItemList { get; set; }
[JsonProperty("T_OSZTALY_OSSZES")]
public List<OsztalyImportJsonItemCo> OsztalyImportJsonItemList { get; set; }
[JsonProperty("T_CSOPORT_OSSZES")]
public List<CsoportImportJsonItemCo> CsoportImportJsonItemList { get; set; }
[JsonIgnore]
public int FeladatellatasiHelyId { get; set; }
[JsonIgnore]
public List<AlkalmazottItemCo> TanarCoList { get; set; }
[JsonIgnore]
public List<OsztalyItemCo> OsztalyCoList { get; set; }
[JsonIgnore]
public List<CsoportItemCo> CsoportCoList { get; set; }
[JsonIgnore]
public List<TeremItemCo> TeremCoList { get; set; }
[JsonIgnore]
public FeladatEllatasiHelyCO FeladatellatasiHelyCo { get; set; }
[JsonIgnore]
public int FeladatKategoriaId { get; set; }
public Dictionary<int, List<ValidationResult>> Validate(List<BaseTantargyfelosztasImportItemCo> baseTantargyfelosztasImportItemList)
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (BaseTantargyfelosztasImportItemCo importItem in baseTantargyfelosztasImportItemList)
{
var validationResultList = new List<ValidationResult>();
var isDualisElem = false;
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
//NOTE: Levalidáljuk, hogy a tanár szerepel-e az adatbázisban, ha nem üres string(illetve, ha több ugyanolyan nevű tanár szerepel, akkor megnézzük születési idő alapján is).
// Azért nem BlValidator-ban, mert így csak egyszer kell lekérni a tanárlistát!
var tanarNevToCompare = importItem.TanarNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(tanarNevToCompare))
{
if (!importItem.TanarSzuletesiIdo.HasValue && TanarCoList.All(x => x.FelhasznaloNyomtatasiNevComparableString != tanarNevToCompare) ||
importItem.TanarSzuletesiIdo.HasValue && !TanarCoList.Any(x => x.FelhasznaloNyomtatasiNevComparableString == tanarNevToCompare && x.FelhasznaloSzuletesiIdo == importItem.TanarSzuletesiIdo))
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportCommonResource.TanarIsNotInDatabase, importItem.TanarNevImportData)));
}
if (!importItem.TanarSzuletesiIdo.HasValue && TanarCoList.Count(x => x.FelhasznaloNyomtatasiNevComparableString == tanarNevToCompare) > 1)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportCommonResource.TanarExistsMoreTimesInDatabase, importItem.TanarNevImportData)));
}
else if (TanarCoList.Where(x => x.FelhasznaloNyomtatasiNevComparableString == tanarNevToCompare && (!importItem.TanarSzuletesiIdo.HasValue || x.FelhasznaloSzuletesiIdo == importItem.TanarSzuletesiIdo))?.ToList()?.Count() > 1)
{
validationResultList.Add(new ValidationResult(ErrorResource.AzImportalasFajlAzonosNeveketEsSzuletesiDatumokatTartalmaz));
}
else
{
var tanarCo = TanarCoList.SingleOrDefault(x => x.FelhasznaloNyomtatasiNevComparableString == tanarNevToCompare && (!importItem.TanarSzuletesiIdo.HasValue || x.FelhasznaloSzuletesiIdo == importItem.TanarSzuletesiIdo));
if (tanarCo != null)
{
if (tanarCo.SzerepkorTipusIdString.Equals(SzerepkorTipusEnum.alkalmazott.ToString()))
{
validationResultList.Add(new ValidationResult(ImportExportCommonResource.TantargyfelosztasNemLehetsegesCsakAlkalmazottJogunak));
}
if (tanarCo.SzervezetId.HasValue && !isDualisElem)
{
isDualisElem = true;
}
}
}
}
var csoportNevToCompare = importItem.CsoportNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(csoportNevToCompare) && baseTantargyfelosztasImportItemList.Any(x => x.OsztalyNev?.ToComparableString() == csoportNevToCompare))
{
validationResultList.Add(new ValidationResult(ImportExportTantargyfelosztasResource.AMegadottCsoportSzerepelOsztalykentADokumentumban));
}
if (!string.IsNullOrWhiteSpace(csoportNevToCompare) && OsztalyCoList.Any(x => x.NevComparableString == csoportNevToCompare))
{
validationResultList.Add(new ValidationResult(ImportExportTantargyfelosztasResource.AMegadottCsoportSzerepelOsztalykentAzAdatbazisban));
}
var osztalyNevToCompare = importItem.OsztalyNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(osztalyNevToCompare) && baseTantargyfelosztasImportItemList.Any(x => x.CsoportNev?.ToComparableString() == osztalyNevToCompare))
{
validationResultList.Add(new ValidationResult(ImportExportTantargyfelosztasResource.AMegadottOsztalySzerepelCsoportkentADokumentumban));
}
if (!string.IsNullOrWhiteSpace(osztalyNevToCompare) && CsoportCoList.Any(x => x.NevComparableString == osztalyNevToCompare))
{
validationResultList.Add(new ValidationResult(ImportExportTantargyfelosztasResource.AMegadottOsztalySzerepelCsoportkentAzAdatbazisban));
}
if (!isDualisElem && !string.IsNullOrWhiteSpace(csoportNevToCompare))
{
var csoportCo = CsoportCoList.SingleOrDefault(x => x.NevComparableString == csoportNevToCompare);
if (csoportCo != null && csoportCo.SzervezetId.HasValue)
{
isDualisElem = true;
}
}
var tantargyNevToCompare = importItem.TantargyNev?.ToComparableString();
if (!isDualisElem && !string.IsNullOrWhiteSpace(tantargyNevToCompare) && tantargyNevToCompare.Equals(TantargyResource.DualisKepzes.ToComparableString()))
{
isDualisElem = true;
}
if (isDualisElem)
{
validationResultList.Add(new ValidationResult(ImportExportCommonResource.DualisKepzeshezKapcsolodoElemekImportalasaNemLehetseges));
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
return validationResultDictionary;
}
}
public class BaseTantargyfelosztasImportItemCo : BaseImportItemCo
{
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string OsztalyNevImportData { get; set; }
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string CsoportNevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string TantargyNevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string TanarNevImportData { get; set; }
public string OsztalyNev => GetStringValue(OsztalyNevImportData);
public string CsoportNev => GetStringValue(CsoportNevImportData);
public bool IsCsoport => !string.IsNullOrWhiteSpace(CsoportNev);
public string OsztalyCsoportNev => IsCsoport ? CsoportNev : OsztalyNev;
public string TantargyNev => GetStringValue(TantargyNevImportData);
public DateTime? TanarSzuletesiIdo => GetSzuletesIdoFromNev(TanarNevImportData);
public string TanarSzuletesiIdoString => GetDateTimeString(TanarSzuletesiIdo);
public string TanarNev => GetNev(TanarNevImportData, TanarSzuletesiIdo);
public int? TanarId { get; set; }
public string TantargyfelosztasNev => $"{TantargyNev} - {OsztalyCsoportNev} - {TanarNev}";
public int? CsoportTipusId { get; set; }
public bool IsOsszefuggoSzakmaiGyakorlat => CsoportTipusId == (int)CsoportTipusEnum.OsszefuggoSzakmaiGyakorlatiCsoport;
public int OperationTantargy { get; set; }
public string CompareHashTantargy { get; set; }
public int OperationOsztaly { get; set; }
public string CompareHashOsztaly { get; set; }
public int OperationCsoport { get; set; }
public string CompareHashCsoport { get; set; }
}
public class TantargyImportJsonItemCo : BaseImportJsonItemCo
{
public TantargyImportJsonItemCo(BaseTantargyfelosztasImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Nev = importItemCo.TantargyNev;
RovidNev = Nev.Length > 20 ? Nev.Substring(0, 20) : Nev;
NevNyomtatvanyban = Nev;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationTantargy;
}
public TantargyImportJsonItemCo(OratervImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Nev = importItemCo.TantargyNeve;
RovidNev = Nev.Length > 20 ? Nev.Substring(0, 20) : Nev;
NevNyomtatvanyban = Nev;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationTantargy;
}
#region Import Json Properties
[JsonProperty("C_NEV")]
public string Nev { get; set; }
[JsonProperty("C_ROVIDNEV")]
public string RovidNev { get; set; }
[JsonProperty("C_NEVNYOMTATVANYBAN")]
public string NevNyomtatvanyban { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_GYAKORLATI")]
public string IsGyakorlati => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TARGYKATEGORIA")]
public int Tantargykategoria => (int)TargyKategoriaTipusEnum.na;
[JsonProperty("C_ALTANTARGYKENTNYOMTATVANYBAN")]
public string IsAltantargykentNyomtatvanyban => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANORANKIVULI")]
public string IsTanoranKivuli => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_FOTARGYE")]
public string IsFotargy => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_FOTARGYID")]
public int? FotargyId => null;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class OsztalyCsoportImportJsonItemCo : BaseImportJsonItemCo
{
public OsztalyCsoportImportJsonItemCo(BaseTantargyfelosztasImportItemCo importItemCo, int operationOsztalyCsoport, string osztalyCsoportNev, int feladatellatasiHelyId, int feladatKategoriaId, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Nev = osztalyCsoportNev;
FeladatellatasiHelyId = feladatellatasiHelyId;
FeladatKategoriaId = feladatKategoriaId;
LineNumber = importItemCo.LineNumber;
Operation = operationOsztalyCsoport;
}
#region Import Json Properties
[JsonProperty("C_NEV")]
public string Nev { get; set; }
[JsonProperty("C_FELADATELLATASIHELYID")]
public int FeladatellatasiHelyId { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ISTECHNIKAI")]
public string IsTechnikaiOsztaly => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_VEGZOSEVFOLYAM")]
public string IsVegzosEvfolyam => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_EVFOLYAMTIPUSA")]
public int EvfolyamTipus => (int)EvfolyamTipusEnum.na;
[JsonProperty("C_KERESZTFELEVES")]
public string IsKeresztfeleves => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_FELADATKATEGORIAID")]
public int FeladatKategoriaId { get; set; }
[JsonProperty("C_MEGJEGYZES")]
public string Megjegyzes => null;
[JsonProperty("C_TERVEZETTLETSZAM")]
public int? TervezettLetszam => null;
[JsonProperty("C_TEREMID")]
public int? TeremId => null;
[JsonProperty("C_KEPZESIFORMA")]
public int KepzesiForma => (int)TanterviJellegEnum.nappali_rendszeru_iskolai_oktatas;
[JsonProperty("C_ISGYOGYPEDAGOGIAILOGOPEDIAI")]
public string IsGyogypedagogiaiLogopediai => SDAConvert.ToSDABoolean(false);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class OsztalyImportJsonItemCo : BaseImportJsonItemCo
{
public OsztalyImportJsonItemCo(BaseTantargyfelosztasImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
OsztalyCsoportNev = importItemCo.OsztalyNev;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationOsztaly;
}
#region Import Json Properties
[JsonProperty("OsztalyCsoportNev")]
public string OsztalyCsoportNev { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_KETTANNYELVU")]
public string IsKettannyelvu => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_NEMZETISEGI")]
public string IsNemzetisegi => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_NYELVIELOKESZITO")]
public string IsNyelvielokeszito => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SPORT")]
public string IsSport => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_OSZTALYNAPLOLEIRASA")]
public string OsztalynaploLeirasa => null;
[JsonProperty("C_OSZTALYNAPLOMEGNYITASA")]
public string OsztalynaploMegnyitasaDate => null;
[JsonProperty("C_OSZTALYNAPLOZARASA")]
public string OsztalynaploZarasaDate => null;
[JsonProperty("C_OSZTALYFONOKID")]
public int? OsztalyfonokId => null;
[JsonProperty("C_OFOHELYETTESID")]
public int? OsztalyfonokHelyettesId => null;
[JsonProperty("C_TANTERVID")]
public int? TantervId => null;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class CsoportImportJsonItemCo : BaseImportJsonItemCo
{
public CsoportImportJsonItemCo(BaseTantargyfelosztasImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
OsztalyCsoportNev = importItemCo.CsoportNev;
OsztalybontasNev = importItemCo.OsztalyNev;
//NOTE: Az CsoportTipusId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van csoprt típusa!
Tipus = importItemCo.CsoportTipusId.Value;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationCsoport;
}
#region Import Json Properties
[JsonProperty("OsztalyCsoportNev")]
public string OsztalyCsoportNev { get; set; }
[JsonProperty("OsztalybontasNev")]
public string OsztalybontasNev { get; set; }
[JsonProperty("C_TIPUSA")]
public int Tipus { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_CSOPORTNAPLOLEIRAS")]
public string CsoportnaploLeiras => null;
[JsonProperty("C_CSOPORTNAPLOMEGNYITASA")]
public string CsoportnaploMegnyitasaDate => null;
[JsonProperty("C_CSOPORTNAPLOZARASA")]
public string CsoportnaploZarasaDate => null;
[JsonProperty("C_CSOPORTVEZETOID")]
public int? CsoportvezetoId => null;
[JsonProperty("C_OSZTALYBONTASID")]
public int? OsztalybontasId => null;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,289 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class EszkozImportCo : BaseImportCo
{
[JsonIgnore]
public List<EszkozImportItemCo> MainImportItemList { get; set; } = new List<EszkozImportItemCo>();
[JsonIgnore]
public List<EszkozImportItemCo> NemImportalhatoItemList { get; set; } = new List<EszkozImportItemCo>();
[JsonProperty("T_ESZKOZ_OSSZES")]
public List<EszkozImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<EszkozItemCo> EszkozCoList { get; set; }
[JsonIgnore]
public List<AlkalmazottItemCo> FelelosCoList { get; set; }
[JsonIgnore]
public List<TeremItemCo> TeremCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (EszkozImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
var teremNevToCompare = importItem.TeremNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(teremNevToCompare))
{
if (TeremCoList.All(x => x.NevComparableString != teremNevToCompare))
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportEszkozResource.TeremIsNotInDatabase, importItem.TeremNev)));
}
}
//NOTE: Levalidáljuk, hogy a felelős szerepel-e az adatbázisban, ha nem üres string(illetve, ha több ugyanolyan nevű felelős szerepel, akkor megnézzük születési idő alapján is).
// Azért nem BlValidator-ban, mert így csak egyszer kell lekérni a tanárlistát!
var felelosNevToCompare = importItem.FelelosNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(felelosNevToCompare))
{
if (!importItem.FelelosSzuletesiIdo.HasValue && FelelosCoList.All(x => x.FelhasznaloNyomtatasiNevComparableString != felelosNevToCompare) ||
importItem.FelelosSzuletesiIdo.HasValue && !FelelosCoList.Any(x => x.FelhasznaloNyomtatasiNevComparableString == felelosNevToCompare && x.FelhasznaloSzuletesiIdo == importItem.FelelosSzuletesiIdo))
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportCommonResource.TanarIsNotInDatabase, importItem.EszkozSzemelyiFeleloseImportData)));
}
if (!importItem.FelelosSzuletesiIdo.HasValue && FelelosCoList.Count(x => x.FelhasznaloNyomtatasiNevComparableString == felelosNevToCompare) > 1)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportCommonResource.TanarExistsMoreTimesInDatabase, importItem.EszkozSzemelyiFeleloseImportData)));
}
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportEszkozResource.ImportHeaderNameEszkozNeve
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class EszkozImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private EszkozImportItemCo() { }
public EszkozImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
#region Fields
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportEszkozResource.ImportHeaderNameEszkozNeve), typeof(ImportExportEszkozResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportEszkozResource.ImportHeaderNameEszkozNeve), ResourceType = typeof(ImportExportEszkozResource))]
public string EszkozNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportEszkozResource.ImportHeaderNameHelyiseg), typeof(ImportExportEszkozResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportEszkozResource.ImportHeaderNameHelyiseg), ResourceType = typeof(ImportExportEszkozResource))]
public string HelyisegImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportEszkozResource.ImportHeaderNameEszkozTipus), typeof(ImportExportEszkozResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportEszkozResource.ImportHeaderNameEszkozTipus), ResourceType = typeof(ImportExportEszkozResource))]
public string EszkozTipusImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportEszkozResource.ImportHeaderNameMennyiseg), typeof(ImportExportEszkozResource))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportEszkozResource.ImportHeaderNameMennyiseg), ResourceType = typeof(ImportExportEszkozResource))]
public string DarabszamImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportEszkozResource.ImportHeaderNameEszkozSzemelyiFelelose), typeof(ImportExportEszkozResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportEszkozResource.ImportHeaderNameEszkozSzemelyiFelelose), ResourceType = typeof(ImportExportEszkozResource))]
public string EszkozSzemelyiFeleloseImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 05, nameof(ImportExportEszkozResource.ImportHeaderNameLeltariSzam), typeof(ImportExportEszkozResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportEszkozResource.ImportHeaderNameLeltariSzam), ResourceType = typeof(ImportExportEszkozResource))]
public string LeltariSzamImportData { get; set; }
public string Nev => GetStringValue(EszkozNeveImportData);
public string TeremNev => GetStringValue(HelyisegImportData);
public int TipusId => ((int)GeneratedAdatszotarTipusEnum.EszkozTipus).GetItemIdByTypeAndName(EszkozTipusImportData, _tanevId) ?? (int)EszkozTipusEnum.na;
public int? Darabszam => GetIntValue(DarabszamImportData, 0);
public DateTime? FelelosSzuletesiIdo => GetSzuletesIdoFromNev(EszkozSzemelyiFeleloseImportData);
public string FelelosNev => GetNev(EszkozSzemelyiFeleloseImportData, FelelosSzuletesiIdo);
public string LeltariSzam => GetStringValue(LeltariSzamImportData);
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//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(DarabszamImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!Darabszam.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidNumberFormat, ImportExportEszkozResource.ImportHeaderNameMennyiseg.ToLowerInvariant(), DarabszamImportData));
}
else
{
if (Darabszam < 0 || Darabszam > 99999)
{
yield return new ValidationResult(ErrorResource.ADarabszamCsakEgy0Es99999KozottiEgeszSzamLehet);
}
}
}
}
#endregion Validate
}
public class EszkozImportJsonItemCo : BaseImportJsonItemCo
{
public EszkozImportJsonItemCo(EszkozImportItemCo importItemCo, List<TeremItemCo> teremCoList, List<AlkalmazottItemCo> felelosCoList, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Nev = importItemCo.Nev;
TeremNev = importItemCo.TeremNev;
TeremId = teremCoList.Single(x => x.NevComparableString == importItemCo.TeremNev?.ToComparableString()).Id;
TipusId = importItemCo.TipusId;
//NOTE: Az Darabszam.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van darabszáma!
Darabszam = importItemCo.Darabszam.Value;
LeltariSzam = importItemCo.LeltariSzam;
if (!string.IsNullOrWhiteSpace(importItemCo.FelelosNev))
{
if (importItemCo.FelelosSzuletesiIdo.HasValue)
{
FelelosNev = $"{importItemCo.FelelosNev} ({importItemCo.FelelosSzuletesiIdo.Value.ToString(Constants.ToStringPattern.HungarianDate)})";
FelelosId = felelosCoList.Single(x => x.FelhasznaloNyomtatasiNevComparableString == importItemCo.FelelosNev?.ToComparableString() && x.FelhasznaloSzuletesiIdo == importItemCo.FelelosSzuletesiIdo).Id;
}
else
{
FelelosNev = importItemCo.FelelosNev;
FelelosId = felelosCoList.Single(x => x.FelhasznaloNyomtatasiNevComparableString == importItemCo.FelelosNev?.ToComparableString()).Id;
}
}
else
{
FelelosNev = null;
FelelosId = null;
}
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonProperty("C_NEV")]
public string Nev { get; set; }
[JsonIgnore]
public string TeremNev { get; set; }
[JsonProperty("C_TEREMID")]
public int TeremId { get; set; }
[JsonProperty("C_TIPUS")]
public int TipusId { get; set; }
[JsonProperty("C_DARABSZAM")]
public int Darabszam { get; set; }
[JsonIgnore]
public string FelelosNev { get; set; }
[JsonProperty("C_FELELOSID")]
public int? FelelosId { get; set; }
[JsonProperty("C_LELTARISZAM")]
public string LeltariSzam { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_BERELT")]
public string IsBerelt => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_HALOZATIKAPCSOLAT")]
public string IsHalozatiKapcsolat => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_HORDOZHATO")]
public string IsHordozhato => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_INTERNETKAPCSOLAT")]
public string IsInternetKapcsolat => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_MULTIMEDIAS")]
public string IsMultimedias => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_PEDAGOGUSHOZZAFERHET")]
public string IsPedagogusHozzaferhet => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANULOHOZZAFERHET")]
public string IsTanuloHozzaferhet => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TARTOZEK")]
public string IsTartozek => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_NEMMUKODIK")]
public string IsNemMukodik => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_KATEGORIA")]
public int KategoriaId => (int)EszkozKategoriaEnum.na;
[JsonProperty("C_CELJA")]
public int CeljaId => (int)EszkozCelEnum.na;
[JsonProperty("C_JELLEGE")]
public int JellegeId => (int)EszkozJellegEnum.egyedi;
[JsonProperty("C_MENNYISEGIEGYSEG")]
public int MennyisegiEgysegId => (int)MertekegysegTipusEnum.darab;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,575 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text.RegularExpressions;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Security.PasswordCrypting;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class FelhasznaloBelepesImportCo : BaseImportCo
{
[JsonIgnore]
public List<FelhasznaloBelepesImportItemCo> MainImportItemList { get; set; } = new List<FelhasznaloBelepesImportItemCo>();
[JsonIgnore]
public List<FelhasznaloBelepesImportItemCo> NemImportalhatoItemList { get; set; } = new List<FelhasznaloBelepesImportItemCo>();
[JsonProperty("T_FELHASZNALOBELEPES_OSSZES")]
public List<FelhasznaloBelepesImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<FelhasznaloBelepesItemCo> FelhasznaloBelepesCoList { get; set; }
[JsonIgnore]
public FelhasznaloBelepesExportImportTipusEnum TipusEnum { get; set; }
[JsonIgnore]
public bool IsGeneraltFileLetoltes { get; set; }
[JsonIgnore]
public bool IsEmailKuldes { get; set; }
public Dictionary<int, List<ValidationResult>> Validate(IConnectionType connectionType, bool isSzakkepzoIntezmeny)
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (FelhasznaloBelepesImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (!string.IsNullOrWhiteSpace(importItem.BejelentkezesiNev))
{
string bejelentkezesiNevToCompare = importItem.BejelentkezesiNev.ToComparableString();
//NOTE: Levalidáljuk, hogy létezik-e a bejelentkezesi név a db-ben, de nem saját maga(azaz csak jelszót változtat)!
var utkozoNevek = FelhasznaloBelepesCoList.Where(x =>
(importItem.FelhasznaloBelepes == null || x.Id != importItem.FelhasznaloBelepes.Id) &&
x.BejelentkezesiNevComparableString == bejelentkezesiNevToCompare);
FelhasznalonevValidacio(validationResultList, utkozoNevek);
OktatasiAzonositoValidacio(validationResultList, importItem.OktatasiAzonosito?.ToComparableString(), isSzakkepzoIntezmeny);
//NOTE: Levalidáljuk, hogy ugyanazzal a bejelentkezesi névvel csak egyszer szerepeljen tanuló a dokumnetumban!
if (MainImportItemList.Count(x => x.BejelentkezesiNev.ToComparableString() == bejelentkezesiNevToCompare) > 1)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportFelhasznaloBelepesResource.AMegadottFelhasznalonev0TobbSorbanIsSzerepel, importItem.BejelentkezesiNev)));
}
}
if (TipusEnum == FelhasznaloBelepesExportImportTipusEnum.Gondviselo)
{
if (importItem.GondviseloRokonsagiFokId.HasValue && importItem.TanuloId.HasValue)
{
var helper = new TanuloHelper(connectionType);
if (helper.HasDuplicatedGondviselo(importItem.TanuloId.Value))
{
validationResultList.Add(new ValidationResult(ImportExportFelhasznaloBelepesResource.ATanulohozTobbAzonosNevuEsRokonsagiFokuGondviseloVanFelveve));
}
}
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
List<string> duplicatedRowConditonTextList;
switch (TipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
duplicatedRowConditonTextList = new List<string>
{
ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottNeve,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottOktatasiAzonosito,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottSzuletesiDatuma
};
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
duplicatedRowConditonTextList = new List<string>
{
ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNevSzulidoOktazon,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloSzuletesiDatuma
};
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
duplicatedRowConditonTextList = new List<string>
{
ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloSzuletesiDatuma,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve,
ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka
};
break;
default:
throw new Exception();
}
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
private static void FelhasznalonevValidacio(List<ValidationResult> validationResultList, IEnumerable<FelhasznaloBelepesItemCo> utkozoNevek)
{
var nincsGondviseloUtkozoNevek = utkozoNevek.Where(x => x.GondviseloId == null);
if (nincsGondviseloUtkozoNevek.Any())
{
var tanevMegnevezes = nincsGondviseloUtkozoNevek.All(x => string.IsNullOrWhiteSpace(x.AnotherYearTanevMegnevezes)) ? string.Empty : nincsGondviseloUtkozoNevek.First().AnotherYearTanevMegnevezes;
var errorMsg = string.Format(ErrorResource.FelhasznalonevFoglaltAltal, string.Join(", ", nincsGondviseloUtkozoNevek.Select(x => x.FelhasznaloNyomtatasiNev)), tanevMegnevezes);
validationResultList.Add(new ValidationResult(errorMsg));
}
var vanGondviseloUtkozoNevek = utkozoNevek.Where(x => x.GondviseloId != null);
if (vanGondviseloUtkozoNevek.Any())
{
var tanevMegnevezes = vanGondviseloUtkozoNevek.All(x => string.IsNullOrWhiteSpace(x.AnotherYearTanevMegnevezes)) ? string.Empty : vanGondviseloUtkozoNevek.First().AnotherYearTanevMegnevezes;
var errorMsg = string.Format(ErrorResource.FelhasznalonevFoglaltAltalGondviselo, string.Join(", ", vanGondviseloUtkozoNevek.Select(x => x.FelhasznaloNyomtatasiNev)), tanevMegnevezes);
validationResultList.Add(new ValidationResult(errorMsg));
}
}
private static void OktatasiAzonositoValidacio(List<ValidationResult> validationResultList, string oktatasiAzonosito, bool isSzakkepzoIntezmeny)
{
if (isSzakkepzoIntezmeny && !string.IsNullOrWhiteSpace(oktatasiAzonosito) && !Extensions.FelhasznaloExtensions.IsValidOktatasiAzonosito(oktatasiAzonosito))
{
validationResultList.Add(new ValidationResult(ErrorResource.AMegadottOktatasiAzonositoHibas));
}
}
}
public class FelhasznaloBelepesImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private FelhasznaloBelepesImportItemCo() { }
public FelhasznaloBelepesImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
#region Fields
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
public const string AlkalmazottNemImportalhatoSorokExportAttributeId = nameof(AlkalmazottNemImportalhatoSorokExportAttributeId);
public const string TanuloNemImportalhatoSorokExportAttributeId = nameof(TanuloNemImportalhatoSorokExportAttributeId);
public const string GondviseloNemImportalhatoSorokExportAttributeId = nameof(GondviseloNemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(AlkalmazottNemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottNeve), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve), typeof(ImportExportFelhasznaloBelepesResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
public string NeveImportData { get; set; }
[SimpleExportColumn(AlkalmazottNemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottOktatasiAzonosito), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito), typeof(ImportExportFelhasznaloBelepesResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
public string OktatasiAzonositoImportData { get; set; }
[SimpleExportColumn(AlkalmazottNemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottSzuletesiDatuma), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloSzuletesiDatuma), typeof(ImportExportFelhasznaloBelepesResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
public string SzuletesiDatumaImportData { get; set; }
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve), typeof(ImportExportFelhasznaloBelepesResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
public string GondviseloNeveImportData { get; set; }
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka), typeof(ImportExportFelhasznaloBelepesResource))]
[MaxLength(250, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
public string GondviseloRokonsagiFokaImportData { get; set; }
[SimpleExportColumn(AlkalmazottNemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottFelhasznaloneve), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(TanuloNemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloFelhasznaloneve), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 05, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloFelhasznaloneve), typeof(ImportExportFelhasznaloBelepesResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
public string FelhasznaloNeveImportData { get; set; }
[SimpleExportColumn(AlkalmazottNemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottJelszava), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(TanuloNemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloJelszava), typeof(ImportExportFelhasznaloBelepesResource))]
[SimpleExportColumn(GondviseloNemImportalhatoSorokExportAttributeId, 06, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloJelszava), typeof(ImportExportFelhasznaloBelepesResource))]
[StringLength(Constants.General.JelszoMaximumKarakterekSzama, MinimumLength = Constants.General.JelszoMinimumKarakterekSzama, ErrorMessageResourceName = nameof(ErrorResource.AJelszonakMin0Max0KarakterbolKellAllnia), ErrorMessageResourceType = typeof(ErrorResource))]
public string JelszavaImportData { get; set; }
[SimpleExportColumn(TanuloNemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNevSzulidoOktazon), typeof(ImportExportFelhasznaloBelepesResource), nameof(ImportExportFelhasznaloBelepesResource.ImportSheetNameTanuloNevSzulidoOktazon), typeof(ImportExportFelhasznaloBelepesResource))]
public string TanuloNevOktAzonSzulDatumImportData { get; set; }
public string Elotag => GetElotagFromTeljesNev(NeveImportData);
public string Vezeteknev => GetVezeteknevFromTeljesNev(NeveImportData);
public string Keresztnev => GetKeresztnevekFromTeljesNev(NeveImportData);
public string OktatasiAzonosito => GetStringValue(OktatasiAzonositoImportData);
public DateTime? SzuletesiIdo => GetDateTimeValue(SzuletesiDatumaImportData);
public string SzuletesiIdoString => GetDateTimeString(SzuletesiIdo);
public string GondviseloNev => GetStringValue(GondviseloNeveImportData);
public int? GondviseloRokonsagiFokId => ((int)GeneratedAdatszotarTipusEnum.RokonsagiFok).GetItemIdByTypeAndName(GondviseloRokonsagiFokaImportData, _tanevId);
public string BejelentkezesiNev => GetStringValue(FelhasznaloNeveImportData);
public string JelszoPlainText => GetStringValue(JelszavaImportData);
public FelhasznaloBelepesItemCo FelhasznaloBelepes { get; set; }
public int? AlkalmazottId => FelhasznaloBelepes?.AlkalmazottId;
public int? TanuloId => FelhasznaloBelepes?.TanuloId;
public int? GondviseloId => FelhasznaloBelepes?.GondviseloId;
public FelhasznaloBelepesExportImportTipusEnum TipusEnum { get; set; }
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
string nevError;
string oktatasiAzonositoError;
string szuletesiDatumaError;
string felhasznaloNeveText;
string jelszavaText;
switch (TipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
nevError = string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottNeve);
oktatasiAzonositoError = string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottOktatasiAzonosito);
szuletesiDatumaError = string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottSzuletesiDatuma);
felhasznaloNeveText = ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottFelhasznaloneve;
jelszavaText = ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottJelszava;
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
nevError = $"{ImportExportFelhasznaloBelepesResource.HianyosTanuloNevAdat} ({ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito})";
oktatasiAzonositoError = $"{ImportExportFelhasznaloBelepesResource.HianyosTanuloNevAdat} ({ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito})";
szuletesiDatumaError = $"{ImportExportFelhasznaloBelepesResource.HianyosTanuloNevAdat} ({ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito})";
felhasznaloNeveText = ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloFelhasznaloneve;
jelszavaText = ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloJelszava;
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
nevError = string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve);
oktatasiAzonositoError = string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito);
szuletesiDatumaError = string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloSzuletesiDatuma);
felhasznaloNeveText = ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloFelhasznaloneve;
jelszavaText = ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloJelszava;
break;
default:
throw new ArgumentOutOfRangeException();
}
if (string.IsNullOrWhiteSpace(NeveImportData))
{
yield return new ValidationResult(nevError);
}
if (!string.IsNullOrWhiteSpace(NeveImportData) && (string.IsNullOrWhiteSpace(Vezeteknev) || string.IsNullOrWhiteSpace(Keresztnev)))
{
switch (TipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
yield return new ValidationResult(ImportExportFelhasznaloBelepesResource.AzAlkalmazottNeveFormatumaNemMegfelelo);
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
yield return new ValidationResult(ImportExportFelhasznaloBelepesResource.ATanuloNeveFormatumaNemMegfelelo);
break;
}
}
if (string.IsNullOrWhiteSpace(OktatasiAzonositoImportData))
{
yield return new ValidationResult(oktatasiAzonositoError);
}
else
{
switch (TipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
{
if (!Regex.Match(OktatasiAzonosito, Constants.RegularExpressions.OktatasiAzonositoTanulo).Success)
{
yield return new ValidationResult(ErrorResource.OktatasiAzonositoFormatumaNemMegfeleloTanulo);
}
break;
}
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
{
if (!Regex.Match(OktatasiAzonosito, Constants.RegularExpressions.OktatasiAzonosito).Success)
{
yield return new ValidationResult(ErrorResource.OktatasiAzonositoFormatumaNemMegfelelo);
}
break;
}
default:
throw new ArgumentOutOfRangeException();
}
}
if (string.IsNullOrWhiteSpace(SzuletesiDatumaImportData))
{
yield return new ValidationResult(szuletesiDatumaError);
}
else
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!SzuletesiIdo.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, szuletesiDatumaError.ToLowerInvariant(), SzuletesiDatumaImportData));
}
else
{
var minimumDate = new DateTime(Now.Date.Year - 123, 1, 1);
var maximumDate = new DateTime(Now.Date.Year, 1, 1);
var minOk = SzuletesiIdo >= minimumDate;
var maxOk = SzuletesiIdo <= maximumDate;
if (!minOk || !maxOk)
{
yield return new ValidationResult(
string.Format(ImportExportCommonResource.ASzuletesiIdoCsakKozeEshet,
minimumDate.ToString(Constants.ToStringPattern.HungarianDate),
maximumDate.ToString(Constants.ToStringPattern.HungarianDate)));
}
}
}
if (TipusEnum == FelhasznaloBelepesExportImportTipusEnum.Gondviselo)
{
if (string.IsNullOrWhiteSpace(GondviseloNeveImportData))
{
yield return new ValidationResult(string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve));
}
if (!string.IsNullOrWhiteSpace(GondviseloNeveImportData) && (string.IsNullOrWhiteSpace(GetVezeteknevFromTeljesNev(GondviseloNev)) || string.IsNullOrWhiteSpace(GetKeresztnevekFromTeljesNev(GondviseloNev))))
{
yield return new ValidationResult(ImportExportFelhasznaloBelepesResource.AGondviseloNeveFormatumaNemMegfelelo);
}
if (string.IsNullOrWhiteSpace(GondviseloRokonsagiFokaImportData))
{
yield return new ValidationResult(string.Format(ErrorResource.Required, ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka));
}
else
{
if (!GondviseloRokonsagiFokId.IsEntityId())
{
yield return new ValidationResult(string.Format(ImportExportFelhasznaloBelepesResource.NincsIlyenRokonsagiFok, GondviseloRokonsagiFokaImportData));
}
}
}
if (string.IsNullOrWhiteSpace(FelhasznaloNeveImportData))
{
yield return new ValidationResult(string.Format(ErrorResource.Required, felhasznaloNeveText));
}
if (string.IsNullOrWhiteSpace(JelszavaImportData))
{
yield return new ValidationResult(string.Format(ErrorResource.Required, jelszavaText));
}
//NOTE: Ha van megadva bármilyen érték az import data-ban, hogy ne legyen dupla validálás a required miatt.
if (!string.IsNullOrWhiteSpace(NeveImportData) &&
!string.IsNullOrWhiteSpace(OktatasiAzonositoImportData) &&
!string.IsNullOrWhiteSpace(SzuletesiDatumaImportData))
{
switch (TipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
if (!AlkalmazottId.IsEntityId() || TanuloId.IsEntityId() || GondviseloId.IsEntityId())
{
yield return new ValidationResult(ImportExportFelhasznaloBelepesResource.AzAlkalmazottNemSzerepelAzAdatbazisban);
}
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
if (AlkalmazottId.IsEntityId() || !TanuloId.IsEntityId() || GondviseloId.IsEntityId())
{
yield return new ValidationResult(ImportExportFelhasznaloBelepesResource.ATanuloNemSzerepelAzAdatbazisban);
}
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
if (AlkalmazottId.IsEntityId() || !TanuloId.IsEntityId() && !string.IsNullOrWhiteSpace(GondviseloNeveImportData) && !string.IsNullOrWhiteSpace(GondviseloRokonsagiFokaImportData) && !GondviseloId.IsEntityId())
{
yield return new ValidationResult(ImportExportFelhasznaloBelepesResource.AGondviseloNemSzerepelAzAdatbazisban);
}
break;
default:
throw new Exception();
}
}
}
#endregion Validate
}
public class FelhasznaloBelepesImportJsonItemCo : BaseImportJsonItemCo
{
public FelhasznaloBelepesImportJsonItemCo(FelhasznaloBelepesImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
string jelszoPlainText = importItemCo.JelszoPlainText;
string salt = SaltGenerator.GenerateSalt();
string jelszo = BasePasswordCrypter.EncodePasswordSHA1(jelszoPlainText, salt);
Id = importItemCo.Id;
Elotag = importItemCo.Elotag;
Vezeteknev = importItemCo.Vezeteknev;
Keresztnev = importItemCo.Keresztnev;
OktatasiAzonosito = importItemCo.OktatasiAzonositoImportData;
//NOTE: Az SzuletesiIdo.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van születési ideje!
SzuletesiIdo = importItemCo.SzuletesiIdo.Value;
BejelentkezesiNev = importItemCo.BejelentkezesiNev;
Jelszo = jelszo;
JelszoPlainText = jelszoPlainText;
Salt = salt;
AlkalmazottId = importItemCo.AlkalmazottId;
TanuloId = importItemCo.TanuloId;
GondviseloId = importItemCo.GondviseloId;
switch (importItemCo.TipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
//NOTE: Az AlkalmazottId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van id-ja!
FelhasznaloId = importItemCo.AlkalmazottId.Value;
IsKotelezoValtoztatni = SDAConvert.ToSDABoolean(false);
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
//NOTE: Az TanuloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van id-ja!
FelhasznaloId = importItemCo.TanuloId.Value;
IsKotelezoValtoztatni = SDAConvert.ToSDABoolean(true);
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
//NOTE: Az TanuloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van id-ja!
FelhasznaloId = importItemCo.TanuloId.Value;
GondviseloNev = importItemCo.GondviseloNev;
GondviseloRokonsagiFokId = importItemCo.GondviseloRokonsagiFokId;
IsKotelezoValtoztatni = SDAConvert.ToSDABoolean(true);
break;
}
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonIgnore]
public string Elotag { get; set; }
[JsonIgnore]
public string Vezeteknev { get; set; }
[JsonIgnore]
public string Keresztnev { get; set; }
[JsonIgnore]
public string GondviseloNev { get; set; }
[JsonIgnore]
public int? GondviseloRokonsagiFokId { get; set; }
[JsonIgnore]
public string OktatasiAzonosito { get; set; }
[JsonIgnore]
public string JelszoPlainText { get; set; }
[JsonIgnore]
public int? AlkalmazottId { get; set; }
[JsonIgnore]
public int? TanuloId { get; set; }
[JsonIgnore]
public DateTime SzuletesiIdo { get; set; }
[JsonProperty("C_BEJELENTKEZESINEV")]
public string BejelentkezesiNev { get; set; }
[JsonProperty("C_JELSZO")]
public string Jelszo { get; set; }
[JsonProperty("C_FELHASZNALOID")]
public int FelhasznaloId { get; set; }
[JsonProperty("C_GONDVISELOID")]
public int? GondviseloId { get; set; }
[JsonProperty("C_SO")]
public string Salt { get; set; }
[JsonProperty("C_KOTELEZOVALTOZTATNI")]
public string IsKotelezoValtoztatni { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_MEGHIUSULTBELEPESEK")]
public int MeghiusultBelepesek => 0;
[JsonProperty("C_UTOLSOBELEPES")]
public string UtolsoBelepes => null;
[JsonProperty("C_JELSZOVALTOZTATASIDEJE")]
public string JelszovaltoztatasIdeje => null;
[JsonProperty("C_NEPTUNNAPLOJELSZO")]
public string NeptunNaploJelszo => null;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,675 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class GondviseloImportCo : BaseImportCo
{
[JsonIgnore]
public List<GondviseloImportItemCo> MainImportItemList { get; set; } = new List<GondviseloImportItemCo>();
[JsonIgnore]
public List<GondviseloImportItemCo> NemImportalhatoItemList { get; set; } = new List<GondviseloImportItemCo>();
[JsonProperty("T_TELEFON_OSSZES")]
public List<TelefonGondviseloImportJsonItemCo> TelefonGondviseloImportJsonItemList { get; set; }
[JsonProperty("T_EMAIL_OSSZES")]
public List<EmailGondviseloImportJsonItemCo> EmailGondviseloImportJsonItemList { get; set; }
[JsonProperty("T_CIM_OSSZES")]
public List<CimGondviseloImportJsonItemCo> CimGondviseloImportJsonItemList { get; set; }
[JsonProperty("T_GONDVISELO_OSSZES")]
public List<GondviseloImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<GondviseloItemCo> GondviseloCoList { get; set; }
[JsonIgnore]
public bool IsGeneraltFileLetoltes { get; set; }
[JsonIgnore]
public bool IsEmailKuldes { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (GondviseloImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportGondviseloResource.ImportHeaderNameTanuloNeve,
ImportExportGondviseloResource.ImportHeaderNameTanuloOktatasiAzonosito,
ImportExportGondviseloResource.ImportHeaderNameGondviseloNeve,
ImportExportGondviseloResource.ImportHeaderNameGondviseloRokonsagiFoka
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class GondviseloImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private GondviseloImportItemCo() { }
public GondviseloImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
#region Fields
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportGondviseloResource.ImportHeaderNameTanuloNeve), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(200, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameTanuloNeve), ResourceType = typeof(ImportExportGondviseloResource))]
public string TanuloNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportGondviseloResource.ImportHeaderNameTanuloOktatasiAzonosito), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(11, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[KretaRegularExpression(Constants.RegularExpressions.OktatasiAzonositoTanulo, ErrorMessageResourceName = nameof(ErrorResource.OktatasiAzonositoFormatumaNemMegfeleloTanulo), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameTanuloOktatasiAzonosito), ResourceType = typeof(ImportExportGondviseloResource))]
public string TanuloOktatasiAzonositoImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloNevElotag), typeof(ImportExportGondviseloResource))]
[MaxLength(200, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloNevElotag), ResourceType = typeof(ImportExportGondviseloResource))]
public string GondviseloNevElotagImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloVezetekNev), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(200, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloVezetekNev), ResourceType = typeof(ImportExportGondviseloResource))]
public string GondviseloVezeteknevImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloKeresztNev), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(200, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloKeresztNev), ResourceType = typeof(ImportExportGondviseloResource))]
public string GondviseloKeresztnevImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 05, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloRokonsagiFoka), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloRokonsagiFoka), ResourceType = typeof(ImportExportGondviseloResource))]
public string GondviseloRokonsagiFokaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 06, nameof(ImportExportGondviseloResource.ImportHeaderNameTorvenyesKepviselo), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameTorvenyesKepviselo), ResourceType = typeof(ImportExportGondviseloResource))]
public string TorvenyesKepviseloImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 07, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloTelefonszama), typeof(ImportExportGondviseloResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[PhoneExtended(ErrorMessageResourceName = nameof(ErrorResource.ATelefonszamFormatumaNemMegfelelo), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloTelefonszama), ResourceType = typeof(ImportExportGondviseloResource))]
public string GondviseloTelefonszamaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 08, nameof(ImportExportGondviseloResource.ImportHeaderNameTelefonTipus), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameTelefonTipus), ResourceType = typeof(ImportExportGondviseloResource))]
public string TelefonTipusImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 09, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloEmailCime), typeof(ImportExportGondviseloResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[EmailAddressExtended(true, true, ErrorMessageResourceName = nameof(ErrorResource.NemMegfeleloFormatumuAzEmailCim), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloEmailCime), ResourceType = typeof(ImportExportGondviseloResource))]
public string GondviseloEmailCimeImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 10, nameof(ImportExportGondviseloResource.ImportHeaderNameEmailTipus), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameEmailTipus), ResourceType = typeof(ImportExportGondviseloResource))]
public string EmailTipusImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 11, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimTipusa), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimTipusa), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimTipusaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 12, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimOrszag), typeof(ImportExportGondviseloResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimOrszag), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimOrszagImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 13, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimIranyitoszam), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimIranyitoszam), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimIranyitoszamImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 14, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHelysegNev), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHelysegNev), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimHelysegNevImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 15, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletNev), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletNev), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimKozteruletNevImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 16, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletJelleg), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletJelleg), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimKozteruletJellegeImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 17, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHazszam), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHazszam), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimHazszamImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 18, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimEmelet), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimEmelet), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimEmeletImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 19, nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimAjto), typeof(ImportExportGondviseloResource))]
[Display(Name = nameof(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimAjto), ResourceType = typeof(ImportExportGondviseloResource))]
public string CimAjtoImportData { get; set; }
public string FelhasznaloElotag => GetElotagFromTeljesNev(TanuloNeveImportData);
public string FelhasznaloVezeteknev => GetVezeteknevFromTeljesNev(TanuloNeveImportData);
public string FelhasznaloKeresztnev => GetKeresztnevekFromTeljesNev(TanuloNeveImportData);
public string FelhasznaloOktatasiAzonosito => GetStringValue(TanuloOktatasiAzonositoImportData);
public string GondviseloNevElotag => GetStringValue(GondviseloNevElotagImportData);
public string GondviseloVezeteknev => GetStringValue(GondviseloVezeteknevImportData);
public string GondviseloKeresztnev => GetStringValue(GondviseloKeresztnevImportData);
public int? RokonsagiFokId => string.IsNullOrWhiteSpace(GondviseloRokonsagiFokaImportData) ? (int)RokonsagiFokEnum.na : ((int)GeneratedAdatszotarTipusEnum.RokonsagiFok).GetItemIdByTypeAndName(GondviseloRokonsagiFokaImportData, _tanevId);
public string RokonsagiFokNev => RokonsagiFokId?.GetDisplayName<RokonsagiFokEnum>(_tanevId);
public bool? IsTorvenyesKepviselo => GetBooleanValue(TorvenyesKepviseloImportData);
public string Telefonszam => GetStringValue(GondviseloTelefonszamaImportData);
public int? TelefonTipus => string.IsNullOrWhiteSpace(TelefonTipusImportData) ? (int)TelefonTipusEnum.Ismeretlen : ((int)GeneratedAdatszotarTipusEnum.TelefonTipus).GetItemIdByTypeAndName(TelefonTipusImportData, _tanevId);
public string EmailCim => GetStringValue(GondviseloEmailCimeImportData);
public int? EmailTipus => string.IsNullOrWhiteSpace(EmailTipusImportData) ? (int)EmailTipusEnum.Na : ((int)GeneratedAdatszotarTipusEnum.EmailTipus).GetItemIdByTypeAndName(EmailTipusImportData, _tanevId);
public int? CimTipusaId => ((int)GeneratedAdatszotarTipusEnum.CimTipus).GetItemIdByTypeAndName(CimTipusaImportData, _tanevId);
public string CimTipusaNev => CimTipusaId?.GetDisplayName<CimTipusEnum>(_tanevId);
public int? CimOrszagId => ((int)GeneratedAdatszotarTipusEnum.OrszagTipus).GetItemIdByTypeAndName(CimOrszagImportData, _tanevId);
public string CimIranyitoszam => GetStringValue(CimIranyitoszamImportData);
public string CimHelysegNev => GetStringValue(CimHelysegNevImportData);
public string CimKozteruletNev => GetStringValue(CimKozteruletNevImportData);
public int? CimKozteruletJellegId => ((int)GeneratedAdatszotarTipusEnum.KozteruletJelleg).GetItemIdByTypeAndName(CimKozteruletJellegeImportData, _tanevId);
public string CimKozteruletJellegeNev => CimKozteruletJellegId?.GetDisplayName<KozteruletJellegEnum>(_tanevId) ?? CimKozteruletJellegeImportData;
public string CimHazszam => GetStringValue(CimHazszamImportData);
public string CimEmelet => GetStringValue(CimEmeletImportData);
public string CimAjto => GetStringValue(CimAjtoImportData);
public int? FelhasznaloId { get; set; }
public int? TelefonId { get; set; }
public int? EmailId { get; set; }
public int? CimId { get; set; }
public int OperationTelefon { get; set; }
public int OperationEmail { get; set; }
public int OperationCim { get; set; }
public string CompareHashTelefon { get; set; }
public string CompareHashEmail { get; set; }
public string CompareHashCim { get; set; }
public GondviseloItemCo Gondviselo { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//NOTE: Ha van megadva bármilyen érték az import data-ban, hogy ne legyen dupla validálás a required miatt.
if (!string.IsNullOrWhiteSpace(TanuloNeveImportData) &&
!string.IsNullOrWhiteSpace(TanuloOktatasiAzonositoImportData))
{
if (!FelhasznaloId.IsEntityId())
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaEzzelAzOktatasiAzonositovalNemLetezikTanuloEbbenATanevben);
}
}
//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(FelhasznaloVezeteknev) || string.IsNullOrWhiteSpace(FelhasznaloKeresztnev)))
{
yield return new ValidationResult(ImportExportGondviseloResource.ATanuloNeveFormatumaNemMegfelelo);
}
//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(GondviseloVezeteknevImportData) || string.IsNullOrWhiteSpace(GondviseloKeresztnevImportData))
{
yield return new ValidationResult(ImportExportGondviseloResource.AGondviseloNeveFormatumaNemMegfelelo);
}
//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(GondviseloRokonsagiFokaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!RokonsagiFokId.IsEntityId())
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaNincsIlyenRokonsagiFok);
}
}
//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(CimTipusaImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!CimTipusaId.IsEntityId())
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaNincsIlyenCimTipus);
}
else
{
if (CimTipusaId.Value != (int)CimTipusEnum.allando_lakcim)
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaCsakAllandoLakcimTipusImportalhato);
}
}
}
//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(EmailTipusImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!EmailTipus.IsEntityId())
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaNincsIlyenEmailTipus);
}
}
//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(TelefonTipusImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!TelefonTipus.IsEntityId())
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaNincsIlyenTelefonTipus);
}
}
//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(CimOrszagImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!CimOrszagId.IsEntityId())
{
yield return new ValidationResult(ImportExportGondviseloResource.HibaNemMegfeleloOrszagnev);
}
}
}
}
public class TelefonGondviseloImportJsonItemCo : BaseImportJsonItemCo
{
private readonly int _tanevId;
public TelefonGondviseloImportJsonItemCo(GondviseloImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
_tanevId = tanevId;
Id = importItemCo.TelefonId;
//NOTE: Az FelhasznaloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van tanuló id-ja!
FelhasznaloId = importItemCo.FelhasznaloId.Value;
FelhasznaloElotag = Extensions.NameExtensions.CleanElotag(importItemCo.FelhasznaloElotag);
FelhasznaloVezeteknev = importItemCo.FelhasznaloVezeteknev.ReplaceMultipleSpacesAndTrim();
FelhasznaloKeresztnev = importItemCo.FelhasznaloKeresztnev.ReplaceMultipleSpacesAndTrim();
Nev = Extensions.NameExtensions.GetNevSorrendben("F", Extensions.NameExtensions.CleanElotag(importItemCo.GondviseloNevElotag), importItemCo.GondviseloVezeteknev, importItemCo.GondviseloKeresztnev);
//NOTE: Az RokonsagiFokId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van rokonsági foka!
RokonsagiFokId = importItemCo.RokonsagiFokId.Value;
RokonsagiFokNev = importItemCo.RokonsagiFokNev;
Telefonszam = importItemCo.Telefonszam;
TipusId = importItemCo.TelefonTipus;
IsAlapertelmezett = SDAConvert.ToSDABoolean(true);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationTelefon;
}
#region Import Json Properties
[JsonProperty("Nev")]
public string Nev { get; set; }
[JsonProperty("RokonsagiFokId")]
public int? RokonsagiFokId { get; set; }
[JsonIgnore]
public string RokonsagiFokNev { get; set; }
[JsonProperty("C_TELEFONSZAM")]
public string Telefonszam { get; set; }
[JsonProperty("C_FELHASZNALOID")]
public int FelhasznaloId { get; set; }
[JsonIgnore]
public string FelhasznaloElotag { get; set; }
[JsonIgnore]
public string FelhasznaloVezeteknev { get; set; }
[JsonIgnore]
public string FelhasznaloKeresztnev { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_TELEFONTIPUSA")]
public int? TipusId { get; set; }
[JsonIgnore]
public string TipusNev => TipusId?.GetDisplayName<TelefonTipusEnum>(_tanevId);
[JsonProperty("C_LEIRAS")]
public string Leiras => null;
[JsonProperty("C_ISPUBLIC")]
public string IsPublic => SDAConvert.ToSDABoolean(false);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class EmailGondviseloImportJsonItemCo : BaseImportJsonItemCo
{
public EmailGondviseloImportJsonItemCo(GondviseloImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.EmailId;
//NOTE: Az FelhasznaloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van tanuló id-ja!
FelhasznaloId = importItemCo.FelhasznaloId.Value;
FelhasznaloElotag = Extensions.NameExtensions.CleanElotag(importItemCo.FelhasznaloElotag);
FelhasznaloVezeteknev = importItemCo.FelhasznaloVezeteknev.ReplaceMultipleSpacesAndTrim();
FelhasznaloKeresztnev = importItemCo.FelhasznaloKeresztnev.ReplaceMultipleSpacesAndTrim();
Nev = Extensions.NameExtensions.GetNevSorrendben("F", Extensions.NameExtensions.CleanElotag(importItemCo.GondviseloNevElotag), importItemCo.GondviseloVezeteknev, importItemCo.GondviseloKeresztnev);
//NOTE: Az RokonsagiFokId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van rokonsági foka!
RokonsagiFokId = importItemCo.RokonsagiFokId.Value;
RokonsagiFokNev = importItemCo.RokonsagiFokNev;
EmailCim = importItemCo.EmailCim;
TipusId = importItemCo.EmailTipus;
TipusNev = TipusId?.GetDisplayName<EmailTipusEnum>(tanevId);
IsAlapertelmezett = SDAConvert.ToSDABoolean(true);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationEmail;
}
#region Import Json Properties
[JsonIgnore]
public string FelhasznaloElotag { get; set; }
[JsonIgnore]
public string FelhasznaloVezeteknev { get; set; }
[JsonIgnore]
public string FelhasznaloKeresztnev { get; set; }
[JsonProperty("Nev")]
public string Nev { get; set; }
[JsonProperty("RokonsagiFokId")]
public int? RokonsagiFokId { get; set; }
[JsonIgnore]
public string RokonsagiFokNev { get; set; }
[JsonProperty("C_FELHASZNALOID")]
public int FelhasznaloId { get; set; }
[JsonProperty("C_EMAILCIM")]
public string EmailCim { get; set; }
[JsonProperty("C_EMAILTIPUSA")]
public int? TipusId { get; set; }
[JsonIgnore]
public string TipusNev { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ISPUBLIC")]
public string IsPublic => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISHIBASANMEGADVA")]
public string IsHibasanMegadva => SDAConvert.ToSDABoolean(false);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class CimGondviseloImportJsonItemCo : BaseImportJsonItemCo
{
public CimGondviseloImportJsonItemCo(GondviseloImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.CimId;
//NOTE: Az FelhasznaloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van tanuló id-ja!
FelhasznaloId = importItemCo.FelhasznaloId.Value;
FelhasznaloElotag = Extensions.NameExtensions.CleanElotag(importItemCo.FelhasznaloElotag);
FelhasznaloVezeteknev = importItemCo.FelhasznaloVezeteknev.ReplaceMultipleSpacesAndTrim();
FelhasznaloKeresztnev = importItemCo.FelhasznaloKeresztnev.ReplaceMultipleSpacesAndTrim();
Nev = Extensions.NameExtensions.GetNevSorrendben("F", Extensions.NameExtensions.CleanElotag(importItemCo.GondviseloNevElotag), importItemCo.GondviseloVezeteknev, importItemCo.GondviseloKeresztnev);
//NOTE: Az RokonsagiFokId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van rokonsági foka!
RokonsagiFokId = importItemCo.RokonsagiFokId.Value;
RokonsagiFokNev = importItemCo.RokonsagiFokNev;
TipusId = importItemCo.CimTipusaId;
TipusNev = TipusId?.GetDisplayName<CimTipusEnum>(tanevId);
OrszagId = importItemCo.CimOrszagId;
Iranyitoszam = importItemCo.CimIranyitoszam;
Helyseg = importItemCo.CimHelysegNev;
Kozterulet = importItemCo.CimKozteruletNev;
KozterulegJellegeNev = importItemCo.CimKozteruletJellegeNev;
Hazszam = importItemCo.CimHazszam;
Emelet = importItemCo.CimEmelet;
Ajto = importItemCo.CimAjto;
IsAlapertelmezett = SDAConvert.ToSDABoolean(importItemCo.Gondviselo?.AllandoLakcim?.IsAlapertelmezett ?? true);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationCim;
}
#region Import Json Properties
[JsonIgnore]
public string FelhasznaloElotag { get; set; }
[JsonIgnore]
public string FelhasznaloVezeteknev { get; set; }
[JsonIgnore]
public string FelhasznaloKeresztnev { get; set; }
[JsonProperty("Nev")]
public string Nev { get; set; }
[JsonProperty("RokonsagiFokId")]
public int? RokonsagiFokId { get; set; }
[JsonIgnore]
public string RokonsagiFokNev { get; set; }
[JsonProperty("C_FELHASZNALOID")]
public int FelhasznaloId { get; set; }
[JsonProperty("C_CIMTIPUSA")]
public int? TipusId { get; set; }
[JsonIgnore]
public string TipusNev { get; set; }
[JsonProperty("C_ORSZAG")]
public int? OrszagId { get; set; }
[JsonProperty("C_IRANYITOSZAM")]
public string Iranyitoszam { get; set; }
[JsonProperty("C_VAROS")]
public string Helyseg { get; set; }
[JsonProperty("C_KOZTERULET")]
public string Kozterulet { get; set; }
[JsonProperty("C_KOZTERULETJELLEGENEV")]
public string KozterulegJellegeNev { get; set; }
[JsonProperty("C_HAZSZAM")]
public string Hazszam { get; set; }
[JsonProperty("C_EMELET")]
public string Emelet { get; set; }
[JsonProperty("C_AJTO")]
public string Ajto { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
#endregion Import Json Properties
}
public class GondviseloImportJsonItemCo : BaseImportJsonItemCo
{
public GondviseloImportJsonItemCo(GondviseloImportItemCo importItemCo, bool isSzirIntezmeny, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.Id;
//NOTE: Az FelhasznaloId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van tanuló id-ja!
FelhasznaloId = importItemCo.FelhasznaloId.Value;
FelhasznaloElotag = Extensions.NameExtensions.CleanElotag(importItemCo.FelhasznaloElotag);
FelhasznaloVezeteknev = importItemCo.FelhasznaloVezeteknev.ReplaceMultipleSpacesAndTrim();
FelhasznaloKeresztnev = importItemCo.FelhasznaloKeresztnev.ReplaceMultipleSpacesAndTrim();
FelhasznaloOktatasiAzonosito = importItemCo.FelhasznaloOktatasiAzonosito;
Elotag = Extensions.NameExtensions.CleanElotag(importItemCo.GondviseloNevElotag);
Vezeteknev = importItemCo.GondviseloVezeteknev.ReplaceMultipleSpacesAndTrim();
Keresztnev = importItemCo.GondviseloKeresztnev.ReplaceMultipleSpacesAndTrim();
Nev = Extensions.NameExtensions.GetNevSorrendben("F", Elotag, Vezeteknev, Keresztnev);
//NOTE: Az RokonsagiFokId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van rokonsági foka!
RokonsagiFokId = importItemCo.RokonsagiFokId.Value;
RokonsagiFokNev = importItemCo.RokonsagiFokNev;
IsTorvenyesKepviselo = SDAConvert.ToSDABoolean(importItemCo.IsTorvenyesKepviselo ?? false);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
IsEmailErtesites = SDAConvert.ToSDABoolean(!isSzirIntezmeny);
}
#region Import Json Properties
[JsonIgnore]
public string FelhasznaloElotag { get; set; }
[JsonIgnore]
public string FelhasznaloVezeteknev { get; set; }
[JsonIgnore]
public string FelhasznaloKeresztnev { get; set; }
[JsonIgnore]
public string Elotag { get; set; }
[JsonIgnore]
public string Vezeteknev { get; set; }
[JsonIgnore]
public string Keresztnev { get; set; }
[JsonIgnore]
public string FelhasznaloOktatasiAzonosito { get; set; }
[JsonProperty("C_NEV")]
public string Nev { get; set; }
[JsonProperty("C_ROKONSAGFOKA")]
public int RokonsagiFokId { get; set; }
[JsonIgnore]
public string RokonsagiFokNev { get; set; }
[JsonProperty("C_TANULOID")]
public int FelhasznaloId { get; set; }
[JsonProperty("C_ISTORVENYESKEPVISELO")]
public string IsTorvenyesKepviselo { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_AKTIV")]
public string IsAktiv => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_GONDVISELESKEZDETE")]
public DateTime? GondviselesKezdete => null;
[JsonProperty("C_GONDVISELESVEGE")]
public DateTime? GondviselesVege => null;
[JsonProperty("C_GYERMEKETEGYEDULNEVELO")]
public string IsGyermeketEgyedulNevelo => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_NYUGDIJAS")]
public string IsNyugdijas => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISEMAILERTESITES")]
public string IsEmailErtesites { get; set; }
[JsonProperty("C_EGYEDIAZONOSITO")]
public string EgyediAzonosito => Guid.Empty.ToString();
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,11 @@
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class ImportItemCompareCo
{
public int? Id { get; set; }
public string CompareHash { get; set; }
public bool Importalt { get; set; }
}
}

View 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.Validation;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class NebuloImportCo : BaseImportCo
{
[JsonIgnore]
public List<NebuloImportItemCo> MainImportItemList { get; set; } = new List<NebuloImportItemCo>();
[JsonIgnore]
public List<NebuloImportItemCo> NemImportalhatoItemList { get; set; } = new List<NebuloImportItemCo>();
[JsonProperty("T_NEBULO_OSSZES")]
public List<NebuloImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public int NebuloImportTipus { get; set; }
[JsonIgnore]
public List<NebuloCo> NebuloCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (NebuloImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
var oktatasiAzonositoToCompare = importItem.OktatasiAzonositoSzama?.ToComparableString();
if (!string.IsNullOrWhiteSpace(oktatasiAzonositoToCompare))
{
if (NebuloCoList.Any(x => x.OktatasiAzonositoSzama == oktatasiAzonositoToCompare))
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportNebuloResource.ErrorNemMegfeleloOktAzon, importItem.OktatasiAzonositoSzama)));
}
}
if (MainImportItemList.Where(x => x.OktatasiAzonositoSzamImportData == oktatasiAzonositoToCompare).ToList().Count > 1)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportNebuloResource.ErrorDuplikaltOktAzon, importItem.OktatasiAzonositoSzama)));
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportNebuloResource.ImportHeaderNameSzuletesiVezeteknev,
ImportExportNebuloResource.ImportHeaderNameSzuletesiKeresztnev,
ImportExportNebuloResource.ImportHeaderNameAnyjaNeveVezeteknev,
ImportExportNebuloResource.ImportHeaderNameAnyjaNeveKeresztnev,
ImportExportNebuloResource.ImportHeaderNameSzuletesiIdo,
ImportExportNebuloResource.ImportHeaderNameSzuletesiTelepules
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class NebuloImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private NebuloImportItemCo() { }
public NebuloImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[KretaRegularExpression(Constants.RegularExpressions.OktatasiAzonosito, ErrorMessageResourceName = nameof(ErrorResource.OktatasiAzonositoFormatumaNemMegfelelo), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameOktatasiAzonositoSzam), ResourceType = typeof(ImportExportNebuloResource))]
public string OktatasiAzonositoSzamImportData { get; set; }
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameViseltElonev), ResourceType = typeof(ImportExportNebuloResource))]
public string ViseltElonevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameViseltVezeteknev), ResourceType = typeof(ImportExportNebuloResource))]
public string ViseltVezeteknevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameViseltKeresztnev), ResourceType = typeof(ImportExportNebuloResource))]
public string ViseltKeresztnevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameSzuletesiVezeteknev), ResourceType = typeof(ImportExportNebuloResource))]
public string SzuletesiVezeteknevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameSzuletesiKeresztnev), ResourceType = typeof(ImportExportNebuloResource))]
public string SzuletesiKeresztnevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveVezeteknev), ResourceType = typeof(ImportExportNebuloResource))]
public string AnyjaNeveVezeteknevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveKeresztnev), ResourceType = typeof(ImportExportNebuloResource))]
public string AnyjaNeveKeresztnevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameSzuletesiIdo), ResourceType = typeof(ImportExportNebuloResource))]
public string SzuletesiIdoImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(50, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameSzuletesiTelepules), ResourceType = typeof(ImportExportNebuloResource))]
public string SzuletesiTelepulesImportData { get; set; }
[MaxLength(250, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimOrszag), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimOrszagImportData { get; set; }
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimTelepules), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimTelepulesImportData { get; set; }
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimIranyitoszam), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimIranyitoszamImportData { get; set; }
[MaxLength(40, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletNev), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimKozteruletNevImportData { get; set; }
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletJelleg), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimKozteruletJellegImportData { get; set; }
[MaxLength(30, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimHazszam), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimHazszamImportData { get; set; }
[MaxLength(250, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimOrszag), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimOrszagImportData { get; set; }
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimTelepules), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimTelepulesImportData { get; set; }
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimIranyitoszam), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimIranyitoszamImportData { get; set; }
[MaxLength(40, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletNev), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimKozteruletNevImportData { get; set; }
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletJelleg), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimKozteruletJellegImportData { get; set; }
[MaxLength(30, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimHazszam), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimHazszamImportData { get; set; }
#region Unused Import Data
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameFenntartoAzonosito), ResourceType = typeof(ImportExportNebuloResource))]
public string FenntartoAzonositoImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameFenntartoMegnevezese), ResourceType = typeof(ImportExportNebuloResource))]
public string FenntartoMegnevezeseImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegTipusa), ResourceType = typeof(ImportExportNebuloResource))]
public string ErvenyesKotelezettsegTipusaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameViseltNevNevsorrend), ResourceType = typeof(ImportExportNebuloResource))]
public string ViseltNevNevsorrendImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameSzuletesiElonev), ResourceType = typeof(ImportExportNebuloResource))]
public string SzuletesiElonevImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameSzuletesiNevNevsorrend), ResourceType = typeof(ImportExportNebuloResource))]
public string SzuletesiNevNevsorrendImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveElonev), ResourceType = typeof(ImportExportNebuloResource))]
public string AnyjaNeveElonevImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveNevsorrend), ResourceType = typeof(ImportExportNebuloResource))]
public string AnyjaNeveNevsorrendImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimPontositas), ResourceType = typeof(ImportExportNebuloResource))]
public string TartozkodasiCimPontositasImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimPontositas), ResourceType = typeof(ImportExportNebuloResource))]
public string AllandoLakcimPontositasImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegKezdete), ResourceType = typeof(ImportExportNebuloResource))]
public string ErvenyesKotelezettsegKezdeteImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegVege), ResourceType = typeof(ImportExportNebuloResource))]
public string ErvenyesKotelezettsegVegeImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameHalasztasJogcime), ResourceType = typeof(ImportExportNebuloResource))]
public string HalasztasJogcimeImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervTipusa), ResourceType = typeof(ImportExportNebuloResource))]
public string HalasztastEngedelyezoSzervTipusaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervMegnevezese), ResourceType = typeof(ImportExportNebuloResource))]
public string HalasztastEngedelyezoSzervMegnevezeseImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameHalasztasHatalyaVegdatuma), ResourceType = typeof(ImportExportNebuloResource))]
public string HalasztasHatalyaVegdatumaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonya), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonyaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyTipusa), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyTipusaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyStatusza), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyStatuszaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositoja), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositojaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyNeve), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyIntezmenyNeveImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszama), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszamaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositoja), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositojaImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeve), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeveImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCime), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCimeImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyKezdete), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonyKezdeteImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdete), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdeteImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVege), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVegeImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesJogcime), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettseghezKapcsolodoJogviszonySzunetelesJogcimeImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameKotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesiti), ResourceType = typeof(ImportExportNebuloResource))]
public string KotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesitiImportData { get; set; }
[Display(Name = nameof(ImportExportNebuloResource.ImportHeaderNameAzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatuma), ResourceType = typeof(ImportExportNebuloResource))]
public string AzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatumaImportData { get; set; }
#endregion Unused Import Data
public string Elotag => GetStringValue(ViseltElonevImportData);
public string Vezeteknev => GetStringValue(ViseltVezeteknevImportData);
public string Keresztnev => GetStringValue(ViseltKeresztnevImportData);
public string SzuletesiVezeteknev => GetStringValue(SzuletesiVezeteknevImportData);
public string SzuletesiKeresztnev => GetStringValue(SzuletesiKeresztnevImportData);
public string AnyjaVezeteknev => GetStringValue(AnyjaNeveVezeteknevImportData);
public string AnyjaKeresztnev => GetStringValue(AnyjaNeveKeresztnevImportData);
public string SzuletesiHely => GetStringValue(SzuletesiTelepulesImportData);
public DateTime? SzuletesiIdo => GetDateTimeValue(SzuletesiIdoImportData);
public string SzuletesiIdoString => GetDateTimeString(SzuletesiIdo);
public string OktatasiAzonositoSzama => GetStringValue(OktatasiAzonositoSzamImportData);
public int? OrszagTipusId => ((int)GeneratedAdatszotarTipusEnum.OrszagTipus).GetItemIdByTypeAndName(AllandoLakcimOrszagImportData, _tanevId);
public string HelysegNev => GetStringValue(AllandoLakcimTelepulesImportData);
public string Iranyitoszam => GetStringValue(AllandoLakcimIranyitoszamImportData);
public string KozteruletNev => GetStringValue(AllandoLakcimKozteruletNevImportData);
public int? KozteruletJellegeId => ((int)GeneratedAdatszotarTipusEnum.KozteruletJelleg).GetItemIdByTypeAndName(AllandoLakcimKozteruletJellegImportData, _tanevId);
public string KozteruletJellegeNev => KozteruletJellegeId.GetDisplayName<KozteruletJellegEnum>(_tanevId, defaultValue: null);
public string Hazszam => GetStringValue(AllandoLakcimHazszamImportData);
public int? ThOrszagTipusId => ((int)GeneratedAdatszotarTipusEnum.OrszagTipus).GetItemIdByTypeAndName(TartozkodasiCimOrszagImportData, _tanevId);
public string ThHelysegNev => GetStringValue(TartozkodasiCimTelepulesImportData);
public string ThIranyitoszam => GetStringValue(TartozkodasiCimIranyitoszamImportData);
public string ThKozteruletNev => GetStringValue(TartozkodasiCimKozteruletNevImportData);
public int? ThKozteruletJellegeId => ((int)GeneratedAdatszotarTipusEnum.KozteruletJelleg).GetItemIdByTypeAndName(TartozkodasiCimKozteruletJellegImportData, _tanevId);
public string ThKozteruletJellegeNev => ThKozteruletJellegeId.GetDisplayName<KozteruletJellegEnum>(_tanevId, defaultValue: null);
public string ThHazszam => GetStringValue(TartozkodasiCimHazszamImportData);
//NOTE: A tartózkodási címe azonos, ha minden értéke üres az importban.
public bool ThCimeAzonos =>
!ThOrszagTipusId.IsEntityId() &&
string.IsNullOrWhiteSpace(ThHelysegNev) &&
string.IsNullOrWhiteSpace(ThIranyitoszam) &&
string.IsNullOrWhiteSpace(ThKozteruletNev) &&
!ThKozteruletJellegeId.IsEntityId() &&
string.IsNullOrWhiteSpace(ThHazszam);
public int? FeladatellatasiHelyId { get; set; }
public int FelvetelStatuszaId { get; set; }
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//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(SzuletesiIdoImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!SzuletesiIdo.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, ImportExportNebuloResource.ImportHeaderNameSzuletesiIdo.ToLowerInvariant(), SzuletesiIdoImportData));
}
else
{
var minimumDate = new DateTime(Now.Date.Year - 18, 1, 1);
var maximumDate = new DateTime(Now.Date.Year, 1, 1);
var minOk = SzuletesiIdo >= minimumDate;
var maxOk = SzuletesiIdo <= maximumDate;
if (!minOk || !maxOk)
{
yield return new ValidationResult(
string.Format(BeiratkozasResource.ASzuletesiIdoCsakKozeEshet,
minimumDate.ToString(Constants.ToStringPattern.HungarianDate),
maximumDate.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.
if (!string.IsNullOrWhiteSpace(AllandoLakcimOrszagImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!OrszagTipusId.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidFormat, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimOrszag.ToLowerInvariant(), AllandoLakcimOrszagImportData));
}
}
//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(AllandoLakcimKozteruletJellegImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!KozteruletJellegeId.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidFormat, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletJelleg.ToLowerInvariant(), AllandoLakcimKozteruletJellegImportData));
}
}
//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(TartozkodasiCimOrszagImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!ThOrszagTipusId.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidFormat, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimOrszag.ToLowerInvariant(), TartozkodasiCimOrszagImportData));
}
}
//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(TartozkodasiCimKozteruletJellegImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!ThKozteruletJellegeId.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidFormat, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletJelleg.ToLowerInvariant(), TartozkodasiCimKozteruletJellegImportData));
}
}
}
#endregion Validate
}
public class NebuloImportJsonItemCo : BaseImportJsonItemCo
{
public NebuloImportJsonItemCo(NebuloImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Elotag = importItemCo.Elotag;
Vezeteknev = importItemCo.Vezeteknev;
Keresztnev = importItemCo.Keresztnev;
SzuletesiVezeteknev = importItemCo.SzuletesiVezeteknev;
SzuletesiKeresztnev = importItemCo.SzuletesiKeresztnev;
AnyjaVezeteknev = importItemCo.AnyjaVezeteknev;
AnyjaKeresztnev = importItemCo.AnyjaKeresztnev;
SzuletesiHely = importItemCo.SzuletesiHely;
SzuletesiIdo = importItemCo.SzuletesiIdo;
SzuletesiIdoString = importItemCo.SzuletesiIdoString;
OktatasiAzonositoSzama = importItemCo.OktatasiAzonositoSzama;
OrszagTipusId = importItemCo.OrszagTipusId;
HelysegNev = importItemCo.HelysegNev;
Iranyitoszam = importItemCo.Iranyitoszam;
KozteruletNev = importItemCo.KozteruletNev;
KozteruletJellegeId = importItemCo.KozteruletJellegeId;
KozteruletJellegeNev = importItemCo.KozteruletJellegeNev;
Hazszam = importItemCo.Hazszam;
ThOrszagTipusId = importItemCo.ThOrszagTipusId;
ThHelysegNev = importItemCo.ThHelysegNev;
ThIranyitoszam = importItemCo.ThIranyitoszam;
ThKozteruletNev = importItemCo.ThKozteruletNev;
ThKozteruletJellegeId = importItemCo.ThKozteruletJellegeId;
ThKozteruletJellegeNev = importItemCo.ThKozteruletJellegeNev;
ThHazszam = importItemCo.ThHazszam;
ThCimeAzonos = SDAConvert.ToSDABoolean(importItemCo.ThCimeAzonos);
FeladatellatasiHelyId = importItemCo.FeladatellatasiHelyId;
FelvetelStatuszaId = importItemCo.FelvetelStatuszaId;
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonProperty("C_ELOTAG")]
public string Elotag { get; set; }
[JsonProperty("C_TANULOCSALADINEVE")]
public string Vezeteknev { get; set; }
[JsonProperty("C_TANULOUTONEVE")]
public string Keresztnev { get; set; }
[JsonProperty("C_SZULETESICSALADINEVE")]
public string SzuletesiVezeteknev { get; set; }
[JsonProperty("C_SZULETESIUTONEVE")]
public string SzuletesiKeresztnev { get; set; }
[JsonProperty("C_EDESANYJASZULETESICSALADINEV")]
public string AnyjaVezeteknev { get; set; }
[JsonProperty("C_EDESANYJASZULETESIUTONEVE")]
public string AnyjaKeresztnev { get; set; }
[JsonProperty("C_SZULETESIHELY")]
public string SzuletesiHely { get; set; }
[JsonIgnore]
public DateTime? SzuletesiIdo { get; set; }
[JsonProperty("C_SZULETESIIDO")]
public string SzuletesiIdoString { get; set; }
[JsonProperty("C_OKTATASIAZONOSITOSZAMA")]
public string OktatasiAzonositoSzama { get; set; }
[JsonProperty("C_ORSZAGTIPUSID")]
public int? OrszagTipusId { get; set; }
[JsonProperty("C_HELYSEGNEV")]
public string HelysegNev { get; set; }
[JsonProperty("C_IRANYITOSZAM")]
public string Iranyitoszam { get; set; }
[JsonProperty("C_KOZTERULETNEV")]
public string KozteruletNev { get; set; }
[JsonProperty("C_KOZTERULETJELLEGE")]
public int? KozteruletJellegeId { get; set; }
[JsonProperty("C_KOZTERULETJELLEGENEV")]
public string KozteruletJellegeNev { get; set; }
[JsonProperty("C_HAZSZAM")]
public string Hazszam { get; set; }
[JsonProperty("C_THORSZAGTIPUSID")]
public int? ThOrszagTipusId { get; set; }
[JsonProperty("C_THHELYSEGNEV")]
public string ThHelysegNev { get; set; }
[JsonProperty("C_THIRANYITOSZAM")]
public string ThIranyitoszam { get; set; }
[JsonProperty("C_THKOZTERULETNEV")]
public string ThKozteruletNev { get; set; }
[JsonProperty("C_THKOZTERULETJELLEGE")]
public int? ThKozteruletJellegeId { get; set; }
[JsonProperty("C_THKOZTERULETJELLEGENEV")]
public string ThKozteruletJellegeNev { get; set; }
[JsonProperty("C_THHAZSZAM")]
public string ThHazszam { get; set; }
[JsonProperty("C_TARTOZKODASIHELYAZONOS")]
public string ThCimeAzonos { get; set; }
[JsonProperty("C_FELADATELLATASIHELYID")]
public int? FeladatellatasiHelyId { get; set; }
[JsonProperty("C_FELVETELSTATUSZA")]
public int FelvetelStatuszaId { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_SZULETESIORSZAG")]
public int SzuletesiOrszag => (int)OrszagTipusEnum.Magyarorszag;
[JsonProperty("C_KEPVISELO2CIMEAZONOS")]
public string TkCimeAzonos => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_ALLAMPOLGARSAGA")]
public int Allampolgarsag => (int)AllampolgarsagEnum.magyar;
[JsonProperty("C_ANYANYELVE")]
public int Anyanyelv => (int)AnyanyelvEnum.magyar;
[JsonProperty("C_TAGOZAT")]
public int Tagozat => (int)TagozatTipusEnum.Normal_egesz_napos_iskola;
[JsonProperty("C_ELETVITELSZERUOTTLAKASKORZET")]
public string EletvitelszeruOttLakasKorzetes => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_SNILETSZAMSULY")]
public int SniLetszamSuly => 1;
[JsonProperty("C_BTMLETSZAMSULY")]
public int BtmLetszamSuly => 1;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View 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
}
}

View file

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class OrarendImportFileUploadCo
{
public List<List<string>> ImportData { get; set; }
public int OrarendImportMuvelet { get; set; }
public int OrarendImportTipus { get; set; }
public bool IsNapirendImport { get; set; }
public bool IsTtfImport { get; set; }
public bool IsOraszamUpdate { get; set; }
public bool IsOsszefuggoSzakmaiGyakorlat { get; set; }
public int FeladatellatasiHelyId { get; set; }
public DateTime? OrarendiOraLezarasDateTime { get; set; }
public DateTime OraErvenyessegMinDate { get; set; }
public DateTime OraErvenyessegMaxDate { get; set; }
public DateTime OraErvenyessegVegzosMaxDate { get; set; }
public string WorksheetName { get; set; }
public Dictionary<int, string> ExcelHeaderList { get; set; }
}
}

View file

@ -0,0 +1,340 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class OratervImportCo : BaseImportCo
{
[JsonIgnore]
public List<OratervImportItemCo> MainImportItemList { get; set; } = new List<OratervImportItemCo>();
[JsonIgnore]
public List<OratervImportItemCo> NemImportalhatoItemList { get; set; } = new List<OratervImportItemCo>();
[JsonIgnore]
public List<TantervCO> TantervCOList { get; set; }
[JsonIgnore]
public List<TantargyItemCo> TantargyCOList { get; set; }
[JsonIgnore]
public List<OratervCO> OratervCOList { get; set; }
[JsonIgnore]
public List<OratervTantargyCO> OratervTantargyCOList { get; set; }
[JsonProperty("T_TANTARGY_OSSZES")]
public List<TantargyImportJsonItemCo> TantargyImportJsonItemList { get; set; }
[JsonProperty("T_ORATERV_OSSZES")]
public List<OratervImportJsonItemCo> OratervImportJsonItemList { get; set; }
[JsonProperty("T_ORATERVTARGY_OSSZES")]
public List<OratervTargyImportJsonItemCo> OratervTantargyImportJsonItemList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (OratervImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportOratervResource.ImportHeaderNameOratervNeve,
ImportExportOratervResource.ImportHeaderNameTantargyNeve
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
foreach (var importItemCo in MainImportItemList)
{
//NOTE: Ilyen nevű óraterv már létezik az adatbázisban másik tantervben
var oratervCo = OratervCOList.SingleOrDefault(x => x.Nev == importItemCo.OratervNeve && x.TantervNev != importItemCo.TantervNeve);
if (oratervCo != default)
{
var validationResult = new ValidationResult(string.Format(ImportExportOratervResource.HibaIlyenNevuOratervMarLetezikARendszerbenATanevben, oratervCo.TantervNev, oratervCo.Nev));
if (validationResultDictionary.ContainsKey(importItemCo.LineNumber))
{
validationResultDictionary[importItemCo.LineNumber].Add(validationResult);
}
else
{
validationResultDictionary.Add(importItemCo.LineNumber, new List<ValidationResult> { validationResult });
}
}
//NOTE: Ilyen nevű óraterv már létezik az importban másik tantervben
var otherImportItemCo = MainImportItemList.FirstOrDefault(x => x.OratervNeve == importItemCo.OratervNeve && x.TantervNeve != importItemCo.TantervNeve);
if (otherImportItemCo != default)
{
var validationResult = new ValidationResult(string.Format(ImportExportOratervResource.HibaIlyenNevuOratervMarLetezikAzImportbanATanevben, otherImportItemCo.TantervNeve, otherImportItemCo.OratervNeve));
if (validationResultDictionary.ContainsKey(importItemCo.LineNumber))
{
validationResultDictionary[importItemCo.LineNumber].Add(validationResult);
}
else
{
validationResultDictionary.Add(importItemCo.LineNumber, new List<ValidationResult> { validationResult });
}
}
//NOTE: Ilyen nevű óraterv már létezik az adatbázisban másik évfolyamnál
oratervCo = OratervCOList.SingleOrDefault(x => x.Nev == importItemCo.OratervNeve && x.TantervNev == importItemCo.TantervNeve && x.Evfolyam != importItemCo.EvfolyamId);
if (oratervCo != default)
{
var validationResult = new ValidationResult(string.Format(ImportExportOratervResource.HibaIlyenNevuOratervMarLetezikARendszerbenMasikEvfolyamnal, oratervCo.EvfolyamNev, oratervCo.Nev));
if (validationResultDictionary.ContainsKey(importItemCo.LineNumber))
{
validationResultDictionary[importItemCo.LineNumber].Add(validationResult);
}
else
{
validationResultDictionary.Add(importItemCo.LineNumber, new List<ValidationResult> { validationResult });
}
}
//NOTE: Ilyen nevű óraterv már létezik az importban másik évfolyamnál
otherImportItemCo = MainImportItemList.FirstOrDefault(x => x.OratervNeve == importItemCo.OratervNeve && x.TantervNeve == importItemCo.TantervNeve && x.EvfolyamId != importItemCo.EvfolyamId);
if (otherImportItemCo != default)
{
var validationResult = new ValidationResult(string.Format(ImportExportOratervResource.HibaIlyenNevuOratervMarLetezikAzImportbanMasikEvfolyamnal, otherImportItemCo.TantervNeve, otherImportItemCo.OratervNeve));
if (validationResultDictionary.ContainsKey(importItemCo.LineNumber))
{
validationResultDictionary[importItemCo.LineNumber].Add(validationResult);
}
else
{
validationResultDictionary.Add(importItemCo.LineNumber, new List<ValidationResult> { validationResult });
}
}
}
return validationResultDictionary;
}
}
public class OratervImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private OratervImportItemCo() { }
public OratervImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
#region Fields
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportOratervResource.ImportHeaderNameTantervNeve), typeof(ImportExportOratervResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameTantervNeve), ResourceType = typeof(ImportExportOratervResource))]
public string TantervNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportOratervResource.ImportHeaderNameOratervNeve), typeof(ImportExportOratervResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameOratervNeve), ResourceType = typeof(ImportExportOratervResource))]
public string OratervNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportOratervResource.ImportHeaderNameEvfolyamNeve), typeof(ImportExportOratervResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameEvfolyamNeve), ResourceType = typeof(ImportExportOratervResource))]
public string EvfolyamNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportOratervResource.ImportHeaderNameTantargyNeve), typeof(ImportExportOratervResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameTantargyNeve), ResourceType = typeof(ImportExportOratervResource))]
[MaxLength(150, ErrorMessageResourceName = nameof(TantargyResource.ATantargyNeveMaximum150KarakterLehet), ErrorMessageResourceType = typeof(TantargyResource))]
public string TantargyNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportOratervResource.ImportHeaderNameEvesOraszam), typeof(ImportExportOratervResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameEvesOraszam), ResourceType = typeof(ImportExportOratervResource))]
[DisplayFormat(DataFormatString = Constants.DataFormats.EvesOraszam)]
[RegularExpression(Constants.RegularExpressions.EvesOraszam, ErrorMessageResourceName = nameof(ImportExportOratervResource.HibaAzEvesOraszamFormatumaNemMegfelelo), ErrorMessageResourceType = typeof(ImportExportOratervResource))]
public string EvesOraszamImportData { get; set; }
public string TantervNeve => GetStringValue(TantervNeveImportData);
public string OratervNeve => GetStringValue(OratervNeveImportData);
public string TantargyNeve => GetStringValue(TantargyNeveImportData);
public string EvfolyamNeve => GetStringValue(EvfolyamNeveImportData);
public double? EvesOraszam => GetDoubleValue(EvesOraszamImportData);
public int? TantervId { get; set; }
public int? TantargyId { get; set; }
public int? EvfolyamId => ((int)GeneratedAdatszotarTipusEnum.EvfolyamTipus).GetItemIdByTypeAndName(EvfolyamNeve, _tanevId);
public int? OratervId { get; set; }
public int? OratervTantargyId { get; set; }
public int OperationTantargy { get; set; }
public int OperationOraterv { get; set; }
public string CompareHashTantargy { get; set; }
public string CompareHashOraterv { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//NOTE: Ha van megadva bármilyen érték az import data-ban, hogy ne legyen dupla validálás a required miatt.
if (!string.IsNullOrWhiteSpace(TantervNeveImportData))
{
if (!TantervId.IsEntityId())
{
yield return new ValidationResult(ImportExportOratervResource.HibaJelenlegARendszerbenNemSzerepelIlyenNevuTanterv);
}
}
//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(TantargyNeveImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!TantargyId.IsEntityId())
{
//yield return new ValidationResult(ImportExportOratervResource.HibaJelenlegARendszerbenNemSzerepelIlyenNevuTantargy);
}
}
//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(EvfolyamNeveImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!EvfolyamId.IsEntityId())
{
yield return new ValidationResult(ImportExportOratervResource.HibaJelenlegARendszerbenNemSzerepelIlyenNevuEvfolyam);
}
}
}
}
public class OratervImportJsonItemCo : BaseImportJsonItemCo
{
public OratervImportJsonItemCo(OratervImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.OratervId;
TantervNeve = importItemCo.TantervNeve;
OratervNeve = importItemCo.OratervNeve;
EvfolyamNeve = importItemCo.EvfolyamNeve;
EvfolyamId = importItemCo.EvfolyamId;
TantervId = importItemCo.TantervId;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationOraterv;
}
[JsonIgnore]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameTantervNeve), ResourceType = typeof(ImportExportOratervResource))]
public string TantervNeve { get; set; }
[JsonIgnore]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameEvfolyamNeve), ResourceType = typeof(ImportExportOratervResource))]
public string EvfolyamNeve { get; set; }
#region Import Json Properties
[JsonProperty("C_NEV")]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameOratervNeve), ResourceType = typeof(ImportExportOratervResource))]
public string OratervNeve { get; set; }
[JsonProperty("C_EVFOLYAM")]
public int? EvfolyamId { get; set; }
[JsonProperty("C_TANTERVID")]
public int? TantervId { get; set; }
#region Default Required Import Json Properties
#endregion
#endregion
}
public class OratervTargyImportJsonItemCo : BaseImportJsonItemCo
{
public OratervTargyImportJsonItemCo(OratervImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.OratervTantargyId;
OratervNeve = importItemCo.OratervNeve;
TantargyNeve = importItemCo.TantargyNeve;
OratervId = importItemCo.OratervId;
TantargyId = importItemCo.TantargyId;
EvesOraszam = importItemCo.EvesOraszam ?? 0;
TantervNeve = importItemCo.TantervNeve;
EvfolyamNeve = importItemCo.EvfolyamNeve;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
[JsonProperty("OratervNev")]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameOratervNeve), ResourceType = typeof(ImportExportOratervResource))]
public string OratervNeve { get; set; }
[JsonProperty("TantargyNev")]
[Display(Name = nameof(ImportExportOratervResource.ImportHeaderNameTantargyNeve), ResourceType = typeof(ImportExportOratervResource))]
public string TantargyNeve { get; set; }
[JsonIgnore]
public string EvfolyamNeve { get; set; }
[JsonIgnore]
public string TantervNeve { get; set; }
#region Import Json Properties
[JsonProperty("C_TANTARGYID")]
public int? TantargyId { get; set; }
[JsonProperty("C_ORATERVID")]
public int? OratervId { get; set; }
[JsonProperty("C_EVESORASZAM")]
public double EvesOraszam { get; set; }
#region Default Required Import Json Properties
#endregion
#endregion
}
}

View file

@ -0,0 +1,181 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class TanmenetImportCo : BaseImportCo
{
[JsonIgnore]
public List<TanmenetImportItemCo> MainImportItemList { get; set; } = new List<TanmenetImportItemCo>();
[JsonIgnore]
public List<TanmenetImportItemCo> NemImportalhatoItemList { get; set; } = new List<TanmenetImportItemCo>();
[JsonProperty("T_TANMENET_OSSZES")]
public List<TanmenetImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public TantargyfelosztasItemCo Tantargyfelosztas { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (TanmenetImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportTanmenetResource.ImportHeaderNameOraszam
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class TanmenetImportItemCo : BaseImportItemCo, IValidatableObject
{
#region Fields
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportTanmenetResource.ImportHeaderNameOraszam), typeof(ImportExportTanmenetResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(4, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanmenetResource.ImportHeaderNameOraszam), ResourceType = typeof(ImportExportTanmenetResource))]
public string OraszamImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportTanmenetResource.ImportHeaderNameTema), typeof(ImportExportTanmenetResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(1000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanmenetResource.ImportHeaderNameTema), ResourceType = typeof(ImportExportTanmenetResource))]
public string TemaImportData { get; set; }
public int? OraSorszam => GetIntValue(OraszamImportData);
public string Tema => GetStringValue(TemaImportData);
public TanmenetItemCo Tanmenet { get; set; }
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//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(OraszamImportData))
{
//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, ImportExportTanmenetResource.ImportHeaderNameOraszam, OraszamImportData));
}
else
{
if (OraSorszam < 0 || OraSorszam > 720)
{
yield return new ValidationResult(ErrorResource.AzOraSzamaCsakEgy0Es720KozottiEgeszSzamLehet);
}
}
}
}
#endregion Validate
}
public class TanmenetImportJsonItemCo : BaseImportJsonItemCo
{
public TanmenetImportJsonItemCo(TanmenetImportItemCo importItemCo, TantargyfelosztasItemCo tantargyfelosztasItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Now = DateTime.Now;
if (importItemCo.Tanmenet != null)
{
BejegyzesIdeje = importItemCo.Tanmenet.BejegyzesIdeje;
BejegyzesIdejeString = importItemCo.Tanmenet.BejegyzesIdejeString;
}
else
{
BejegyzesIdeje = Now;
BejegyzesIdejeString = Now.ToString(Constants.ToStringPattern.SortableDateTimePattern);
}
TantargyId = tantargyfelosztasItemCo.TantargyId;
OsztalyCsoportId = tantargyfelosztasItemCo.OsztalyCsoportId;
TanarId = tantargyfelosztasItemCo.TanarId;
Tema = importItemCo.Tema;
//NOTE: Az OraSorszam.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van óraszáma!
OraSorszam = importItemCo.OraSorszam.Value;
Nev = $"{OraSorszam}. {Tema}";
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonIgnore]
public DateTime BejegyzesIdeje { get; set; }
[JsonProperty("C_BEJEGYZESIDEJE")]
public string BejegyzesIdejeString { get; set; }
[JsonProperty("C_ORASZAM")]
public int OraSorszam { get; set; }
[JsonProperty("C_TANTARGYID")]
public int TantargyId { get; set; }
[JsonProperty("C_OSZTALYCSOPORTID")]
public int OsztalyCsoportId { get; set; }
[JsonProperty("C_FELTOLTOID")]
public int TanarId { get; set; }
[JsonProperty("C_TEMA")]
public string Tema { get; set; }
[JsonProperty("C_NEV")]
public string Nev { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_MEGJEGYZES")]
public string Megjegyzes => null;
[JsonProperty("C_ROVIDNEV")]
public string RovidNev => null;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,293 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class TantargyfelosztasImportCo : BaseTantargyfelosztasImportCo
{
[JsonIgnore]
public List<TantargyfelosztasImportItemCo> MainImportItemList { get; set; } = new List<TantargyfelosztasImportItemCo>();
[JsonIgnore]
public List<TantargyfelosztasImportItemCo> NemImportalhatoItemList { get; set; } = new List<TantargyfelosztasImportItemCo>();
[JsonProperty("T_FOGLALKOZAS_OSSZES")]
public List<TantargyfelosztasImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public int TantargyfelosztasImportTipus { get; set; }
public Dictionary<int, List<ValidationResult>> Validate(FeladatEllatasiHelyCO feladatellatasiHelyCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = Validate(GetBaseImportItemCoList());
if (TantargyfelosztasImportTipus == (int)TantargyfelosztasImportTipusEnum.FeladatfelosztasImport)
{
string csoportNevPrefix = $"{feladatellatasiHelyCo.MukodesiHelyNev} - {feladatellatasiHelyCo.OktatasiNevelesiFeladatNev} - ";
foreach (TantargyfelosztasImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
if (!string.IsNullOrWhiteSpace(importItem.CsoportNev))
{
var csoportItem = CsoportCoList.SingleOrDefault(x => x.Nev == importItem.CsoportNev);
if (csoportItem != null)
{
var csoportNevWithoutPrefix = importItem.CsoportNev.Substring(csoportNevPrefix.Length);
if (csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasSzakertoiBizottsagiTevekenyseg && csoportItem.TipusId != (int)CsoportTipusEnum.szakertoi_bizottsagi_tevekenyseg ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasNevelesiTanacsadas && csoportItem.TipusId != (int)CsoportTipusEnum.nevelesi_tanacsadas ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasKonduktivPedagogiaiEllatas && csoportItem.TipusId != (int)CsoportTipusEnum.konduktiv_pedagogiai_ellatas ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasIskolapszichologiaiOvodapszichologiaiEllatas && csoportItem.TipusId != (int)CsoportTipusEnum.iskolapszichologiai_ovodapszichologiai_ellatas ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasLogopediaiEllatas && csoportItem.TipusId != (int)CsoportTipusEnum.logopediai_ellatas ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasGyogytestneveles && csoportItem.TipusId != (int)CsoportTipusEnum.gyogytestneveles ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasGyogypedagogiaiTanacsadas && csoportItem.TipusId != (int)CsoportTipusEnum.gyogypedagogiai_tanacsadas_korai_fejlesztes_es_gondozas ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasKiemeltenTehetsegesGyermekekTanulokGondozasa && csoportItem.TipusId != (int)CsoportTipusEnum.kiemelten_tehetseges_gyermekek_tanulok_gondozasa ||
csoportNevWithoutPrefix == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasTovabbtanulasiPalyavalasztasiTanacsadas && csoportItem.TipusId != (int)CsoportTipusEnum.tovabbtanulasi_palyavalasztasi_tanacsadas)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportTantargyfelosztasResource.Az0CsoportMarLetezikAzAdatbazisbanDeATipusaNem1, csoportItem.Nev, csoportNevWithoutPrefix)));
}
}
}
if (validationResultList.Count > 0)
{
if (validationResultDictionary.ContainsKey(importItem.LineNumber))
{
validationResultDictionary[importItem.LineNumber].AddRange(validationResultList);
}
else
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
}
}
return validationResultDictionary;
}
public List<BaseTantargyfelosztasImportItemCo> GetBaseImportItemCoList()
{
var result = MainImportItemList.ConvertAll(new Converter<TantargyfelosztasImportItemCo, BaseTantargyfelosztasImportItemCo>(x => x));
return result;
}
}
public class TantargyfelosztasImportItemCo : BaseTantargyfelosztasImportItemCo, IValidatableObject
{
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameOraszam), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string OraszamImportData { get; set; }
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameTulora), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string TuloraImportData { get; set; }
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameTtfOraszamKorrekcio), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string TtfOraszamKorrekcioImportData { get; set; }
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameNemzetisegiOra), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string NemzetisegiOraImportData { get; set; }
[MaxLength(5, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTantargyfelosztasResource.ImportHeaderNameMegbizasiOraszam), ResourceType = typeof(ImportExportTantargyfelosztasResource))]
public string MegbizasiOraszamImportData { get; set; }
public double? Oraszam => GetDoubleValue(OraszamImportData);
public double? Tuloraszam => GetDoubleValue(TuloraImportData, 0);
public bool? IsOsszevontOra => GetBooleanValue(TtfOraszamKorrekcioImportData, false);
public bool? IsNemzetisegiOra => GetBooleanValue(NemzetisegiOraImportData, false);
public double? MegbizasiOraszam => GetDoubleValue(MegbizasiOraszamImportData, 0);
public double OraszamSum { get; set; }
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.IsNullOrWhiteSpace(OsztalyNev) && string.IsNullOrWhiteSpace(CsoportNev))
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.OsztalyOrCsoportRequired);
}
else if (OsztalyNev == CsoportNev)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.OsztalyCsoportNemLehetEgyenlo);
}
//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(OraszamImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!Oraszam.HasValue)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.NemMegfeleloAzOraszamFormatuma);
}
else
{
if (Oraszam < 0)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.AzOraszamNemLehetKisebbMint0);
}
else if (Oraszam > Constants.General.TantargyfelosztasImportMaxOraszam)
{
yield return new ValidationResult(string.Format(ImportExportTantargyfelosztasResource.AzOraszamNemLehetNagyobbMint0, Constants.General.TantargyfelosztasImportMaxOraszam.ToString()));
}
if (Tuloraszam.HasValue)
{
if (Tuloraszam < 0)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.AzTuloraNemLehetKisebbMint0);
}
else if (Tuloraszam > Oraszam)
{
yield return new ValidationResult(string.Format(ImportExportTantargyfelosztasResource.AzTuloraNemLehetNagyobbMintAzOraszam0, Oraszam.ToString()));
}
}
}
}
//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(TuloraImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!Tuloraszam.HasValue)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.NemMegfeleloATuloraFormatuma);
}
}
if (!IsOsszevontOra.HasValue)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.NemMegfeleloATtfOraszamKorrekcioFormatuma);
}
if (!IsNemzetisegiOra.HasValue)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.NemMegfeleloANemzetisegiOraFormatuma);
}
if (!MegbizasiOraszam.HasValue)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.NemMegfeleloMegbizasiSzerzodesselEllatottOraFormatuma);
}
else
{
if (MegbizasiOraszam < 0)
{
yield return new ValidationResult(ImportExportTantargyfelosztasResource.AMegbizasiOraszamNemLehetKisebbMint0);
}
else if (MegbizasiOraszam > Constants.General.TantargyfelosztasImportMaxOraszam)
{
yield return new ValidationResult(string.Format(ImportExportTantargyfelosztasResource.AMegbizasiOraszamNemLehetNagyobbMint, Constants.General.TantargyfelosztasImportMaxOraszam.ToString()));
}
}
if (!CsoportTipusId.IsEntityId())
{
yield return new ValidationResult(string.Format(ImportExportTantargyfelosztasResource.NemLetezikAzAlabbiCsoportTipusAdatszotar, CsoportNev));
}
}
#endregion Validate
}
public class TantargyfelosztasImportJsonItemCo : BaseImportJsonItemCo
{
public TantargyfelosztasImportJsonItemCo(BaseTantargyfelosztasImportItemCo importItemCo, string compareHash, double oraszam, double tuloraszam, bool isOsszevontOra, bool isNemzetisegiOra, double megbizasiOraszam, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
OsztalyCsoportNev = importItemCo.OsztalyCsoportNev;
TantargyNev = importItemCo.TantargyNev;
Nev = importItemCo.TantargyfelosztasNev;
Oraszam = oraszam;
TipusId = importItemCo.IsCsoport ? (int)FoglalkozasTipusEnum.tanora_osztalybontasos_ : (int)FoglalkozasTipusEnum.tanora;
Tuloraszam = tuloraszam;
IsOsszevontOra = isOsszevontOra;
IsNemzetisegiOra = isNemzetisegiOra;
MegbizasiOraszam = megbizasiOraszam;
//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;
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
CompareHash = compareHash;
}
[JsonIgnore]
public string CompareHash { get; set; }
#region Import Json Properties
[JsonProperty("OsztalyCsoportNev")]
public string OsztalyCsoportNev { get; set; }
[JsonProperty("TantargyNev")]
public string TantargyNev { get; set; }
[JsonIgnore]
public string TanarNev { get; set; }
[JsonProperty("C_TANARID")]
public int TanarId { get; set; }
[JsonProperty("C_NEV")]
public string Nev { get; set; }
[JsonProperty("C_ORASZAM")]
public double Oraszam { get; set; }
[JsonProperty("C_FOGLALKOZASTIPUSA")]
public int TipusId { get; set; }
[JsonProperty("C_TULORASZAM")]
public double Tuloraszam { get; set; }
[JsonIgnore]
public bool IsOsszevontOra { get; set; }
[JsonProperty("C_ISOSSZEVONTORA")]
public string IsOsszevontOraString => SDAConvert.ToSDABoolean(IsOsszevontOra);
[JsonIgnore]
public bool IsNemzetisegiOra { get; set; }
[JsonProperty("C_ISNEMZETISEGI")]
public string IsNemzetisegiOraString => SDAConvert.ToSDABoolean(IsNemzetisegiOra);
[JsonProperty("C_MEGBIZASIORASZAM")]
public double MegbizasiOraszam { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ERTEKELESKELL")]
public string IsErtekelesKell => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_MULASZTASKELL")]
public string IsMulasztasKell => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_TANARFELVEHETI")]
public string IsTanarFelveheti => SDAConvert.ToSDABoolean(true);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,594 @@
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<TanuloBesorolasImportItemCo> MainImportItemList { get; set; } = new List<TanuloBesorolasImportItemCo>();
[JsonIgnore]
public List<TanuloBesorolasImportItemCo> NemImportalhatoItemList { get; set; } = new List<TanuloBesorolasImportItemCo>();
[JsonProperty("T_TANULOCSOPORT_OSSZES")]
public List<TanuloBesorolasImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonProperty("T_TANULOTANUGYIADATOK_OSSZES")]
public List<TanuloBesorolasTanuloTanugyiAdatokImportJsonItemCo> TanuloBesorolasTanuloTanugyiAdatokImportJsonItemList { get; set; }
[JsonIgnore]
public List<OsztalyCsoportItemCo> OsztalyCsoportCoList { get; set; }
[JsonIgnore]
public List<TanuloCsoportItemCo> 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<OktNevelesiKategoriaEnum, int> JogviszonyLimits { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (TanuloBesorolasImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//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<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve,
ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloOktatasiAzonosito,
ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
private IEnumerable<BesorolasDateRange> CreateBesorolasDateRangeList(DateTime besorolasVege, IEnumerable<TanuloCsoportItemCo> tanulohozTartozoDbBesorolasok, IEnumerable<TanuloBesorolasImportItemCo> tanulohozTartozoElozoExcelBesorolasok,
bool withCurrentOne, int? examinedOsztalyCsoportId = null)
{
//NOTE: aktuális besorolás
var besorolasok = new List<BesorolasDateRange>();
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
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
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<int> 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<ValidationResult> 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
}
}

View file

@ -0,0 +1,186 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class TanuloErtekelesMondatbankImportCo : BaseImportCo
{
[JsonIgnore]
public List<TanuloErtekelesMondatbankImportItemCo> MainImportItemList { get; set; } = new List<TanuloErtekelesMondatbankImportItemCo>();
[JsonIgnore]
public List<TanuloErtekelesMondatbankImportItemCo> NemImportalhatoItemList { get; set; } = new List<TanuloErtekelesMondatbankImportItemCo>();
[JsonProperty("T_ERTEKELESMONDATBANK_OSSZES")]
public List<TanuloErtekelesMondatbankImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<TanuloErtekelesMondatbankItemCo> TanuloErtekelesMondatbankCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (TanuloErtekelesMondatbankImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameRovidNev,
ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameSzoveg,
ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus,
ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus,
ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class TanuloErtekelesMondatbankImportItemCo : BaseImportItemCo, IValidatableObject
{
[MaxLength(3, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameRovidNev), ResourceType = typeof(ImportExportTanuloErtekelesMondatbankResource))]
public string RovidNevImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(4000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameSzoveg), ResourceType = typeof(ImportExportTanuloErtekelesMondatbankResource))]
public string SzovegImportData { get; set; }
[MaxLength(250, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus), ResourceType = typeof(ImportExportTanuloErtekelesMondatbankResource))]
public string TanuloErtekelesTipusImportData { get; set; }
[MaxLength(250, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus), ResourceType = typeof(ImportExportTanuloErtekelesMondatbankResource))]
public string EvfolyamTipusImportData { get; set; }
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy), ResourceType = typeof(ImportExportTanuloErtekelesMondatbankResource))]
public string TantargyImportData { get; set; }
public string RovidNev => GetStringValue(RovidNevImportData);
public string Szoveg => GetStringValue(SzovegImportData);
public string TanuloErtekelesTipusNev => GetStringValue(TanuloErtekelesTipusImportData, CommonResource.Mind);
public string EvfolyamTipusNev => GetStringValue(EvfolyamTipusImportData, CommonResource.Mind);
public string TantargyNev => GetStringValue(TantargyImportData, CommonResource.Mind);
public int? TanuloErtekelesTipusId { get; set; }
public int? EvfolyamTipusId { get; set; }
public int? TantargyId { get; set; }
public int TipusId { get; set; }
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//NOTE: Ha a TanuloErtekelesTipusId null és nem "Mind" az tanuló értékelés típus neve, akkor rossz az adat!
if (!TanuloErtekelesTipusId.IsEntityId() &&
TanuloErtekelesTipusNev != CommonResource.Mind)
{
yield return new ValidationResult(ImportExportTanuloErtekelesMondatbankResource.ATanuloErtekelesTipusNemSzerepelAzAdatbazisban);
}
//NOTE: Ha a EvfolyamTipusId null és nem "Mind" az évfolyam típus neve, akkor rossz az adat!
if (!EvfolyamTipusId.IsEntityId() &&
EvfolyamTipusNev != CommonResource.Mind)
{
yield return new ValidationResult(ImportExportTanuloErtekelesMondatbankResource.AzEvfolyamTipusNemSzerepelAzAdatbazisban);
}
//NOTE: Ha a TantargyId null és nem "Mind", "Magatartás", "Szorgalom" a tantárgy neve, akkor rossz az adat!
if (!TantargyId.IsEntityId() &&
TantargyNev != CommonResource.Mind &&
TantargyNev != TanuloErtekelesResource.Magatartas &&
TantargyNev != TanuloErtekelesResource.Szorgalom)
{
yield return new ValidationResult(ImportExportTanuloErtekelesMondatbankResource.ATantargyNemSzerepelAzAdatbazisban);
}
}
#endregion Validate
}
public class TanuloErtekelesMondatbankImportJsonItemCo : BaseImportJsonItemCo
{
public TanuloErtekelesMondatbankImportJsonItemCo(TanuloErtekelesMondatbankImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
RovidNev = importItemCo.RovidNev;
Szoveg = importItemCo.Szoveg;
TanuloErtekelesTipusNev = importItemCo.TanuloErtekelesTipusNev;
TanuloErtekelesTipusId = importItemCo.TanuloErtekelesTipusId;
EvfolyamTipusNev = importItemCo.EvfolyamTipusNev;
EvfolyamTipusId = importItemCo.EvfolyamTipusId;
TantargyNev = importItemCo.TantargyNev;
TantargyId = importItemCo.TantargyId;
TipusId = importItemCo.TipusId;
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonProperty("C_ROVIDNEV")]
public string RovidNev { get; set; }
[JsonProperty("C_SZOVEG")]
public string Szoveg { get; set; }
[JsonIgnore]
public string TanuloErtekelesTipusNev { get; set; }
[JsonProperty("C_ERTEKELESTIPUSA")]
public int? TanuloErtekelesTipusId { get; set; }
[JsonIgnore]
public string EvfolyamTipusNev { get; set; }
[JsonProperty("C_EVFOLYAMTIPUSA")]
public int? EvfolyamTipusId { get; set; }
[JsonIgnore]
public string TantargyNev { get; set; }
[JsonProperty("C_TANTARGYID")]
public int? TantargyId { get; set; }
[JsonProperty("C_TIPUSID")]
public int TipusId { get; set; }
#region Default Required Import Json Properties
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,866 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class TanuloKifirImportCo : BaseImportCo
{
[JsonIgnore]
public List<TanuloKifirImportItemCo> MainImportItemList { get; set; } = new List<TanuloKifirImportItemCo>();
[JsonIgnore]
public List<TanuloKifirImportItemCo> NemImportalhatoItemList { get; set; } = new List<TanuloKifirImportItemCo>();
[JsonProperty("T_CIM_OSSZES")]
public List<CimKifirImportJsonItemCo> CimKifirImportJsonItemList { get; set; }
[JsonProperty("T_EMAIL_OSSZES")]
public List<EmailKifirImportJsonItemCo> EmailKifirImportJsonItemList { get; set; }
[JsonProperty("T_TANULO_OSSZES")]
public List<TanuloKifirImportJsonItemCo> TanuloKifirImportJsonItemList { get; set; }
[JsonProperty("T_FELHASZNALO_OSSZES")]
public List<FelhasznaloKifirImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<TanuloItemCo> TanuloCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (TanuloKifirImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
var oktatasiAzonositoComparableString = importItem.OktatasiAzonosito?.ToComparableString();
if (!string.IsNullOrWhiteSpace(oktatasiAzonositoComparableString))
{
//NOTE: Levalidáljuk, hogy az oktatási azonosítóval szerepel-e tanuló az adatbázisban, de nem a tanuló maga az!
if (TanuloCoList.Any(x =>
x.FelhasznaloOktatasiAzonositoComparableString == oktatasiAzonositoComparableString && (
x.FelhasznaloVezeteknevComparableString + x.FelhasznaloKeresztnevComparableString != importItem.Vezeteknev?.ToComparableString() + importItem.Keresztnev?.ToComparableString() ||
x.FelhasznaloSzuletesiHelyComparableString != importItem.SzuletesiHely?.ToComparableString() ||
x.FelhasznaloSzuletesiIdo != importItem.SzuletesiIdo)))
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportTanuloKifirResource.AMegadottOktatasiAzonositovalSzerepelTanuloAzAdatbazisban, importItem.OktatasiAzonositoImportData)));
}
//NOTE: Levalidáljuk, hogy ugyanazzal az oktatási azonosítóval csak egyszer szerepeljen tanuló a dokumnetumban!
if (MainImportItemList.Count(x => x.OktatasiAzonosito?.ToComparableString() == oktatasiAzonositoComparableString) > 1)
{
validationResultList.Add(new ValidationResult(string.Format(ImportExportCommonResource.OktatasiAzonositoExistsMoreTimesInDocument, importItem.OktatasiAzonosito)));
}
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportTanuloKifirResource.ImportHeaderNameNev,
ImportExportTanuloKifirResource.ImportHeaderNameOktatasiAzonosito,
ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiHely,
ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiDatum
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class TanuloKifirImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private TanuloKifirImportItemCo() { }
public TanuloKifirImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameNev), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string NevImportData { get; set; }
[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(ImportExportTanuloKifirResource.ImportHeaderNameOktatasiAzonosito), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string OktatasiAzonositoImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(50, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiHely), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string SzuletesiHelyImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiDatum), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string SzuletesiDatumImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(64, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAnyjaNeve), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AnyjaNeveImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimIranyitoszam), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AllandoLakcimIranyitoszamImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(50, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimTelepules), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AllandoLakcimTelepulesImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimKozterulet), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AllandoLakcimKozteruletImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(20, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimIranyitoszam), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string ErtesitesiCimIranyitoszamImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(50, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimTelepules), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string ErtesitesiCimTelepulesImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimKozterulet), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string ErtesitesiCimKozteruletImportData { get; set; }
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(64, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAllampolgarsag), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AllampolgarsagImportData { get; set; }
[MaxLength(200, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[EmailAddressExtended(true, true, ErrorMessageResourceName = nameof(ErrorResource.NemMegfeleloFormatumuAzEmailCim), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameEmailCim), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string EmailCimImportData { get; set; }
[MaxLength(238, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaNeve), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaNeveImportData { get; set; }
[MaxLength(6, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaOmKodja), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaOmKodjaImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletNeve), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string FelveteltNyertTanulmanyiKeruletNeveImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletKodszama), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string FelveteltNyertTanulmanyiKeruletKodszamaImportData { get; set; }
#region Unused Import Data
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameKilencedikEvfolyamnalAlacsonyabb), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string KilencedikEvfolyamnalAlacsonyabbImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimNev), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string ErtesitesiCimNevImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaIranyitoszam), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaIranyitoszamImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaCim), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaCimImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelepules), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaTelepulesImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelefonszam), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaTelefonszamImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaEmailCim), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string AltalanosIskolaEmailCimImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletSzovege), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string FelveteltNyertTanulmanyiKeruletSzovegeImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElutasitas), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string NemNyertFelveteltElutasitasImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltBetelt), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string NemNyertFelveteltBeteltImportData { get; set; }
[Display(Name = nameof(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElobbreNertFelvetelt), ResourceType = typeof(ImportExportTanuloKifirResource))]
public string NemNyertFelveteltElobbreNertFelveteltImportData { get; set; }
#endregion
public string Elotag => GetElotagFromTeljesNev(NevImportData);
public string Vezeteknev => GetVezeteknevFromTeljesNev(NevImportData);
public string Keresztnev => GetKeresztnevekFromTeljesNev(NevImportData);
public string OktatasiAzonosito => GetStringValue(OktatasiAzonositoImportData);
public string SzuletesiHely => GetStringValue(SzuletesiHelyImportData);
public DateTime? SzuletesiIdo => GetDateTimeValue(SzuletesiDatumImportData);
public string SzuletesiIdoString => GetDateTimeString(SzuletesiIdo);
public string AnyjaNeve => GetStringValue(AnyjaNeveImportData);
public string AnyjaNeveElotag => GetElotagFromTeljesNev(AnyjaNeveImportData);
public string AnyjaVezeteknev => GetVezeteknevFromTeljesNev(AnyjaNeveImportData);
public string AnyjaKeresztnev => GetKeresztnevekFromTeljesNev(AnyjaNeveImportData);
public string AllandoLakcimTelepules => GetStringValue(AllandoLakcimTelepulesImportData);
public string AllandoLakcimIranyitoszam => GetStringValue(AllandoLakcimIranyitoszamImportData);
public TanuloKifirSplittedCim AllandoLakcimSplittedCim { get; set; }
public string AllandoLakcimKozterulet => AllandoLakcimSplittedCim?.KozteruletNev;
public int? AllandoLakcimKozteruletJellegeId => AllandoLakcimSplittedCim?.KozteruletJellegeId;
public string AllandoLakcimHazszam => AllandoLakcimSplittedCim?.Hazszam;
public string IdeiglenesLakcimTelepules => GetStringValue(ErtesitesiCimTelepulesImportData);
public string IdeiglenesLakcimIranyitoszam => GetStringValue(ErtesitesiCimIranyitoszamImportData);
public TanuloKifirSplittedCim IdeiglenesLakcimSplittedCim { get; set; }
public string IdeiglenesLakcimKozterulet => IdeiglenesLakcimSplittedCim?.KozteruletNev;
public int? IdeiglenesLakcimKozteruletJellegeId => IdeiglenesLakcimSplittedCim?.KozteruletJellegeId;
public string IdeiglenesLakcimHazszam => IdeiglenesLakcimSplittedCim?.Hazszam;
public int AllampolgarsagId => ((int)GeneratedAdatszotarTipusEnum.Allampolgarsag).GetItemIdByTypeAndName(AllampolgarsagImportData, _tanevId) ?? (int)AllampolgarsagEnum.na;
public string EmailCim => GetStringValue(EmailCimImportData);
public string ElozoIntezmeny => GetElozoIntezmeny(AltalanosIskolaNeveImportData, AltalanosIskolaOmKodjaImportData);
public int OperationAllandoLakcim { get; set; }
public int OperationIdeiglenesLakcim { get; set; }
public int OperationEmail { get; set; }
public string CompareHashAllandoLakcim { get; set; }
public string CompareHashIdeiglenesLakcim { get; set; }
public string CompareHashEmail { get; set; }
public int? AllandoLakcimId { get; set; }
public int? IdeiglenesLakcimId { get; set; }
public int? EmailId { get; set; }
public static TanuloKifirSplittedCim GetTanuloKifirSplittedCim(IDictionary<int, string> kozteruletJellegIdNevDictionary, string cimImportData)
{
//NOTE: Azért rendezzük hossz szerint visszafelé, hogy a hosszabb értékeket hamarabb megtalálja. Pl.: "alsó rakpart" -> "rakpart"
foreach (var kozteruletJellegIdNevItem in kozteruletJellegIdNevDictionary.OrderByDescending(x => x.Value.Length))
{
var kozteruletJellegNev = kozteruletJellegIdNevItem.Value.ToComparableString();
var kozteruletJellegStartIndex = cimImportData.ToComparableString().IndexOf($" {kozteruletJellegNev} ", StringComparison.Ordinal);
if (kozteruletJellegStartIndex.IsNotNullAndPositive())
{
//NOTE: A + 2 a közterület jelleg előtt és utáni szóköz miatt kell.
var kozteruletJellegEndIndex = kozteruletJellegStartIndex + kozteruletJellegNev.Length + 2;
var result = new TanuloKifirSplittedCim
{
KozteruletNev = cimImportData.Substring(0, kozteruletJellegStartIndex),
KozteruletJellegeId = kozteruletJellegIdNevItem.Key,
Hazszam = cimImportData.Substring(kozteruletJellegEndIndex, cimImportData.Length - kozteruletJellegEndIndex),
};
return result;
}
}
var defaultResult = new TanuloKifirSplittedCim
{
KozteruletJellegeId = (int)KozteruletJellegEnum.na
};
return defaultResult;
}
public class TanuloKifirSplittedCim
{
public string KozteruletNev { get; set; }
public int? KozteruletJellegeId { get; set; }
public string Hazszam { get; set; }
}
public static string GetElozoIntezmeny(string altalanosIskolaNeveImportData, string altalanosIskolaOmKodjaImportData)
{
string result = null;
if (!string.IsNullOrWhiteSpace(altalanosIskolaNeveImportData))
{
result = string.IsNullOrWhiteSpace(altalanosIskolaOmKodjaImportData) ?
altalanosIskolaNeveImportData :
string.Format(ImportExportTanuloKifirResource.IskolaNevOmKod, altalanosIskolaNeveImportData, altalanosIskolaOmKodjaImportData);
}
return result;
}
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//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(SzuletesiDatumImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!SzuletesiIdo.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidDatumFormat, ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiDatum.ToLowerInvariant(), SzuletesiDatumImportData));
}
else
{
var minimumDate = new DateTime(Now.Date.Year - 123, 1, 1);
var maximumDate = new DateTime(Now.Date.Year, 1, 1);
var minOk = SzuletesiIdo >= minimumDate;
var maxOk = SzuletesiIdo <= maximumDate;
if (!minOk || !maxOk)
{
yield return new ValidationResult(
string.Format(ImportExportCommonResource.ASzuletesiIdoCsakKozeEshet,
minimumDate.ToString(Constants.ToStringPattern.HungarianDate),
maximumDate.ToString(Constants.ToStringPattern.HungarianDate)));
}
}
}
//NOTE: Legalább az egyiknek értékkel kell rendelkeznie.
if (string.IsNullOrWhiteSpace(FelveteltNyertTanulmanyiKeruletNeveImportData) && string.IsNullOrWhiteSpace(FelveteltNyertTanulmanyiKeruletKodszamaImportData))
{
yield return new ValidationResult(string.Format(ImportExportTanuloKifirResource.NemImportalhatoMertNemNyertFelveteltAzIntezmenybe, NevImportData));
}
//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(NevImportData) && (string.IsNullOrWhiteSpace(Vezeteknev) || string.IsNullOrWhiteSpace(Keresztnev)))
{
yield return new ValidationResult(ImportExportTanuloKifirResource.ATanuloNeveFormatumaNemMegfelelo);
}
//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(AnyjaNeveImportData) && (string.IsNullOrWhiteSpace(GetVezeteknevFromTeljesNev(AnyjaNeve)) || string.IsNullOrWhiteSpace(GetKeresztnevekFromTeljesNev(AnyjaNeve))))
{
yield return new ValidationResult(ImportExportTanuloKifirResource.AzAnyjaNeveFormatumaNemMegfelelo);
}
}
#endregion Validate
}
public class CimKifirImportJsonItemCo : BaseImportJsonItemCo
{
public CimKifirImportJsonItemCo(TanuloKifirImportItemCo importItemCo, int tipusId, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Elotag = importItemCo.Elotag;
Vezeteknev = importItemCo.Vezeteknev;
Keresztnev = importItemCo.Keresztnev;
SzuletesiHely = importItemCo.SzuletesiHely;
SzuletesiIdo = importItemCo.SzuletesiIdoString;
OktatasiAzonosito = importItemCo.OktatasiAzonosito;
switch (tipusId)
{
case (int)CimTipusEnum.allando_lakcim:
Id = importItemCo.AllandoLakcimId;
TipusId = (int)CimTipusEnum.allando_lakcim;
Iranyitoszam = importItemCo.AllandoLakcimIranyitoszam;
Telepules = importItemCo.AllandoLakcimTelepules;
Kozterulet = importItemCo.AllandoLakcimKozterulet;
KozteruletJellegId = importItemCo.AllandoLakcimKozteruletJellegeId;
KozteruletJellegeNev = ((KozteruletJellegEnum)importItemCo.AllandoLakcimKozteruletJellegeId).GetDisplayName(tanevId);
Hazszam = importItemCo.AllandoLakcimHazszam;
IsAlapertelmezett = SDAConvert.ToSDABoolean(true);
Operation = importItemCo.OperationAllandoLakcim;
break;
case (int)CimTipusEnum.ideiglenes_lakcim:
Id = importItemCo.IdeiglenesLakcimId;
TipusId = (int)CimTipusEnum.ideiglenes_lakcim;
Iranyitoszam = importItemCo.IdeiglenesLakcimIranyitoszam;
Telepules = importItemCo.IdeiglenesLakcimTelepules;
Kozterulet = importItemCo.IdeiglenesLakcimKozterulet;
KozteruletJellegId = importItemCo.IdeiglenesLakcimKozteruletJellegeId;
KozteruletJellegeNev = ((KozteruletJellegEnum)importItemCo.IdeiglenesLakcimKozteruletJellegeId).GetDisplayName(tanevId);
Hazszam = importItemCo.IdeiglenesLakcimHazszam;
IsAlapertelmezett = SDAConvert.ToSDABoolean(false);
Operation = importItemCo.OperationIdeiglenesLakcim;
break;
}
LineNumber = importItemCo.LineNumber;
}
#region Import Json Properties
[JsonIgnore]
public string Elotag { get; set; }
[JsonProperty("Vezeteknev")]
public string Vezeteknev { get; set; }
[JsonProperty("Keresztnev")]
public string Keresztnev { get; set; }
[JsonProperty("SzuletesiHely")]
public string SzuletesiHely { get; set; }
[JsonProperty("SzuletesiIdo")]
public string SzuletesiIdo { get; set; }
[JsonProperty("OktatasiAzonosito")]
public string OktatasiAzonosito { get; set; }
[JsonProperty("C_CIMTIPUSA")]
public int TipusId { get; set; }
[JsonProperty("C_IRANYITOSZAM")]
public string Iranyitoszam { get; set; }
[JsonProperty("C_VAROS")]
public string Telepules { get; set; }
[JsonProperty("C_KOZTERULET")]
public string Kozterulet { get; set; }
[JsonProperty("C_KOZTERULETJELLEGE")]
public int? KozteruletJellegId { get; set; }
[JsonProperty("C_KOZTERULETJELLEGENEV")]
public string KozteruletJellegeNev { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
[JsonProperty("C_HAZSZAM")]
public string Hazszam { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ORSZAG")]
public int OrszagTipusId => (int)OrszagTipusEnum.Magyarorszag;
[JsonProperty("C_EMELET")]
public string Emelet => null;
[JsonProperty("C_AJTO")]
public string Ajto => null;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class EmailKifirImportJsonItemCo : BaseImportJsonItemCo
{
public EmailKifirImportJsonItemCo(TanuloKifirImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.EmailId;
Elotag = importItemCo.Elotag;
Vezeteknev = importItemCo.Vezeteknev;
Keresztnev = importItemCo.Keresztnev;
SzuletesiHely = importItemCo.SzuletesiHely;
SzuletesiIdo = importItemCo.SzuletesiIdoString;
OktatasiAzonosito = importItemCo.OktatasiAzonosito;
TipusId = (int)EmailTipusEnum.Magan;
EmailCim = importItemCo.EmailCim;
IsAlapertelmezett = SDAConvert.ToSDABoolean(true);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationEmail;
}
#region Import Json Properties
[JsonIgnore]
public string Elotag { get; set; }
[JsonProperty("Vezeteknev")]
public string Vezeteknev { get; set; }
[JsonProperty("Keresztnev")]
public string Keresztnev { get; set; }
[JsonProperty("SzuletesiHely")]
public string SzuletesiHely { get; set; }
[JsonProperty("SzuletesiIdo")]
public string SzuletesiIdo { get; set; }
[JsonProperty("OktatasiAzonosito")]
public string OktatasiAzonosito { get; set; }
[JsonProperty("C_EMAILTIPUSA")]
public int? TipusId { get; set; }
[JsonProperty("C_EMAILCIM")]
public string EmailCim { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ISPUBLIC")]
public string IsPublic => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISHIBASANMEGADVA")]
public string IsHibasanMegadva => SDAConvert.ToSDABoolean(false);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class TanuloKifirImportJsonItemCo : BaseImportJsonItemCo
{
public TanuloKifirImportJsonItemCo(TanuloKifirImportItemCo importItemCo, int tantervId, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.Id;
Elotag = importItemCo.Elotag;
Vezeteknev = importItemCo.Vezeteknev;
Keresztnev = importItemCo.Keresztnev;
SzuletesiHely = importItemCo.SzuletesiHely;
SzuletesiIdo = importItemCo.SzuletesiIdoString;
OktatasiAzonosito = importItemCo.OktatasiAzonosito;
TantervId = tantervId;
ElozoIntezmeny = importItemCo.ElozoIntezmeny;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonIgnore]
public string Elotag { get; set; }
[JsonProperty("Vezeteknev")]
public string Vezeteknev { get; set; }
[JsonProperty("Keresztnev")]
public string Keresztnev { get; set; }
[JsonProperty("SzuletesiHely")]
public string SzuletesiHely { get; set; }
[JsonProperty("SzuletesiIdo")]
public string SzuletesiIdo { get; set; }
[JsonProperty("OktatasiAzonosito")]
public string OktatasiAzonosito { get; set; }
[JsonProperty("C_TANTERVID")]
public int TantervId { get; set; }
[JsonProperty("C_ELOZOINTEZMENY")]
public string ElozoIntezmeny { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ALLAMIGONDOZOTT")]
public string IsAllamiGondozott => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_BEILLESZKEDESINEHEZSEG")]
public string IsBeilleszkedesiNehezseg => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_BEJARO")]
public string IsBejaro => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_EVISMETLO")]
public string IsEvismetlo => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_JOGVISZONYATSZUNETELTETO")]
public string IsJogviszonyatSzunetelteto => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_MAGANTANULO")]
public string IsMagantanulo => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_POLGARISZERZODESES")]
public string IsPolgariSzerzodeses => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SZAKMAIGYAKORLATON")]
public string IsSzakmaiGyakorlaton => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SZOCIALISTAMOGATAS")]
public string IsSzocialisTamogatas => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANDIJATFIZETO")]
public string IsTandijatFizeto => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANKOTELEZETT")]
public string IsTankotelezett => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANULOSZERZODESES")]
public string IsTanuloSzerzodeses => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TERITESIDIJATFIZETO")]
public string IsTeritesiDijatFizeto => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TESTNEVELESTIPUSA")]
public int TestnevelesTipusId => (int)TestnevelesTipusEnum.normal_testneveles;
[JsonProperty("C_VENDEG")]
public string IsVendeg => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_BTMPROBLEMAS")]
public string IsBtmProblemas => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_DIAKSPORTKOROS")]
public string IsDiaksportkoros => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_HALMOZOTTANFOGYATEKOS")]
public string IsHalmozottanFogyatekos => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_HATRANYOSHELYZETU")]
public int HatranyosHelyzetuId => (int)HatranyosHelyzetTipusEnum.nem_hatranyos_helyzetu;
[JsonProperty("C_KOLLEGIUMIELLATASOS")]
public string IsKollegiumiEllatasos => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SAJATOSNEVELESU")]
public string IsSajatosNevelesu => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_VESZELYEZTETETT")]
public string IsVeszelyeztetett => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_BEILLESZKEDESIPROBLEMAVALKUZ")]
public string IsBeilleszkedesiProblemavalKuzd => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_MAGATARTASIPROBLEMAVALKUZD")]
public string IsMagatartasiProblemavalKuzd => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANULASIPROBLEMADISZGRAFIA")]
public string IsTanulasiProblemaDiszgrafia => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANULASIPROBLEMAVALKUZD")]
public string IsTanulasiProblemavalKuzd => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANULASIPROBLEMAVALKUZDDISZK")]
public string IsTanulasiProblemavalKuzdDiszkalkulia => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TANULASIPROBLEMAVALKUZDDISZL")]
public string IsTanulasiProblemavalKuzdDiszlexia => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_KOZEPFOKUOKTATASBATIZENHATOD")]
public string IsKozepfokuOktatasbaTizenhatodikEletevenekBetoltesetKovetoenBelepett => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_MENEDEKJOGGALRENDELKEZO")]
public string IsMenedekjoggalRendelkezo => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_EGYEBDONTO")]
public string IsEgyebDonto => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_MEGALLAPODASOS")]
public string IsMegallapodasos => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_OSZTV")]
public string IsOsztv => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SZETVAGAZAT")]
public string IsSzetvAgazat => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_SZKTV")]
public string IsSzktv => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_TECHNIKUSIEVFOLYAM")]
public string IsTechnikusiEvfolyam => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_EGYUTTMUKODESES")]
public string IsEgyuttmukodeses => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISKOLAIKERETEKKOZOTT")]
public string IsIskolaiKeretekKozott => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISSZAKMAIGYAKORLATHIANY")]
public string IsSzakmaiGyakorlatHiany => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISKIFIRIMPORTALT")]
public string IsKifirImportalt => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_FELVETELTANEVEID")]
public int FelvetelTanevId => TanevId;
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
public class FelhasznaloKifirImportJsonItemCo : BaseImportJsonItemCo
{
public FelhasznaloKifirImportJsonItemCo(TanuloKifirImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.Id;
//NOTE: Az SzuletesiIdo.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van születési ideje!
SzuletesiIdo = importItemCo.SzuletesiIdo.Value;
SzuletesiIdoString = importItemCo.SzuletesiIdoString;
SzuletesiNev = $"{importItemCo.Vezeteknev} {importItemCo.Keresztnev}";
SzuletesiHely = importItemCo.SzuletesiHely;
AnyjaNeve = importItemCo.AnyjaNeve;
AnyjaNeveElotag = importItemCo.AnyjaNeveElotag;
AnyjaVezeteknev = importItemCo.AnyjaVezeteknev;
AnyjaKeresztnev = importItemCo.AnyjaKeresztnev;
AllampolgarsagId = importItemCo.AllampolgarsagId;
KeresesiNev = CommonUtilsDal.KopaszNev(SzuletesiNev);
NyomtatasiNev = string.IsNullOrWhiteSpace(importItemCo.Elotag) ? SzuletesiNev : $"{importItemCo.Elotag} {SzuletesiNev}";
Elotag = importItemCo.Elotag;
SzuletesiNevElotag = importItemCo.Elotag;
Vezeteknev = importItemCo.Vezeteknev;
SzuletesiVezeteknev = importItemCo.Vezeteknev;
Keresztnev = importItemCo.Keresztnev;
SzuletesiKeresztnev = importItemCo.Keresztnev;
OktatasiAzonosito = importItemCo.OktatasiAzonosito;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
#region Import Json Properties
[JsonIgnore]
public DateTime SzuletesiIdo { get; set; }
[JsonProperty("C_SZULETESIDATUM")]
public string SzuletesiIdoString { get; set; }
[JsonProperty("C_SZULETESINEV")]
public string SzuletesiNev { get; set; }
[JsonProperty("C_SZULETESINEVELOTAG")]
public string SzuletesiNevElotag { get; set; }
[JsonProperty("C_SZULETESIVEZETEKNEV")]
public string SzuletesiVezeteknev { get; set; }
[JsonProperty("C_SZULETESIUTONEV")]
public string SzuletesiKeresztnev { get; set; }
[JsonProperty("C_SZULETESIHELY")]
public string SzuletesiHely { get; set; }
[JsonProperty("C_ANYJANEVE")]
public string AnyjaNeve { get; set; }
[JsonProperty("C_ANYJANEVEELOTAG")]
public string AnyjaNeveElotag { get; set; }
[JsonProperty("C_ANYJAVEZETEKNEVE")]
public string AnyjaVezeteknev { get; set; }
[JsonProperty("C_ANYJAUTONEVE")]
public string AnyjaKeresztnev { get; set; }
[JsonProperty("C_ALLAMPOLGARSAGA")]
public int AllampolgarsagId { get; set; }
[JsonProperty("C_KERESESINEV")]
public string KeresesiNev { get; set; }
[JsonProperty("C_NYOMTATASINEV")]
public string NyomtatasiNev { get; set; }
[JsonProperty("C_ELOTAG")]
public string Elotag { get; set; }
[JsonProperty("C_VEZETEKNEV")]
public string Vezeteknev { get; set; }
[JsonProperty("C_UTONEV")]
public string Keresztnev { get; set; }
[JsonProperty("C_OKTATASIAZONOSITO")]
public string OktatasiAzonosito { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_NEME")]
public int NemeId => (int)NemEnum.NA;
[JsonProperty("C_SZULETESIORSZAG")]
public int OrszagTipusId => (int)OrszagTipusEnum.Magyarorszag;
[JsonProperty("C_SZULETESINEVSORREND")]
public string IsSzuletesiNevSorrend => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ANYJANEVESORREND")]
public string IsAnyjaNeveSorrend => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ALAPERTELMEZETTLCID")]
public int AlapertelmezettLcid => 1038;
[JsonProperty("C_LATASSERULTWEBHASZNALATA")]
public string IsLatasserultWebHasznalata => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_KELLADSZINKRONIZALAS")]
public string IsKellAdSzinkronizalas => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_ANYANYELVE")]
public int AnyanyelvId => (int)AnyanyelvEnum.magyar;
[JsonProperty("C_IGAZOLVANYTIPUSA")]
public int IgazolvanyTipusId => (int)IgazolvanyTipusEnum.Szemelyi_igazolvany;
[JsonProperty("C_NEVSORREND")]
public string IsNevSorrend => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_NYILVANTARTASKEZDETE")]
public string NyilvatartasKezdeteString => DateTime.Today.ToString(Constants.ToStringPattern.SortableDateTimePattern);
[JsonProperty("C_BELUGYALTALAZONOSITOTT")]
public string IsBelugyAltalAzonositott => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_EGYEDIAZONOSITO")]
public string EgyediAzonosito => Guid.Empty.ToString();
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}

View file

@ -0,0 +1,312 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses.ImportCo;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class TanulokElerhetosegiAdataikImportCo : BaseImportCo
{
[JsonIgnore]
public List<TanulokElerhetosegiAdataikImportItemCo> MainImportItemList { get; set; } = new List<TanulokElerhetosegiAdataikImportItemCo>();
[JsonIgnore]
public List<TanulokElerhetosegiAdataikImportItemCo> NemImportalhatoItemList { get; set; } = new List<TanulokElerhetosegiAdataikImportItemCo>();
[JsonProperty("T_TELEFON_OSSZES")]
public List<TelefonTanuloImportJsonItemCo> TelefonTanuloImportJsonItemList { get; set; }
[JsonProperty("T_EMAIL_OSSZES")]
public List<EmailTanuloImportJsonItemCo> EmailTanuloImportJsonItemList { get; set; }
[JsonIgnore]
public List<TanuloItemCo> TanuloCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (TanulokElerhetosegiAdataikImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloNeve,
ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloOktatasiAzonosito
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class TanulokElerhetosegiAdataikImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private TanulokElerhetosegiAdataikImportItemCo() { }
public TanulokElerhetosegiAdataikImportItemCo(int tanevId, bool isSzakkepzoIntezmeny) : base()
{
_tanevId = tanevId;
IsSzakkepzoIntezmeny = isSzakkepzoIntezmeny;
}
#region Fields
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloNeve), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(200, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloNeve), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string TanuloNeveImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloOktatasiAzonosito), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(11, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[KretaRegularExpression(Constants.RegularExpressions.OktatasiAzonositoTanulo, ErrorMessageResourceName = nameof(ErrorResource.OktatasiAzonositoFormatumaNemMegfelelo), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloOktatasiAzonosito), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string TanuloOktatasiAzonositoImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloTelefonszam), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[PhoneExtended(ErrorMessageResourceName = nameof(ErrorResource.ATelefonszamFormatumaNemMegfelelo), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloTelefonszam), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string TanuloTelefonszamImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamAlapertelmezett), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamAlapertelmezett), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string TelefonszamAlapertelmezettImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 04, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamTipusa), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamTipusa), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string TelefonszamTipusaImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 05, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloEmailCim), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[EmailAddressExtended(true, true, ErrorMessageResourceName = nameof(ErrorResource.NemMegfeleloFormatumuAzEmailCim), ErrorMessageResourceType = typeof(ErrorResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloEmailCim), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string TanuloEmailCimImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 06, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailAlapertelmezett), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailAlapertelmezett), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string EmailAlapertelmezettImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 07, nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailTipus), typeof(ImportExportTanulokElerhetosegiAdataikResource))]
[Display(Name = nameof(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailTipus), ResourceType = typeof(ImportExportTanulokElerhetosegiAdataikResource))]
public string EmailTipusImportData { get; set; }
public string FelhasznaloElotag => GetElotagFromTeljesNev(TanuloNeveImportData);
public string FelhasznaloVezeteknev => GetVezeteknevFromTeljesNev(TanuloNeveImportData);
public string FelhasznaloKeresztnev => GetKeresztnevekFromTeljesNev(TanuloNeveImportData);
public string FelhasznaloOktatasiAzonosito => GetStringValue(TanuloOktatasiAzonositoImportData);
public string CompareHashTelefon { get; set; }
public string CompareHashEmail { get; set; }
public int OperationTelefon { get; set; }
public int OperationEmail { get; set; }
public int? FelhasznaloId { get; set; }
public int? TelefonId { get; set; }
public int? EmailId { get; set; }
public string Nev => GetStringValue(TanuloNeveImportData);
public string Telefonszam => GetStringValue(TanuloTelefonszamImportData);
public int? TelefonTipus => string.IsNullOrWhiteSpace(TelefonszamTipusaImportData) ? (int)TelefonTipusEnum.Ismeretlen : ((int)GeneratedAdatszotarTipusEnum.TelefonTipus).GetItemIdByTypeAndName(TelefonszamTipusaImportData, _tanevId);
public bool? TelefonAlapertelmezett => GetBooleanValue(TelefonszamAlapertelmezettImportData);
public string EmailCim => GetStringValue(TanuloEmailCimImportData);
public int? EmailTipus => string.IsNullOrWhiteSpace(EmailTipusImportData) ? (int)EmailTipusEnum.Na : ((int)GeneratedAdatszotarTipusEnum.EmailTipus).GetItemIdByTypeAndName(EmailTipusImportData, _tanevId);
public bool? EmailAlapertelmezett => GetBooleanValue(EmailAlapertelmezettImportData);
public TanuloItemCo Tanulo { get; set; }
private bool IsSzakkepzoIntezmeny { get; }
public bool IsVanAlapertelmezettTelefonszam { get; set; }
public bool IsVanAlapertelmezettEmail { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!string.IsNullOrWhiteSpace(TanuloNeveImportData) &&
!string.IsNullOrWhiteSpace(TanuloOktatasiAzonositoImportData))
{
if (!FelhasznaloId.IsEntityId())
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.HibaEzzelAzOktatasiAzonositovalNemLetezikTanuloEbbenATanevben);
}
}
//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(FelhasznaloVezeteknev) || string.IsNullOrWhiteSpace(FelhasznaloKeresztnev)))
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.ATanuloNeveFormatumaNemMegfelelo);
}
if (!string.IsNullOrWhiteSpace(EmailTipusImportData))
{
if (!EmailTipus.IsEntityId())
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.HibaNincsIlyenEmailTipus);
}
}
if (!string.IsNullOrWhiteSpace(TelefonszamTipusaImportData))
{
if (!TelefonTipus.IsEntityId())
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.HibaNincsIlyenTelefonTipus);
}
}
if (string.IsNullOrWhiteSpace(TanuloTelefonszamImportData) && string.IsNullOrWhiteSpace(TanuloEmailCimImportData))
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.HibaATelefonszamEsEmailCimKozulEgyiketLegalabbMegKellAdni);
}
if (!string.IsNullOrWhiteSpace(TanuloTelefonszamImportData) && (string.IsNullOrWhiteSpace(TelefonszamAlapertelmezettImportData) || string.IsNullOrWhiteSpace(TelefonszamTipusaImportData)))
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.HibaKitoltottTelefonszamEsetenAlapErtEsTipusKotelezo);
}
if (!string.IsNullOrWhiteSpace(TanuloEmailCimImportData) && !IsVanAlapertelmezettEmail && !(EmailAlapertelmezett.HasValue && EmailAlapertelmezett.Value))
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.ATanulonakNincsAlapertelmezettEmailCimeARendszerbenAllitsaAlapertelmezettreATanuloEmailCimet);
}
if (!string.IsNullOrWhiteSpace(TanuloTelefonszamImportData) && !IsVanAlapertelmezettTelefonszam && !(TelefonAlapertelmezett.HasValue && TelefonAlapertelmezett.Value))
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.ATanulonakNincsAlapertelmezettTelefonszamaARendszerbenAllitsaalapertelmezettreATanuloTelefonszamat);
}
if (!string.IsNullOrWhiteSpace(TanuloEmailCimImportData) && (string.IsNullOrWhiteSpace(EmailAlapertelmezettImportData) || string.IsNullOrWhiteSpace(EmailTipusImportData)))
{
yield return new ValidationResult(ImportExportTanulokElerhetosegiAdataikResource.HibaKitoltottEmailEsetenAlapErtEsTipusKotelezo);
}
if (IsSzakkepzoIntezmeny && !string.IsNullOrWhiteSpace(TanuloOktatasiAzonositoImportData) && !Extensions.FelhasznaloExtensions.IsValidOktatasiAzonosito(TanuloOktatasiAzonositoImportData))
{
yield return new ValidationResult(ErrorResource.AMegadottOktatasiAzonositoHibas);
}
}
}
}
public class TelefonTanuloImportJsonItemCo : BaseImportJsonItemCo
{
public TelefonTanuloImportJsonItemCo(TanulokElerhetosegiAdataikImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.TelefonId;
FelhasznaloId = importItemCo.FelhasznaloId.Value;
Nev = importItemCo.Nev;
Telefonszam = importItemCo.Telefonszam;
TipusId = importItemCo.TelefonTipus;
TipusNev = TipusId?.GetDisplayName<TelefonTipusEnum>(tanevId);
IsAlapertelmezett = SDAConvert.ToSDABoolean(importItemCo.TelefonAlapertelmezett.HasValue && importItemCo.TelefonAlapertelmezett.Value);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationTelefon;
}
[JsonProperty("Nev")]
public string Nev { get; set; }
[JsonProperty("C_FELHASZNALOID")]
public int FelhasznaloId { get; set; }
[JsonProperty("C_TELEFONSZAM")]
public string Telefonszam { get; set; }
[JsonProperty("C_TELEFONTIPUSA")]
public int? TipusId { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
[JsonIgnore]
public string TipusNev { get; set; }
[JsonProperty("C_ISPUBLIC")]
public string IsPublic => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISHIBASANMEGADVA")]
public string IsHibasanMegadva => SDAConvert.ToSDABoolean(false);
}
public class EmailTanuloImportJsonItemCo : BaseImportJsonItemCo
{
public EmailTanuloImportJsonItemCo(TanulokElerhetosegiAdataikImportItemCo importItemCo, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Id = importItemCo.EmailId;
FelhasznaloId = importItemCo.FelhasznaloId.Value;
Nev = importItemCo.Nev;
EmailCim = importItemCo.EmailCim;
TipusId = importItemCo.EmailTipus;
TipusNev = TipusId?.GetDisplayName<EmailTipusEnum>(tanevId);
IsAlapertelmezett = SDAConvert.ToSDABoolean(importItemCo.EmailAlapertelmezett.HasValue && importItemCo.EmailAlapertelmezett.Value);
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.OperationEmail;
}
[JsonProperty("Nev")]
public string Nev { get; set; }
[JsonProperty("C_FELHASZNALOID")]
public int FelhasznaloId { get; set; }
[JsonProperty("C_EMAILCIM")]
public string EmailCim { get; set; }
[JsonProperty("C_EMAILTIPUSA")]
public int? TipusId { get; set; }
[JsonProperty("C_ALAPERTELMEZETT")]
public string IsAlapertelmezett { get; set; }
[JsonIgnore]
public string TipusNev { get; set; }
[JsonProperty("C_ISPUBLIC")]
public string IsPublic => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_ISHIBASANMEGADVA")]
public string IsHibasanMegadva => SDAConvert.ToSDABoolean(false);
}

View file

@ -0,0 +1,223 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Validation;
using Kreta.Core;
using Kreta.Core.CustomAttributes;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class TeremImportCo : BaseImportCo
{
[JsonIgnore]
public List<TeremImportItemCo> MainImportItemList { get; set; } = new List<TeremImportItemCo>();
[JsonIgnore]
public List<TeremImportItemCo> NemImportalhatoItemList { get; set; } = new List<TeremImportItemCo>();
[JsonProperty("T_TEREM_OSSZES")]
public List<TeremImportJsonItemCo> MainImportJsonItemList { get; set; }
[JsonIgnore]
public List<TeremItemCo> TeremCoList { get; set; }
public Dictionary<int, List<ValidationResult>> Validate()
{
var validationResultDictionary = new Dictionary<int, List<ValidationResult>>();
foreach (TeremImportItemCo importItem in MainImportItemList)
{
var validationResultList = new List<ValidationResult>();
//NOTE: Az import item-eket egyesével levalidáljuk!
var blValidator = new BlValidator(importItem);
if (!blValidator.IsValid)
{
validationResultList.AddRange(blValidator.ErrorList);
}
if (validationResultList.Count > 0)
{
validationResultDictionary.Add(importItem.LineNumber, validationResultList);
}
}
Dictionary<int, string> lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash);
var duplicatedRowConditonTextList = new List<string>
{
ImportExportTeremResource.ImportHeaderNameHelyisegNev
};
ValidateDuplicatedRows(validationResultDictionary, lineNumberCompareHashDictionary, duplicatedRowConditonTextList);
return validationResultDictionary;
}
}
public class TeremImportItemCo : BaseImportItemCo, IValidatableObject
{
private readonly int _tanevId;
private TeremImportItemCo() { }
public TeremImportItemCo(int tanevId)
{
_tanevId = tanevId;
}
#region Fields
/// <summary>
/// Technikai paraméter(ek) a reflection-ös exporthoz.
/// </summary>
public const string NemImportalhatoSorokExportAttributeId = nameof(NemImportalhatoSorokExportAttributeId);
#endregion Fields
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 00, nameof(ImportExportTeremResource.ImportHeaderNameHelyisegNev), typeof(ImportExportTeremResource))]
[Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTeremResource.ImportHeaderNameHelyisegNev), ResourceType = typeof(ImportExportTeremResource))]
public string HelyisegNevImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 01, nameof(ImportExportTeremResource.ImportHeaderNameJelleg), typeof(ImportExportTeremResource))]
[MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTeremResource.ImportHeaderNameJelleg), ResourceType = typeof(ImportExportTeremResource))]
public string JellegImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 02, nameof(ImportExportTeremResource.ImportHeaderNameBefogadokepesseg), typeof(ImportExportTeremResource))]
[MaxLength(4, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTeremResource.ImportHeaderNameBefogadokepesseg), ResourceType = typeof(ImportExportTeremResource))]
public string BefogadokepessegImportData { get; set; }
[SimpleExportColumn(NemImportalhatoSorokExportAttributeId, 03, nameof(ImportExportTeremResource.ImportHeaderNameAlapterulet), typeof(ImportExportTeremResource))]
[MaxLength(4, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))]
[Display(Name = nameof(ImportExportTeremResource.ImportHeaderNameAlapterulet), ResourceType = typeof(ImportExportTeremResource))]
public string AlapteruletImportData { get; set; }
public string Nev => GetStringValue(HelyisegNevImportData);
public int? JellegId => string.IsNullOrWhiteSpace(JellegImportData) ? (int)TeremTipusEnum.Na : ((int)GeneratedAdatszotarTipusEnum.TeremTipus).GetItemIdByTypeAndName(JellegImportData, _tanevId);
public int? Kapacitas => GetIntValue(BefogadokepessegImportData);
public int? Terulet => GetIntValue(AlapteruletImportData);
#region Validate
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//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(JellegImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!JellegId.IsEntityId())
{
yield return new ValidationResult(ErrorResource.NincsIlyenTeremtipus);
}
}
//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(BefogadokepessegImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!Kapacitas.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidNumberFormat, ImportExportTeremResource.ImportHeaderNameBefogadokepesseg.ToLowerInvariant(), BefogadokepessegImportData));
}
else
{
if (Kapacitas < 0 || Kapacitas > 5000)
{
yield return new ValidationResult(ErrorResource.AKapacitasCsakEgy0Es5000KozottiEgeszSzamLehet);
}
}
}
//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(AlapteruletImportData))
{
//NOTE: Ha az érték null, akkor a bejövő adat nem megfelelő formátumú!
if (!Terulet.HasValue)
{
yield return new ValidationResult(string.Format(ImportExportCommonResource.InvalidNumberFormat, ImportExportTeremResource.ImportHeaderNameAlapterulet.ToLowerInvariant(), AlapteruletImportData));
}
else
{
if (Terulet < 0 || Terulet > 9999)
{
yield return new ValidationResult(ErrorResource.ATeruletCsakEgy0Es9999KozottiEgeszSzamLehet);
}
}
}
}
#endregion Validate
}
public class TeremImportJsonItemCo : BaseImportJsonItemCo
{
public TeremImportJsonItemCo(TeremImportItemCo importItemCo, int mukodesiHelyId, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Nev = importItemCo.Nev;
//NOTE: Az JellegId.Value nem lehet null, mert ide már csak olyan elem jön be, aminek van jellege!
JellegId = importItemCo.JellegId.Value;
Kapacitas = importItemCo.Kapacitas;
Terulet = importItemCo.Terulet;
MukodesiHelyId = mukodesiHelyId;
Id = importItemCo.Id;
LineNumber = importItemCo.LineNumber;
Operation = importItemCo.Operation;
}
public TeremImportJsonItemCo(OrarendImportItemCo orarendImportItemCo, int mukodesiHelyId, int tanevId, int intezmenyId, int felhasznaloId) : base(tanevId, intezmenyId, felhasznaloId)
{
Nev = orarendImportItemCo.TeremNev;
JellegId = (int)TeremTipusEnum.Osztalyterem;
Kapacitas = null;
Terulet = null;
MukodesiHelyId = mukodesiHelyId;
LineNumber = orarendImportItemCo.LineNumber;
Operation = orarendImportItemCo.OperationTerem;
}
#region Import Json Properties
[JsonProperty("C_NEV")]
public string Nev { get; set; }
[JsonProperty("C_JELLEG")]
public int JellegId { get; set; }
[JsonProperty("C_KAPACITAS")]
public int? Kapacitas { get; set; }
[JsonProperty("C_TERULET")]
public int? Terulet { get; set; }
[JsonProperty("C_MUKODESIHELYID")]
public int MukodesiHelyId { get; set; }
#region Default Required Import Json Properties
[JsonProperty("C_ACTIVE")]
public string IsActive => SDAConvert.ToSDABoolean(true);
[JsonProperty("C_TOBBORATLEHETTARTANI")]
public string IsTobbOratLehetTartani => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_WIFILEFEDETT")]
public string IsWifiLefedett => SDAConvert.ToSDABoolean(false);
[JsonProperty("C_BERBEADHATO")]
public string IsBerbeadhato => SDAConvert.ToSDABoolean(false);
#endregion Default Required Import Json Properties
#endregion Import Json Properties
}
}