ConfigItemDataModelValidator.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Autofac;
  2. using FluentValidation;
  3. using GreenTree.Nachtragsmanagement.Core;
  4. using GreenTree.Nachtragsmanagement.Services.Configuration;
  5. using GreenTree.Nachtragsmanagement.Services.Misc;
  6. using GreenTree.Nachtragsmanagement.Web.Models.Config;
  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.Config
  13. {
  14. public class ConfigItemDataModelValidator : AbstractValidator<ConfigItemDataModel>
  15. {
  16. public ConfigItemDataModelValidator()
  17. {
  18. RuleFor(m => m.Name)
  19. .NotEmpty()
  20. .WithMessage("Ein Name wird benötigt");
  21. RuleFor(m => m.TypeFullName)
  22. .NotEmpty()
  23. .WithMessage("Der Wertetyp wird benötigt");
  24. RuleFor(m => m)
  25. .Must(m => NameDoesNotExist(m))
  26. .WithMessage("Ein Konfigurationselement mit diesem Namen existiert bereits.");
  27. }
  28. private bool NameDoesNotExist(ConfigItemDataModel model)
  29. {
  30. var configService = Singleton<IContainer>.Instance.Resolve<IConfigurationService>();
  31. if (model == null) return false;
  32. var existingConfigItem = configService.GetConfigItemByName(model.Name);
  33. if (existingConfigItem != null && existingConfigItem.Id == model.Id) return true;
  34. if (existingConfigItem != null && existingConfigItem.Id != model.Id) return false;
  35. if (existingConfigItem == null) return true;
  36. return false;
  37. }
  38. }
  39. }