public SyncResponce GetDiffData(Guid clientId, int LastVersion) { Log.Debug("Запрос разностной информации для " + clientId); int ruleid = GetRuleIdFromGuid(clientId); var dict = base.GetProvPriceListAutoFormRule(); int rule = dict.FirstOrDefault(p => p.Item1 == ruleid).Item2; int CurrentVersion = UnloadVersionControl.UpdateUploadVersion(scheme); SyncResponce result = new SyncResponce() { LastVersion = CurrentVersion }; Log.Debug("ClientVersion:" + LastVersion + " MyVersion:" + CurrentVersion); DataSet dsClient = null; { string FileName = System.IO.Path.Combine(scheme.Folder, scheme.Type.ToString(), rule.ToString(), LastVersion + ".dat"); if (System.IO.File.Exists(FileName)) { dsClient = DataTableExtension.Deserialize(System.IO.File.ReadAllBytes(FileName)); } } DataSet dsService = null; { string FileName = System.IO.Path.Combine(scheme.Folder, scheme.Type.ToString(), rule.ToString(), CurrentVersion + ".dat"); if (System.IO.File.Exists(FileName)) { byte[] data = System.IO.File.ReadAllBytes(FileName); dsService = DataTableExtension.Deserialize(data); foreach (DataTable dt in dsService.Tables) { result.Hash[dt.TableName] = DataTableExtension.ComputeHash(dt); } } } if (dsService == null || dsClient == null) { Log.Error("Не удалось прочитать один из файлов Cl:" + dsClient?.DataSetName + " Srv:" + dsService?.DataSetName); throw new Exception("Не удалось прочитать одну из выгрузок "); } DataSet dsdiff = new DataSet(); for (int i = 0; i < dsService.Tables.Count; i++) { DataTable dtService = dsService.Tables[i]; DataTable dtClient = dsClient.Tables[i]; DataTable dtdiff = TableHelper.getDifferentRecords(dtService, dtClient); dtdiff.TableName = dtService.TableName; dsdiff.Tables.Add(dtdiff); } result.blob = DataTableExtension.Serialize(dsdiff); return result; }
public SyncResponce GetFullData(Guid clientId) { var dict = base.GetProvPriceListAutoFormRule(); int ruleid = GetRuleIdFromGuid(clientId); int rule = dict.FirstOrDefault(p => p.Item1 == ruleid).Item2; int LastVersion = UnloadVersionControl.UpdateUploadVersion(scheme); SyncResponce result = new SyncResponce() { LastVersion = LastVersion }; string FileName = System.IO.Path.Combine(scheme.Folder, scheme.Type.ToString(), rule.ToString(), LastVersion + ".dat"); if (!System.IO.File.Exists(FileName)) { result.blob = null; } else { result.blob = File.ReadAllBytes(FileName); DataSet dsService = DataTableExtension.Deserialize(result.blob); foreach (DataTable dt in dsService.Tables) { result.Hash[dt.TableName] = DataTableExtension.ComputeHash(dt); } } return result; }