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

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));
}
}