/// <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> /// Creates the result for multiple queries response. /// </summary> /// <param name="json"> /// The json. /// </param> /// <returns> /// The <see cref="List"/>. /// </returns> public virtual List <UPCRMResult> CreateResultForMultipleQueriesResponse(Dictionary <string, object> json) { var allLocalResultRows = new Dictionary <string, object>(); foreach (var containerMetaInfo in this.ContainerMetaInfos) { var localResult = containerMetaInfo.Find(); for (var j = 0; localResult != null && j < localResult.RowCount; j++) { var localResultRow = localResult.ResultRowAtIndex(j); allLocalResultRows[localResultRow.RootRecordId] = localResultRow; } } var results = new List <UPCRMResult>(this.NumberOfQueries); var dataStore = UPCRMDataStore.DefaultStore; for (var i = 0; i < this.NumberOfQueries; i++) { var serverResultAsDictionary = json[$"Result{i}"]; if (serverResultAsDictionary != null) { var serverResult = new UPCRMResult(this.ContainerMetaInfos[i], serverResultAsDictionary); dataStore.VirtualInfoAreaCache.ApplyResult(serverResult); var mergedResult = new UPCRMMergedResult(this.ContainerMetaInfos[i]); mergedResult.MergeServerResultWithLocalResults(serverResult, allLocalResultRows); results.Add(mergedResult); } else { results.Add(null); } } return(results); }