using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.Resources; using Microsoft.Ajax.Utilities; using Newtonsoft.Json; using ModelStateDictionary = System.Web.Http.ModelBinding.ModelStateDictionary; namespace Kreta.Web.Areas.Adminisztracio.Models { public class TanuloErtekelesMondatbankTobbesItemModel : BaseTanuloErtekelesMondatbankItemModel { public override string Szoveg { get; set; } public override int? TanuloErtekelesTipusId { get; set; } public override int? EvfolyamTipusId { get; set; } public override int? TantargyId { get; set; } public List SelectedIdList { get; set; } [Display(Name = nameof(TanuloErtekelesResource.RovidNevModositasa), ResourceType = typeof(TanuloErtekelesResource))] public bool RovidNevEnabled { get; set; } public string SelectedIdListJson { get => SelectedIdList == null ? string.Empty : JsonConvert.SerializeObject(SelectedIdList); set => SelectedIdList = JsonConvert.DeserializeObject>(value); } [JsonConstructor] public TanuloErtekelesMondatbankTobbesItemModel(bool mustSetSelectListItemLists = true) : base(mustSetSelectListItemLists) { RovidNevEnabled = false; SelectedIdList = new List(); } public TanuloErtekelesMondatbankTobbesItemCo ToCo() { var result = new TanuloErtekelesMondatbankTobbesItemCo { SelectedIdList = SelectedIdList, RovidNev = RovidNevEnabled ? string.IsNullOrWhiteSpace(RovidNev) ? "sz" : RovidNev : null, Szoveg = !string.IsNullOrWhiteSpace(Szoveg) ? Szoveg : null, TanuloErtekelesTipusId = TanuloErtekelesTipusId, EvfolyamTipusId = EvfolyamTipusId, TantargyId = TantargyId, TipusId = TanuloErtekelesMondatbankHelper.GetTanuloErtekelesMondatbankTipusIdByTantargyId(TantargyId), SzovegNemet = !string.IsNullOrWhiteSpace(SzovegNemet) ? SzovegNemet : null, SzovegHorvat = !string.IsNullOrWhiteSpace(SzovegHorvat) ? SzovegHorvat : null, SzovegRoman = !string.IsNullOrWhiteSpace(SzovegRoman) ? SzovegRoman : null, SzovegSzerb = !string.IsNullOrWhiteSpace(SzovegSzerb) ? SzovegSzerb : null, }; return result; } public override ModelStateDictionary Validate() { var modelStateDictionary = new ModelStateDictionary(); if (TanuloErtekelesTipusId == null && EvfolyamTipusId == null && TantargyId == null && string.IsNullOrWhiteSpace(Szoveg) && (!RovidNevEnabled || string.IsNullOrWhiteSpace(RovidNev))) { modelStateDictionary.AddModelError(string.Empty, ErrorResource.NincsMegadvaModositandoAdat); } if (!RovidNev.IsNullOrWhiteSpace() && RovidNev.Length > 3) { modelStateDictionary.AddModelError(nameof(RovidNev), ErrorResource.ARovidNevNemLehetHosszabbMint3Karakter); } if (!Szoveg.IsNullOrWhiteSpace() && Szoveg.Length > Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz) { modelStateDictionary.AddModelError(nameof(Szoveg), string.Format(ErrorResource.ASzovegNemLehetHosszabbMint0Karakter, Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz)); } if (!SzovegNemet.IsNullOrWhiteSpace() && SzovegNemet.Length > Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz) { modelStateDictionary.AddModelError(nameof(SzovegNemet), string.Format(ErrorResource.ASzovegNemetNemLehetHosszabbMint0Karakter, Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz)); } if (!SzovegHorvat.IsNullOrWhiteSpace() && SzovegHorvat.Length > Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz) { modelStateDictionary.AddModelError(nameof(SzovegHorvat), string.Format(ErrorResource.ASzovegHorvatNemLehetHosszabbMint0Karakter, Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz)); } if (!SzovegRoman.IsNullOrWhiteSpace() && SzovegRoman.Length > Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz) { modelStateDictionary.AddModelError(nameof(SzovegRoman), string.Format(ErrorResource.ASzovegRomanNemLehetHosszabbMint0Karakter, Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz)); } if (!SzovegSzerb.IsNullOrWhiteSpace() && SzovegSzerb.Length > Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz) { modelStateDictionary.AddModelError(nameof(SzovegSzerb), string.Format(ErrorResource.ASzovegSzerbNemLehetHosszabbMint0Karakter, Core.Constants.MinMaxValues.MaxSzovegesErtekelesHossz)); } return modelStateDictionary; } } }