41 lines
2.1 KiB
C#
41 lines
2.1 KiB
C#
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<IgazolasCreateRequest>
|
|
{
|
|
[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<Predicate<IgazolasCreateRequest>, string> ModelValidaciok => new Dictionary<Predicate<IgazolasCreateRequest>, 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<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
|
|
}
|
|
}
|