34 lines
1.9 KiB
C#
34 lines
1.9 KiB
C#
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<OrarendRequest>
|
|
{
|
|
public OrarendRequest(DateTime datumTol, DateTime datumIg)
|
|
{
|
|
DatumTol = datumTol;
|
|
DatumIg = datumIg;
|
|
}
|
|
|
|
public DateTime DatumTol { get; set; }
|
|
|
|
public DateTime DatumIg { get; set; }
|
|
|
|
public Dictionary<Predicate<OrarendRequest>, string> ModelValidaciok => new Dictionary<Predicate<OrarendRequest>, 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<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
|
|
}
|
|
}
|