Пример #1
0
        public static async Task TestMergeAsync(string serverUrl)
        {
            var dataWriter1 =
                new MyNoSqlServerDataWriter <ReplaceEntity>(() => serverUrl, "test", false);

            var dataWriter2 =
                new MyNoSqlServerDataWriter <MergeEntity>(() => serverUrl, "test", false);

            var dataWriterMerged =
                new MyNoSqlServerDataWriter <MergedEntity>(() => serverUrl, "test", false);

            var replaceEntity = new ReplaceEntity
            {
                PartitionKey = "test",
                RowKey       = "test",
                Value        = "123"
            };

            await dataWriter1.InsertOrReplaceAsync(replaceEntity);

            var operationResult = await dataWriter2.MergeAsync(replaceEntity.PartitionKey, replaceEntity.RowKey, entityToEdit =>
            {
                entityToEdit.Value2 = "456";
                return(true);
            });

            Assert.AreEqual(OperationResult.Ok, operationResult);

            var entity = await dataWriterMerged.GetAsync(replaceEntity.PartitionKey, replaceEntity.RowKey);

            Assert.AreEqual("123", entity.Value);
            Assert.AreEqual("456", entity.Value2);

            Console.WriteLine("TestMergeAsync OK");
        }
Пример #2
0
        protected void OnButtonApplyClicked(object sender, EventArgs e)
        {
            var mergeList = Duplicates.Where(x => x.Selected).ToList();

            progressOp.Visible          = true;
            progressOp.Adjustment.Value = 0;
            progressOp.Adjustment.Upper = mergeList.Count;
            progressOp.Text             = "Ищем ссылки...";
            QSMain.WaitRedraw();
            var totalLinks = 0;

            foreach (var dup in mergeList)
            {
                var main = dup.Addresses.First(x => x.IsMain);
                foreach (var deleted in dup.Addresses.Where(x => !x.IsMain && !x.Ignore))
                {
                    totalLinks += ReplaceEntity.ReplaceEverywhere(uow, deleted.Address, main.Address);
                    uow.Delete(deleted.Address);
                    uow.Commit();

                    progressOp.Text = $"Ищем ссылки... Заменено {totalLinks} ссылок.";
                    QSMain.WaitRedraw();
                }

                ObservableDuplicates.Remove(dup);
                progressOp.Adjustment.Value++;
                QSMain.WaitRedraw();
            }
            progressOp.Text = $"Готово. Заменено {totalLinks} ссылок.";
        }
        public MergeAddressesDlg(IFiasApiClient fiasApiClient)
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            this.Build();

            TabName = "Дубликаты адресов";

            ytreeviewDuplicates.ColumnsConfig = FluentColumnsConfig <DublicateNode> .Create()
                                                .AddColumn("Слить").AddToggleRenderer(x => x.Selected).Editing()
                                                .AddColumn("Контрагент").AddTextRenderer(x => x.CounterParty)
                                                .AddColumn("Адрес 1с").AddTextRenderer(x => x.FirstAddress1c)
                                                .Finish();

            ytreeviewDuplicates.Selection.Changed += DuplicateSelection_Changed;

            ytreeviewAddresses.ColumnsConfig = FluentColumnsConfig <AddressNode> .Create()
                                               .AddColumn("Главный").AddToggleRenderer(x => x.IsMain).Editing().Radio()
                                               .AddColumn("Не трогать").AddToggleRenderer(x => x.Ignore).Editing()
                                               .AddColumn("Код 1С").AddTextRenderer(x => x.Address.Code1c)
                                               .AddColumn("Адрес 1с").AddTextRenderer(x => x.PangoText, useMarkup: true)
                                               .Finish();

            _replaceEntity = new ReplaceEntity(DeleteConfig.Main);
            _deliveryPointViewModelFactory = new DeliveryPointViewModelFactory(fiasApiClient);
        }
Пример #4
0
        protected void OnButtonReplaceClicked(object sender, EventArgs e)
        {
            var result = ReplaceEntity.ReplaceEverywhere(UoW, entryreference1.Subject as Nomenclature, entryreference2.Subject as Nomenclature);

            UoW.Commit();
            logger.Info("Заменено {0} ссылок.", result);
            entryreference1.Subject = null;
            entryreference2.Subject = null;
        }
Пример #5
0
        private static async Task UpdateData(MyNoSqlServerDataWriter <ReplaceEntity> dataWriter)
        {
            var replaceEntity = new ReplaceEntity
            {
                PartitionKey = "test",
                RowKey       = "test",
                Value        = DateTime.Now.ToString("HH:mm:ss")
            };

            await dataWriter.InsertOrReplaceAsync(replaceEntity);

            Console.WriteLine("Update Complite");
        }
        private void ConfigureDlg()
        {
            _replaceEntity = new ReplaceEntity(DeleteConfig.Main);
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            entryreference1.SubjectType = typeof(Nomenclature);
            entryreference2.SubjectType = typeof(Nomenclature);
        }
Пример #7
0
 protected void OnEntryreference1Changed(object sender, EventArgs e)
 {
     if (entryreference1.Subject != null)
     {
         totalLinks = ReplaceEntity.CalculateTotalLinks(UoW, entryreference1.Subject as Nomenclature);
         labelTotalLinks.LabelProp = String.Format("Найдено {0} ссылок", totalLinks);
     }
     else
     {
         totalLinks = 0;
         labelTotalLinks.LabelProp = String.Empty;
     }
     CanRelace();
 }
Пример #8
0
        public ReplaceEntityViewModel(IUnitOfWorkFactory unitOfWorkFactory, INavigationManager navigation, ILifetimeScope autofacScope, ReplaceEntity replaceEntity, IGuiDispatcher guiDispatcher, IValidator validator = null) : base(unitOfWorkFactory, navigation, validator)
        {
            Title = "Замена ссылок на объекты";
            this.replaceEntity = replaceEntity ?? throw new ArgumentNullException(nameof(replaceEntity));
            this.guiDispatcher = guiDispatcher ?? throw new ArgumentNullException(nameof(guiDispatcher));

            var entryBuilder = new CommonEEVMBuilderFactory(this, UoW, navigation)
            {
                AutofacScope = autofacScope
            };

            SourceEntryViewModel = entryBuilder.ForEntity <ProtectionTools>().MakeByType().Finish();
            TargetEntryViewModel = entryBuilder.ForEntity <ProtectionTools>().MakeByType().Finish();

            SourceEntryViewModel.Changed += SourceEntryViewModel_Changed;
            TargetEntryViewModel.Changed += TargetEntryViewModel_Changed;
        }