SiteDataModelValidator.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Autofac;
  2. using FluentValidation;
  3. using GreenTree.Nachtragsmanagement.Core;
  4. using GreenTree.Nachtragsmanagement.Services.Site;
  5. using GreenTree.Nachtragsmanagement.Web.Models.Deviation;
  6. using GreenTree.Nachtragsmanagement.Web.Models.Site;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Web;
  11. namespace GreenTree.Nachtragsmanagement.Web.Validation.Site
  12. {
  13. public class SiteDataModelValidator : AbstractValidator<SiteDataModel>
  14. {
  15. public SiteDataModelValidator()
  16. {
  17. RuleFor(m => m.CustomNumber)
  18. .NotEmpty()
  19. .WithMessage("Kostenstelle wird benötigt");
  20. RuleFor(m => m)
  21. .Must(m => CustomNumberDoesNotExist(m))
  22. .WithMessage("Kostenstelle bereits vorhanden.");
  23. RuleFor(m => m.Description)
  24. .NotEmpty()
  25. .WithMessage("Beschreibung wird benötigt");
  26. RuleFor(m => m.Start)
  27. .NotEmpty()
  28. .WithMessage("Ein Startdatum wird benötigt");
  29. RuleFor(m => m.UserValues)
  30. .Must(r => r.Count > 0)
  31. .WithMessage("Mind. ein Bearbeiter muss ausgewählt werden");
  32. }
  33. private bool CustomNumberDoesNotExist(SiteDataModel model)
  34. {
  35. var siteService = Singleton<IContainer>.Instance.Resolve<ISiteService>();
  36. if (model == null) return false;
  37. var existingSiteById = siteService.GetSiteById(model.Id);
  38. if (existingSiteById != null) return true;
  39. var existingSiteByCustomNumber = siteService.GetSiteByCustomNumber(model.CustomNumber);
  40. if (existingSiteByCustomNumber == null) return true;
  41. return false;
  42. }
  43. }
  44. }