/// <summary> /// Creates the result for singe query response. /// </summary> /// <param name="json"> /// The json. /// </param> /// <returns> /// The <see cref="UPCRMResult"/>. /// </returns> public virtual UPCRMResult CreateResultForSingeQueryResponse(Dictionary <string, object> json) { var serverResult = new UPCRMResult(this.ContainerMetaInfo, json); serverResult.Log(); UPCRMDataStore.DefaultStore.VirtualInfoAreaCache.ApplyResult(serverResult); if (this.SkipLocalMerge || serverResult.RowCount == 0) { return(serverResult); } UPCRMResult localResult; if (this.LocalMergeResult != null) { localResult = this.LocalMergeResult; } else if (!string.IsNullOrEmpty(this.RecordIdentification)) { localResult = this.ContainerMetaInfo.ReadRecord(this.RecordIdentification.RecordId()); } else { localResult = this.ContainerMetaInfo.Find(); } if (localResult == null || localResult.RowCount == 0) { return(serverResult); } var allLocalResultRows = new Dictionary <string, object>(); for (var j = 0; j < localResult.RowCount; j++) { var localResultRow = localResult.ResultRowAtIndex(j); allLocalResultRows[localResultRow.RootRecordId] = localResultRow; } var mergedResult = new UPCRMMergedResult(this.ContainerMetaInfo); mergedResult.MergeServerResultWithLocalResults(serverResult, allLocalResultRows); return(mergedResult); }
/// <summary> /// Processes the result. /// </summary> /// <param name="dataDictionary"> /// The data dictionary. /// </param> private void ProcessResult(Dictionary <string, object> dataDictionary) { if (this.Canceled) { return; } var resultSet = dataDictionary.ValueOrDefault("resultSet") as DatabaseRecordSet; this.containerMetaInfo.BuildResultMetaInfoResult(this.query, resultSet); var result = new UPCRMResult(this.containerMetaInfo, resultSet); result.Log(); // Inform the handler about success this.SearchOperationHandler.SearchOperationDidFinishWithResult(this, result); this.FinishProcessing(); }