/// <summary> /// Invokes merge process /// </summary> /// <param name="schemaName">Schema name.</param> /// <param name="groupId">Identifier of the group of search results</param> /// <param name="deduplicateRecordIds">Unique identifiers.</param> /// <param name="resolvedConflicts">Config for resolving conflicts.</param> /// <returns>Instance <see cref="DuplicatesMergeResponse"/> results for merge process execution.</returns> public virtual DuplicatesMergeResponse MergeEntityDuplicatesAsync(string schemaName, int groupId, List <Guid> duplicateRecordIds, Dictionary <string, string> resolvedConflicts = null) { DuplicatesMergeResponse result = new DuplicatesMergeResponse(); if (!Locker.CanExecute(DeduplicationConsts.SearchOperationId, schemaName)) { return(result); } ValidateDuplicatesResponse response = MergeHandler.ValidateDuplicates(schemaName, duplicateRecordIds, resolvedConflicts); if (response.ConflictsExists) { result.Conflicts = response.Conflicts; return(result); } MergeHandler.ExcludeSearchResultGroup(schemaName, groupId); string jobName = string.Format(MergeDuplicatesJobNamePattern, schemaName, Guid.NewGuid()); var parameters = new Dictionary <string, object>() { { "SchemaName", schemaName }, { "OperationId", DeduplicationConsts.MergeOperationId }, { "DuplicateGroupId", groupId }, { "DuplicateRecordIds", duplicateRecordIds }, { "ResolvedConflicts", resolvedConflicts } }; AppScheduler.ScheduleImmediateProcessJob(jobName, "Dedublication", MergeDuplicatesProcessName, _userConnection.Workspace.Name, _userConnection.CurrentUser.Name, parameters); result.Success = true; return(result); }
public DuplicatesMergeResponse MergeEntityDuplicatesAsync(string schemaName, int groupId, List <Guid> deduplicateRecordIds, string mergeConfig) { Dictionary <string, string> config = null; if (!string.IsNullOrEmpty(mergeConfig)) { config = JsonConvert.DeserializeObject <Dictionary <string, string> >(mergeConfig); } var args = new ConstructorArgument[] { new ConstructorArgument("userConnection", UserConnection) }; DeduplicationProcessing deduplicationProcessing = ClassFactory.Get <DeduplicationProcessing>(args); DuplicatesMergeResponse response = deduplicationProcessing.MergeEntityDuplicatesAsync(schemaName, groupId, deduplicateRecordIds, config); return(response); }