423 lines
18 KiB
C#
423 lines
18 KiB
C#
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
|
|
}
|
|
}
|