Exemple #1
0
        /// <summary>
        /// Обработка элемента <see cref="Classifier"/>.
        /// </summary>
        /// <param name="classifier">Элемент <see cref="Classifier"/>.</param>
        /// <param name="noActual">Значение, которое нужно проставить в поле ForeignCatValue.NoActual.</param>
        protected void ProcessClassifier(Classifier classifier, DateTime?noActual)
        {
            if (classifier == null)
            {
                return;
            }

            // Получение справочника, создаем если его нет.
            var aliasType = typeof(Classifier).GetCustomAttribute <AliasType>().Alias;
            var catalog   = _catalogLoader.LoadCatalog(aliasType);

            if (catalog == null)
            {
                catalog            = new Catalog();
                catalog.Code       = aliasType;
                catalog.Name       = "Классификатор мер социальной защиты";
                catalog.CreateTime = DateTime.Now;
            }

            var foreignCatValue = _foreignCatValueLoader.LoadForeignCatValueByCode(classifier.Social.Code);

            if (foreignCatValue == null)
            {
                foreignCatValue      = new ForeignCatValue();
                foreignCatValue.Code = classifier.Social.Code;
                catalog.Values.Add(foreignCatValue);
            }

            foreignCatValue.Description = classifier.Social.Name.Trim();
            foreignCatValue.NoActual    = noActual;
            foreignCatValue.FullValue   = _syncLogItem.DataSet;
            foreignCatValue.ParentGuid  = null;
            _ds.UpdateObject(catalog);
        }
        /// <summary>
        /// Обработка элемента <see cref="FiasAddressObjects"/>.
        /// </summary>
        /// <param name="fhStructures">Элемент <see cref="FiasAddressObjects"/>.</param>
        protected void ProcessFiasAddressObjects(FiasAddressObjects faObjects)
        {
            if (faObjects == null)
            {
                return;
            }

            // Получение справочника, создаем если его нет.
            var aliasType = typeof(FiasAddressObjects).GetCustomAttribute <AliasType>().Alias;
            var catalog   = _catalogLoader.LoadCatalog(aliasType);

            if (catalog == null)
            {
                catalog             = new Catalog();
                catalog.Code        = aliasType;
                catalog.Name        = "ФИАС - адресообразующие элементы";
                catalog.Description = "Справочник территорий, улиц";
                catalog.CreateTime  = DateTime.Now;
            }

            var foreignCatValue = _foreignCatValueLoader.LoadForeignCatValueByCode(faObjects.AOGUID);

            if (foreignCatValue == null)
            {
                foreignCatValue      = new ForeignCatValue();
                foreignCatValue.Code = faObjects.AOGUID;
                catalog.Values.Add(foreignCatValue);
            }
            else if (faObjects.CURRSTATUS != 0)
            {
                return;
            }

            foreignCatValue.Description = $"{faObjects.SHORTNAME?.Trim()} {faObjects.FORMALNAME?.Trim()}";
            foreignCatValue.NoActual    = faObjects.ENDDATE;
            foreignCatValue.FullValue   = _syncLogItem.DataSet;
            if (!string.IsNullOrEmpty(faObjects.PARENTGUID))
            {
                var parent = _foreignCatValueLoader.LoadForeignCatValueByCode(faObjects.PARENTGUID);
                if (parent == null)
                {
                    var parentForeignCatValueCreatedMessage = $"При обработке сообщения {_syncLogItem.Description} (primaryKey={_syncLogItem.__PrimaryKey}) для объекта с Code={faObjects.AOGUID} из ForeignCatValue не был найден родительский объект с Code={faObjects.PARENTGUID}, поэтому был создан новый ForeignCatValue с Code={faObjects.PARENTGUID}.";
                    parent         = new ForeignCatValue();
                    parent.Code    = faObjects.PARENTGUID;
                    parent.Catalog = catalog;
                    _toUpdateDef.Add(parent);
                    _messagesToLog.Add(parentForeignCatValueCreatedMessage);
                }

                foreignCatValue.ParentGuid = parent;
            }

            _toUpdateDef.Add(catalog);
        }
        /// <summary>
        /// Обработка элемента <see cref="FiasHousesStructures"/>.
        /// </summary>
        /// <param name="fhStructures">Элемент <see cref="FiasHousesStructures"/>.</param>
        protected void ProcessFiasHousesStructures(FiasHousesStructures fhStructures)
        {
            if (fhStructures == null)
            {
                return;
            }

            // Получение справочника, создаем если его нет.
            var aliasType = typeof(FiasHousesStructures).GetCustomAttribute <AliasType>().Alias;
            var catalog   = _catalogLoader.LoadCatalog(aliasType);

            if (catalog == null)
            {
                catalog            = new Catalog();
                catalog.Code       = aliasType;
                catalog.Name       = "ФИАС - здания, строения, сооружения";
                catalog.CreateTime = DateTime.Now;
            }

            var foreignCatValue = _foreignCatValueLoader.LoadForeignCatValueByCode(fhStructures.HOUSEGUID);

            if (foreignCatValue == null)
            {
                foreignCatValue      = new ForeignCatValue();
                foreignCatValue.Code = fhStructures.HOUSEGUID;
                catalog.Values.Add(foreignCatValue);
            }

            foreignCatValue.Description = $"{fhStructures.HOUSENUM?.Trim()} {fhStructures.BUILDNUM?.Trim()} {fhStructures.STRUCNUM?.Trim()}";
            foreignCatValue.NoActual    = fhStructures.ENDDATE;
            foreignCatValue.FullValue   = _syncLogItem.DataSet;
            if (!string.IsNullOrEmpty(fhStructures.AOGUID))
            {
                var fiasAddressObjectsCatalog = _catalogLoader.LoadCatalog(typeof(FiasAddressObjects).GetCustomAttribute <AliasType>().Alias);
                var parent = _foreignCatValueLoader.LoadForeignCatValueByCode(fhStructures.AOGUID);
                if (parent == null)
                {
                    var parentForeignCatValueCreatedMessage = $"При обработке сообщения {_syncLogItem.Description} (primaryKey={_syncLogItem.__PrimaryKey}) для объекта с Code={fhStructures.HOUSEGUID} из ForeignCatValue не был найден родительский объект с Code={fhStructures.AOGUID}, поэтому был создан новый ForeignCatValue с Code={fhStructures.AOGUID}.";
                    parent         = new ForeignCatValue();
                    parent.Code    = fhStructures.AOGUID;
                    parent.Catalog = fiasAddressObjectsCatalog;
                    _toUpdateDef.Add(parent);
                    _messagesToLog.Add(parentForeignCatValueCreatedMessage);
                }

                foreignCatValue.ParentGuid = parent;
            }

            _toUpdateDef.Add(catalog);
        }