Example #1
0
        /// <summary>
        /// Synchronizes the with data dictionary.
        /// </summary>
        /// <param name="dataDict">
        /// The data dictionary.
        /// </param>
        /// <returns>
        /// The <see cref="int"/>.
        /// </returns>
        public int SyncWithDataObject(DataModelSyncDeserializer dataDict)
        {
            bool isEnterprise = false;
            var  licenseDef   = dataDict.licenseInfo;

            if (licenseDef != null)
            {
                // DDLogCRequest("Import LICENSEINFO");
                this.Logger.LogDebug("Import LICENSEINFO", LogFlag.LogRequests);
                Dictionary <string, object> licenseDefDictionary = licenseDef.ToDictionary();
                isEnterprise = bool.Parse(licenseDefDictionary.ValueOrDefault("IsEnterpriseVersion").ToString());
#if PORTING
                NSUserDefaults.StandardUserDefaults().SetBoolForKey(isEnterprise.BoolValue, "System.isEnterprise");
                NSUserDefaults.StandardUserDefaults().Synchronize();
#endif
            }

            var recordDef = dataDict.records;

            if (recordDef != null)
            {
                // DDLogCRequest("Import RECORDS");
                this.Logger.LogDebug("Import RECORDS", LogFlag.LogRequests);
                var recordSyncResult =
                    UPCRMRecordSync.SyncRecordSetDefinitionsCrmDataStore(recordDef, this.DataStore, isEnterprise);
                if (recordSyncResult.Successful)
                {
                    this.RecordCount += recordSyncResult.RecordCount;
                }
                else
                {
                    return(recordSyncResult.ReturnCode);
                }
            }

            return(0);
        }
 /// <summary>
 /// Processes the json response.
 /// </summary>
 /// <param name="json">
 /// The json.
 /// </param>
 /// <param name="remoteData">
 /// The remote data.
 /// </param>
 public override void ProcessJsonSyncObject(DataModelSyncDeserializer json, RemoteData remoteData)
 {
     //this.Delegate?.OnFinishWithObjectResponse(this, json);
 }
 /// <summary>
 /// Processes the json response.
 /// </summary>
 /// <param name="json">
 /// The json.
 /// </param>
 /// <param name="remoteData">
 /// The remote data.
 /// </param>
 public abstract void ProcessJsonSyncObject(DataModelSyncDeserializer json, RemoteData remoteData);
        /// <summary>
        /// Called when [finish with response].
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <param name="json">
        /// The json.
        /// </param>
        public void OnFinishWithObjectResponse(SyncRequestServerOperation request, DataModelSyncDeserializer json)
        {
            this.serverRequest = null;
            if (this.cancelled)
            {
                return;
            }

            var sync        = new UPSynchronization(this.DataStore, this.ConfigStore);
            var ret         = sync.SyncWithDataObject(json);
            var recordCount = 0;
            var changedRecordIdentifications = new List <string>();
            var recordSyncArray1             = json.records;

            if (recordSyncArray1 != null)
            {
                foreach (var recordSyncObject in recordSyncArray1)
                {
                    var recordSync = recordSyncObject;

                    var dataSetName = recordSyncObject.datasetName;
                    if (string.IsNullOrEmpty(dataSetName))
                    {
                        continue;
                    }

                    var dataSet = this.ConfigStore.DataSetByName(dataSetName);
                    if (dataSet == null)
                    {
                        continue;
                    }

                    var rowArray = recordSync.rows;
                    if (rowArray == null)
                    {
                        continue;
                    }

                    recordCount += rowArray.Count;
                    foreach (JArray row in rowArray)
                    {
                        var rowinfo = row.First() as JArray;
                        var recordIdentification = StringExtensions.InfoAreaIdRecordId((string)rowinfo[0], (string)rowinfo[1]);
                        changedRecordIdentifications.Add(recordIdentification);
                    }
                }
            }

            if (ret > 0)
            {
                var errortext = $"storing records failed with errorcode #{ret}";

                // NSError.ErrorWithDomainCodeUserInfo(errortext, ret, null);
                var error = new Exception(errortext);
                this.Delegate?.SyncDataSetsDidFail(this, error);
            }
            else
            {
                var recordSyncArray = json.records;
                if (recordSyncArray != null)
                {
                    foreach (var recordSyncObject in recordSyncArray)
                    {
                        //var recordSync = recordSyncObject?.ToObject<Dictionary<string, object>>();

                        var dataSetName = recordSyncObject.datasetName;
                        if (string.IsNullOrEmpty(dataSetName))
                        {
                            continue;
                        }

                        var dataSet = this.ConfigStore.DataSetByName(dataSetName);
                        if (string.IsNullOrEmpty(dataSet?.SyncDocumentFieldGroupName))
                        {
                            continue;
                        }

                        var documentManager = new DocumentManager();
                        var rowArray        = recordSyncObject.rows;
                        if (rowArray == null)
                        {
                            continue;
                        }

                        foreach (JArray row in rowArray)
                        {
                            var rowinfo = row[0];
                            var recordIdentification = StringExtensions.InfoAreaIdRecordId((string)rowinfo[0], (string)rowinfo[1]);
                            var syncDocument         = new SyncDocument(recordIdentification, dataSet.SyncDocumentFieldGroupName, documentManager);
                            if (this.DocumentsToSync == null)
                            {
                                this.DocumentsToSync = new List <SyncDocument> {
                                    syncDocument
                                };
                            }
                            else
                            {
                                this.DocumentsToSync.Add(syncDocument);
                            }
                        }
                    }
                }

                this.TrackingDelegate.ClientFinishedWithRecordCount(recordCount);
                this.Delegate?.SyncDataSetsDidFinishSyncWithObject(this, json, changedRecordIdentifications);
            }
        }
Example #5
0
 /// <summary>
 /// Synchronizing the data sets did finish.
 /// </summary>
 /// <param name="sets">
 /// The sets.
 /// </param>
 /// <param name="json">
 /// The json.
 /// </param>
 /// <param name="changedRecordIdentifications">
 /// The changed record identifications.
 /// </param>
 public void SyncDataSetsDidFinishSyncWithObject(UPSyncDataSets sets, DataModelSyncDeserializer json, List <string> changedRecordIdentifications)
 {
 }