diff --git a/PARR.EsppSync/IEsppObject.cs b/PARR.EsppSync/IEsppObject.cs
index 54862c3b..e62efe81 100644
--- a/PARR.EsppSync/IEsppObject.cs
+++ b/PARR.EsppSync/IEsppObject.cs
@@ -7,5 +7,25 @@ namespace PARR.EsppSync
public string TemplateName { get; set; }
public RobotsEnum Robot { get; }
+
+ public bool IsActive { get; set; }
+ }
+
+ ///
+ /// Облегченная модель для сравнения полей, если IsActive==false
+ ///
+ public class EsppLightObject : IEsppObject
+ {
+ public EsppLightObject(IEsppObject obj)
+ {
+ TemplateName = obj.TemplateName;
+ IsActive = obj.IsActive;
+ }
+
+ public string TemplateName { get; set; }
+
+ public RobotsEnum Robot { get; }
+
+ public bool IsActive { get; set; }
}
}
diff --git a/PARR.EsppSync/ISyncService.cs b/PARR.EsppSync/ISyncService.cs
index 73b027b2..449d5e1d 100644
--- a/PARR.EsppSync/ISyncService.cs
+++ b/PARR.EsppSync/ISyncService.cs
@@ -20,6 +20,13 @@ namespace PARR.EsppSync
public interface ISyncService where EsppObject : class, IEsppObject
{
+ ///
+ ///
+ ///
+ /// Строка из RabbitMQ
+ /// Делегат парсинга из строки в модель EsppObject
+ /// Конвертирует BD Template в модель для сравнения
+ ///
Task SyncEsppObjectAsync(string str, ParserHandlerDelegate parser, ConvertDbObjToComparisonObjHandlerDelegate converterToEsppObject);
}
}
\ No newline at end of file
diff --git a/PARR.EsppSync/SyncService.cs b/PARR.EsppSync/SyncService.cs
index 57107ac3..630b5294 100644
--- a/PARR.EsppSync/SyncService.cs
+++ b/PARR.EsppSync/SyncService.cs
@@ -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())
{
diff --git a/PARR.EsppTemplateSync/TemplateMQSyncer.cs b/PARR.EsppTemplateSync/TemplateMQSyncer.cs
index 316563da..c1aab207 100644
--- a/PARR.EsppTemplateSync/TemplateMQSyncer.cs
+++ b/PARR.EsppTemplateSync/TemplateMQSyncer.cs
@@ -66,7 +66,6 @@ namespace PARR.EsppTemplateSync
///
///
///
- ///
private EsppObjectTemplate ConvertDbObjToEsppObj(Template template)
{
var templateFromDb = new EsppObjectTemplate
@@ -95,7 +94,6 @@ namespace PARR.EsppTemplateSync
///
///
///
- ///
private EsppObjectTemplate? ParseStrToEsppObject(string str)
{
var splittedContent = str.Split(globalSettings.ParsingSeparator);