using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data.SqlTypes; using System.Linq; using Kreta.Enums; using Kreta.Naplo.Domain.V3.Interfaces; namespace Kreta.Naplo.Domain.V3.Igazolas { public class IgazolasCreateRequest : IValidatableObject, IModelValidacio { [Required] public int TanuloId { get; set; } [Required] public int OsztalyCsoportId { get; set; } [Required] public DateTime IgazolasKezdete { get; set; } [Required] public DateTime IgazolasVege { get; set; } [Required] public int IgazolasTipus { get; set; } public string IgazolasMegjegyzes { get; set; } public Dictionary, string> ModelValidaciok => new Dictionary, string> { { x => x.IgazolasVege < x.IgazolasKezdete, $"A {nameof(IgazolasKezdete)} és a {nameof(IgazolasVege)} paraméterek meg vannak adva, de a {nameof(IgazolasKezdete)} nagyobb, mint a {nameof(IgazolasVege)} értek!" }, { x => (x.IgazolasVege - x.IgazolasKezdete).Days > 20, $"A {nameof(IgazolasKezdete)} és a {nameof(IgazolasVege)} paraméterek meg vannak adva, de maximum 20 napos intervallum adható meg!" }, { x => x.IgazolasKezdete < (DateTime)SqlDateTime.MinValue || x.IgazolasKezdete > (DateTime)SqlDateTime.MaxValue, $"A {nameof(IgazolasKezdete)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" }, { x => x.IgazolasVege < (DateTime)SqlDateTime.MinValue || x.IgazolasVege > (DateTime)SqlDateTime.MaxValue, $"A {nameof(IgazolasVege)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" }, { x => !System.Enum.IsDefined(typeof(IgazolasTipusEnum), x.IgazolasTipus), "Az igazolás típusa nem megfelelő!" } }; public IEnumerable Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value)); } }