yambroskin

Untitled

Jun 8th, 2020
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. using EleWise.ELMA.CRM.Models;
  2. using EleWise.ELMA.Services;
  3. using Yambr.Dadata.Exceptions;
  4. using Yambr.Dadata.Services;
  5. using Yambr.Dadata.Settings;
  6.  
  7. namespace Yambr.Dadata.Models.Scripts
  8. {
  9. /// <summary>
  10. /// Модуль сценариев объекта "Контрагент"
  11. /// </summary>
  12. public class ContractorLegalExtScripts : EleWise.ELMA.Model.Scripts.Entities.EntityScriptModule<IContractorLegalExt>
  13. {
  14. /// <summary>
  15. /// Обновление контрагента с формы при заполненных полях наименование - инн, огрн
  16. /// </summary>
  17. /// <param name="entity"></param>
  18. /// <param name="form"></param>
  19. public virtual void UpdateContractorLegalBySuggestion(IContractorLegalExt entity, EleWise.ELMA.Model.Views.FormViewBuilder<IContractorLegalExt> form)
  20. {
  21. var contractorUpdaterService = Locator.GetService<IContractorUpdaterService>();
  22. contractorUpdaterService.UpdateContractorLegalBySuggestion(entity);
  23. NameValidationForDuplicateCheck(entity, form);
  24. }
  25.  
  26. private static void NameValidationForDuplicateCheck(IContractor entity, EleWise.ELMA.Model.Views.FormViewBuilder<IContractorLegalExt> form)
  27. {
  28. var nameInput = form.For(c => c.Name);
  29. try
  30. {
  31. CheckDuplicate(entity);
  32. nameInput.Validation.Ok();
  33. }
  34. catch (ContractorDuplicateException e)
  35. {
  36. var exception = e.Message;
  37. nameInput.Validation.Error(exception);
  38. }
  39. }
  40.  
  41. private static void CheckDuplicate(IContractor entity)
  42. {
  43. var settings = Locator.GetServiceNotNull<DadataSettingsModule>().Settings;
  44. if (!(settings.CheckDuplicateOnSaveContractor ?? false)) return;
  45. var contractorUpdaterService = Locator.GetServiceNotNull<IContractorUpdaterService>();
  46. var duplicateContractor = contractorUpdaterService.GetDuplicateContractor(entity);
  47. if (duplicateContractor != null)
  48. {
  49. throw new ContractorDuplicateException(
  50. duplicateContractor,
  51. $"Нельзя создавать дубль {duplicateContractor} #{duplicateContractor.Id} - ответственный {duplicateContractor.Responsible} {duplicateContractor.Responsible?.EMail}");
  52. }
  53. }
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment