kreta/Kreta.BusinessLogic/HelperClasses/ImportCo/TantargyfelosztasImportCo.cs
2024-03-13 00:33:46 +01:00

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