UserValidator.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using FluentValidation;
  2. using GreenTree.Maschinenbestellungen.Domain.Model;
  3. using GreenTree.Maschinenbestellungen.Services.Authorization;
  4. using GreenTree.Maschinenbestellungen.Web.Models.Rights.User;
  5. using Microsoft.AspNetCore.Identity;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Security.Cryptography.X509Certificates;
  10. using System.Threading.Tasks;
  11. namespace GreenTree.Maschinenbestellungen.Web.Validators
  12. {
  13. public class UserValidator : AbstractValidator<UserModel>
  14. {
  15. #region DI fields
  16. // The global DbContext
  17. private readonly OrderDbContext _eRPDbContext;
  18. #endregion
  19. #region Ctor
  20. /// <summary>
  21. /// Initializes a new instance of the UserValidator class
  22. /// </summary>
  23. /// <param name="eRPDbContext">Global DbContext.</param>
  24. public UserValidator(OrderDbContext eRPDbContext)
  25. {
  26. _eRPDbContext = eRPDbContext;
  27. RuleFor(x => x.Accountname)
  28. .NotEmpty()
  29. .Length(0, 16)
  30. .WithMessage("Der Kontoname darf maximal 16 Zeichen lang sein.");
  31. RuleFor(x => x.Accountname)
  32. .Must(a => !_eRPDbContext.Users.Any(u => u.Accountname == a))
  33. .When(x => _eRPDbContext.Users
  34. .Any(u => u.Id != x.Id && u.Accountname == x.Accountname))
  35. .WithMessage("Der Accountname wird bereits verwendet.");
  36. RuleFor(x => x.Forename)
  37. .NotEmpty()
  38. .WithMessage("Es muss ein gültiger Vorname eingegeben werden.");
  39. RuleFor(x => x.Lastname)
  40. .NotEmpty()
  41. .WithMessage("Es muss ein gültiger Nachname eingegeben werden.");
  42. RuleFor(x => x.MailAddress)
  43. .EmailAddress()
  44. .WithMessage("Es muss eine gültige E-Mail Adresse eingegeben werden.");
  45. RuleFor(x => x.Birthdate)
  46. .LessThan(DateTime.Now.Date.AddYears(-12))
  47. .WithMessage("Das Geburtsdatum muss mindestens 12 Jahre in der Vergangenheit liegen.");
  48. }
  49. #endregion
  50. }
  51. }