feat(esppSync, esppTemplateSync, esppScheduleSync): обновлена логика синхронизации полей. Если объект в БД деактивирован, то с ЕСПП сравниваются только поля isActive и название объекта.

This commit is contained in:
Mikhail Trubnikov
2024-02-28 10:17:01 +10:00
parent 9e2350374f
commit efc91584b6
4 changed files with 47 additions and 4 deletions

View File

@@ -61,7 +61,24 @@ namespace PARR.EsppSync
else
{
var dbObjectInEsppObject = converterToEsppObject.Invoke(template);
var isChanged = IsChanged(esppObject, dbObjectInEsppObject);
bool isChanged;
// если в БД isActive == false, то синхронизировать только по полям из IEsppObject
if (dbObjectInEsppObject.IsActive == false)
{
logger.LogDebug($"Объект деактивирован в ПАРР. Сравниваем только обязательные поля. {esppObject.TemplateName}");
var lightDbObj = new EsppLightObject(dbObjectInEsppObject);
var lightEsppObject = new EsppLightObject(esppObject);
isChanged = IsChanged(lightEsppObject, lightDbObj);
}
else
{
logger.LogDebug($"Объект активирован в ПАРР. Сравниваем все поля. {esppObject.TemplateName}");
isChanged = IsChanged(esppObject, dbObjectInEsppObject);
}
if (isChanged)
{
@@ -112,7 +129,8 @@ namespace PARR.EsppSync
}
private bool IsChanged(EsppObject esppObj, EsppObject dbObj)
//private bool IsChanged(EsppObject esppObj, EsppObject dbObj)
private bool IsChanged(object esppObj, object dbObj)
{
foreach (var prop in dbObj.GetType().GetProperties())
{