kreta/Kreta.WebApi/Naplo/Kreta.Naplo.Domain/V3/OsztalyCsoport/TanuloErtekelesMentesRequest.cs
2024-03-13 00:33:46 +01:00

37 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Naplo.Domain.V3.Interfaces;
using Kreta.Resources;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class TanuloErtekelesMentesRequest : IValidatableObject, IModelValidacio<TanuloErtekelesMentesRequest>
{
public DateTime ErtekelesDatum { get; set; }
public int ErtekelesModId { get; set; }
public string ErtekelesTema { get; set; }
public int? ErtekelesOsztalyzatId { get; set; }
public string ErtekelesSzoveg { get; set; }
public int? ErtekelesSzazalek { get; set; }
public Dictionary<Predicate<TanuloErtekelesMentesRequest>, string> ModelValidaciok => new Dictionary<Predicate<TanuloErtekelesMentesRequest>, string>
{
{ x => x.ErtekelesOsztalyzatId == null && string.IsNullOrWhiteSpace(x.ErtekelesSzoveg) && x.ErtekelesSzazalek == null, TanuloErtekelesResource.EgyErtekelesFajtaMegadasaKotelezo },
{ x => (x.ErtekelesOsztalyzatId != null && (!string.IsNullOrWhiteSpace(x.ErtekelesSzoveg) || x.ErtekelesSzazalek != null)) ||
(!string.IsNullOrWhiteSpace(x.ErtekelesSzoveg) && (x.ErtekelesOsztalyzatId != null || x.ErtekelesSzazalek != null)) ||
(x.ErtekelesSzazalek != null && (x.ErtekelesOsztalyzatId != null || !string.IsNullOrWhiteSpace(x.ErtekelesSzoveg))),
TanuloErtekelesResource.HibasanMegadottErtekelesEgyszerreCsakEgyFajtaErtekelesAdhatoMeg
},
{ x => x.ErtekelesSzazalek != null && (x.ErtekelesSzazalek < 0 || x.ErtekelesSzazalek > 100), TanuloErtekelesResource.SzazalekosErtekNincsAMegengedettTartomanyban }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}