Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using EleWise.ELMA.CRM.Models;
- using EleWise.ELMA.Services;
- using Yambr.Dadata.Exceptions;
- using Yambr.Dadata.Services;
- using Yambr.Dadata.Settings;
- namespace Yambr.Dadata.Models.Scripts
- {
- /// <summary>
- /// Модуль сценариев объекта "Контрагент"
- /// </summary>
- public class ContractorLegalExtScripts : EleWise.ELMA.Model.Scripts.Entities.EntityScriptModule<IContractorLegalExt>
- {
- /// <summary>
- /// Обновление контрагента с формы при заполненных полях наименование - инн, огрн
- /// </summary>
- /// <param name="entity"></param>
- /// <param name="form"></param>
- public virtual void UpdateContractorLegalBySuggestion(IContractorLegalExt entity, EleWise.ELMA.Model.Views.FormViewBuilder<IContractorLegalExt> form)
- {
- var contractorUpdaterService = Locator.GetService<IContractorUpdaterService>();
- contractorUpdaterService.UpdateContractorLegalBySuggestion(entity);
- NameValidationForDuplicateCheck(entity, form);
- }
- private static void NameValidationForDuplicateCheck(IContractor entity, EleWise.ELMA.Model.Views.FormViewBuilder<IContractorLegalExt> form)
- {
- var nameInput = form.For(c => c.Name);
- try
- {
- CheckDuplicate(entity);
- nameInput.Validation.Ok();
- }
- catch (ContractorDuplicateException e)
- {
- var exception = e.Message;
- nameInput.Validation.Error(exception);
- }
- }
- private static void CheckDuplicate(IContractor entity)
- {
- var settings = Locator.GetServiceNotNull<DadataSettingsModule>().Settings;
- if (!(settings.CheckDuplicateOnSaveContractor ?? false)) return;
- var contractorUpdaterService = Locator.GetServiceNotNull<IContractorUpdaterService>();
- var duplicateContractor = contractorUpdaterService.GetDuplicateContractor(entity);
- if (duplicateContractor != null)
- {
- throw new ContractorDuplicateException(
- duplicateContractor,
- $"Нельзя создавать дубль {duplicateContractor} #{duplicateContractor.Id} - ответственный {duplicateContractor.Responsible} {duplicateContractor.Responsible?.EMail}");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment