293 lines
15 KiB
C#
293 lines
15 KiB
C#
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
|
|
}
|
|
}
|