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"); }
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); }
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; }
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); }
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(); }
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; }