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 MainImportItemList { get; set; } = new List(); [JsonIgnore] public List NemImportalhatoItemList { get; set; } = new List(); [JsonProperty("T_ERTEKELESMONDATBANK_OSSZES")] public List MainImportJsonItemList { get; set; } [JsonIgnore] public List TanuloErtekelesMondatbankCoList { get; set; } public Dictionary> Validate() { var validationResultDictionary = new Dictionary>(); foreach (TanuloErtekelesMondatbankImportItemCo importItem in MainImportItemList) { var validationResultList = new List(); //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 lineNumberCompareHashDictionary = MainImportItemList.ToDictionary(x => x.LineNumber, x => x.CompareHash); var duplicatedRowConditonTextList = new List { 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 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 } }