AppendixDataModelValidator.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. RuleFor(m => m.OfferingValue)
  33. .NotEmpty()
  34. .WithMessage("Eine Angebotssumme wird benötigt");
  35. }
  36. private bool CustomNumberDoesNotExistInSite(AppendixDataModel model)
  37. {
  38. var siteService = Singleton<IContainer>.Instance.Resolve<ISiteService>();
  39. if (model == null) return false;
  40. if (!model.SiteId.HasValue) return false;
  41. var existingAppendix =
  42. siteService.GetSiteById(model.SiteId.Value).Appendices
  43. .FirstOrDefault(a => a.CustomNumber == model.CustomNumber);
  44. if (existingAppendix != null && existingAppendix.Id == model.Id) return true;
  45. if (existingAppendix != null && existingAppendix.Id != model.Id) return false;
  46. if (existingAppendix == null) return true;
  47. return false;
  48. }
  49. }
  50. }