using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data.SqlTypes; using System.Linq; using Kreta.Naplo.Domain.V3.Interfaces; namespace Kreta.Naplo.Domain.V3.Orarend { public class OrarendRequest : IValidatableObject, IModelValidacio { public OrarendRequest(DateTime datumTol, DateTime datumIg) { DatumTol = datumTol; DatumIg = datumIg; } public DateTime DatumTol { get; set; } public DateTime DatumIg { get; set; } public Dictionary, string> ModelValidaciok => new Dictionary, string> { { x => x.DatumIg < x.DatumTol, $"A {nameof(DatumTol)} és a {nameof(DatumIg)} paraméterek meg vannak adva, de a {nameof(DatumTol)} nagyobb, mint a {nameof(DatumIg)} értek!" }, { x => (x.DatumIg - x.DatumTol).Days > 31, $"A {nameof(DatumTol)} és a {nameof(DatumIg)} paraméterek meg vannak adva, de maximum 1 hónap intervallum kérdezhető le!" }, { x => x.DatumTol < (DateTime)SqlDateTime.MinValue || x.DatumTol > (DateTime)SqlDateTime.MaxValue, $"A {nameof(DatumTol)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" }, { x => x.DatumIg < (DateTime)SqlDateTime.MinValue || x.DatumIg > (DateTime)SqlDateTime.MaxValue, $"A {nameof(DatumIg)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" }, { x => x.DatumTol.Millisecond > 0 || x.DatumIg.Millisecond > 0 , $"A {nameof(DatumTol)} és a {nameof(DatumIg)} paraméterek csak másodperc pontossággal megadhatóak!" } }; public IEnumerable Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value)); } }