AppendixDataModelValidator.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Autofac;
  2. using FluentValidation;
  3. using GreenTree.Nachtragsmanagement.Core;
  4. using GreenTree.Nachtragsmanagement.Services.Appendix;
  5. using GreenTree.Nachtragsmanagement.Services.Site;
  6. using GreenTree.Nachtragsmanagement.Web.Models.Appendix;
  7. using GreenTree.Nachtragsmanagement.Web.Models.Deviation;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Web;
  12. namespace GreenTree.Nachtragsmanagement.Web.Validation.Appendix
  13. {
  14. public class AppendixDataModelValidator : AbstractValidator<AppendixDataModel>
  15. {
  16. public AppendixDataModelValidator()
  17. {
  18. RuleFor(m => m.CustomNumber)
  19. .NotEmpty()
  20. .WithMessage("Nummer wird benötigt")
  21. .MaximumLength(10)
  22. .WithMessage("Muss unter 10 Zeichen sein");
  23. RuleFor(m => m)
  24. .Must(m => CustomNumberDoesNotExistInSite(m))
  25. .WithMessage("Nachtragsnummer in Baustelle bereits vorhanden.");
  26. RuleFor(m => m.Description)
  27. .NotEmpty()
  28. .WithMessage("Beschreibung wird benötigt");
  29. RuleFor(m => m.OfferingDate)
  30. .NotEmpty()
  31. .WithMessage("Einreichdatum wird benötigt");
  32. }
  33. private bool CustomNumberDoesNotExistInSite(AppendixDataModel model)
  34. {
  35. var siteService = Singleton<IContainer>.Instance.Resolve<ISiteService>();
  36. if (model == null) return false;
  37. if (!model.SiteId.HasValue) return false;
  38. var existingAppendix =
  39. siteService.GetSiteById(model.SiteId.Value).Appendices
  40. .FirstOrDefault(a => a.CustomNumber == model.CustomNumber);
  41. if (existingAppendix != null && existingAppendix.Id == model.Id) return true;
  42. if (existingAppendix != null && existingAppendix.Id != model.Id) return false;
  43. if (existingAppendix == null) return true;
  44. return false;
  45. }
  46. }
  47. }