Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EleWise.ELMA.ComponentModel;
using EleWise.ELMA.CRM.Models;
using EleWise.ELMA.Logging;
using EleWise.ELMA.Model.Managers;
using EleWise.ELMA.Runtime.NH.Listeners;
using EleWise.ELMA.Runtime.Settings;
using EleWise.ELMA.Services;
using NHibernate.Event;
namespace EleWise.ELMA.ConfigurationModel.Scripts
{
/// <summary>
/// Модуль сценариев объекта "Перехватчик"
/// </summary>
// public class PerehvatchikScripts : EleWise.ELMA.Model.Scripts.Entities.EntityScriptModule<IPerehvatchik>
// {
[Component]
public class ReSaveContractor : EntityEventsListener
{
public override bool OnPreInsert(PreInsertEvent @event)
{
// Определяем тип объекта
//----------------------------------------------------------
if (@event.Entity is IContractor) // интерфейс объекта типа Контрагент
{
var Kontragent = (IContractor)@event.Entity;
if (Kontragent.LegalAddress != null && !string.IsNullOrWhiteSpace(Kontragent.LegalAddress.City)) // Если ввели город в юридическом адресе
{
// Ищем по фильтру контрагента указываем ИНН и город и исключаем текущего контрагента
var filterString = string.Format(@"(INN is NULL OR INN = ’{0}’) and LegalAddress in (City LIKE ’%{1}%’) and Id <> {2}", Kontragent.INN, Kontragent.LegalAddress.City.Trim(), Kontragent.Id);
var findKA = EntityManager<IContractor>.Instance.Find(filterString);
if (findKA.Count == 0)
{
Logger.Log.Error("==Выход нет дублей ");
} else
{
throw new Exception("Контрагент уже существует. " + string.Format(@"{0}:9800/CRM/ContractorLegal/Details/{1}",
Locator.GetServiceNotNull<CommonSettingsModule>().Settings.ApplicationBaseUrl,
findKA.ElementAt(0).Id) +
" Укажите другие ИНН и город.");
}
} else
{
// Ищем по фильтру контрагента указываем ИНН и город и исключаем текущего контрагента
var filterString = string.Format(@"(INN is NULL OR INN = ’{0}’) and LegalAddress in (City is NULL OR City = ’’) and Id <> {1}", Kontragent.INN, Kontragent.Id);
var findKA = EntityManager<IContractor>.Instance.Find(filterString);
if (findKA.Count == 0)
{
Logger.Log.Error("==Выход нет дублей ");
} else
{
throw new Exception("Контрагент уже ." + string.Format(@"{0}:9900/CRM/ContractorLegal/Details/{1}",
Locator.GetServiceNotNull<CommonSettingsModule>().Settings.ApplicationBaseUrl,
findKA.ElementAt(0).Id) +
" Укажите другие ИНН и город.");
}
}
}
return false; // возврат в норме
}
public override bool OnPreUpdate(PreUpdateEvent @event)
{
// if (Kontragent.IsDeleted) return false;
// Определяем тип объекта
//----------------------------------------------------------
if (@event.Entity is IContractor) // интерфейс объекта типа Контрагент
{
var Kontragent = (IContractor)@event.Entity;
if (Kontragent.LegalAddress != null && !string.IsNullOrWhiteSpace(Kontragent.LegalAddress.City)) // Если ввели город в юридическом адресе
{
// Ищем по фильтру контрагента указываем ИНН и город и исключаем текущего контрагента
var filterString = string.Format(@"(INN is NULL OR INN = ’{0}’) and LegalAddress in (City LIKE ’%{1}%’) and Id <> {2}", Kontragent.INN, Kontragent.LegalAddress.City.Trim(), Kontragent.Id);
var findKA = EntityManager<IContractor>.Instance.Find(filterString);
if (findKA.Count == 0)
{
Logger.Log.Error("==Выход нет дублей ");
} else
{
throw new Exception("Контрагент уже существует. " + string.Format(@"{0}:9800/CRM/ContractorLegal/Details/{1}",
Locator.GetServiceNotNull<CommonSettingsModule>().Settings.ApplicationBaseUrl,
findKA.ElementAt(0).Id) +
" Укажите другие ИНН и город.");
}
} else
{
// Ищем по фильтру контрагента указываем ИНН и город и исключаем текущего контрагента
var filterString = string.Format(@"(INN is NULL OR INN = ’{0}’) and LegalAddress in (City is NULL OR City = ’’) and Id <> {1}", Kontragent.INN, Kontragent.Id);
var findKA = EntityManager<IContractor>.Instance.Find(filterString);
if (findKA.Count == 0)
{
Logger.Log.Error("==Выход нет дублей ");
} else
{
throw new Exception("Контрагент уже ." + string.Format(@"{0}:9900/CRM/ContractorLegal/Details/{1}",
Locator.GetServiceNotNull<CommonSettingsModule>().Settings.ApplicationBaseUrl,
findKA.ElementAt(0).Id) +
" Укажите другие ИНН и город.");
}
}
}
return false; // возврат в норме
}
}
// }
}