This commit is contained in:
2020-11-24 23:00:17 +00:00
parent e89f508f99
commit dd967b4e27
4 changed files with 23 additions and 11 deletions

View File

@@ -269,14 +269,15 @@ namespace AyaNova.Biz
foreach (Customer w in orderedList) foreach (Customer w in orderedList)
{ {
var jo = JObject.FromObject(w); var jo = JObject.FromObject(w);
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]); if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"]))
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo); ReportData.Add(jo);
} }
} }
return ReportData; return ReportData;
} }
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
// IMPORT EXPORT // IMPORT EXPORT
// //
@@ -295,12 +296,12 @@ namespace AyaNova.Biz
public async Task<List<string>> ImportData(JArray ja) public async Task<List<string>> ImportData(JArray ja)
{ {
List<string> ImportResult = new List<string>(); List<string> ImportResult = new List<string>();
string ImportTag=$"imported-{FileUtil.GetSafeDateFileName()}"; string ImportTag = $"imported-{FileUtil.GetSafeDateFileName()}";
var jsset = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new AyaNova.Util.JsonUtil.ShouldSerializeContractResolver(new string[] { "Concurrency", "Id", "CustomFields" }) }); var jsset = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new AyaNova.Util.JsonUtil.ShouldSerializeContractResolver(new string[] { "Concurrency", "Id", "CustomFields" }) });
foreach (JObject j in ja) foreach (JObject j in ja)
{ {
var w = j.ToObject<Customer>(jsset); var w = j.ToObject<Customer>(jsset);
if (j["CustomFields"] != null) if (j["CustomFields"] != null)
w.CustomFields = j["CustomFields"].ToString(); w.CustomFields = j["CustomFields"].ToString();
w.Tags.Add(ImportTag);//so user can find them all and revert later if necessary w.Tags.Add(ImportTag);//so user can find them all and revert later if necessary

View File

@@ -180,8 +180,7 @@ namespace AyaNova.Biz
var orderedList = from id in batch join z in batchResults on id equals z.Id select z; var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
foreach (CustomerNote w in orderedList) foreach (CustomerNote w in orderedList)
{ {
var jo = JObject.FromObject(w); var jo = JObject.FromObject(w);
// jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo); ReportData.Add(jo);
} }
} }

View File

@@ -303,7 +303,8 @@ namespace AyaNova.Biz
foreach (Widget w in orderedList) foreach (Widget w in orderedList)
{ {
var jo = JObject.FromObject(w); var jo = JObject.FromObject(w);
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]); if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"]))
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo); ReportData.Add(jo);
} }
} }
@@ -332,12 +333,12 @@ namespace AyaNova.Biz
public async Task<List<string>> ImportData(JArray ja) public async Task<List<string>> ImportData(JArray ja)
{ {
List<string> ImportResult = new List<string>(); List<string> ImportResult = new List<string>();
string ImportTag=$"imported-{FileUtil.GetSafeDateFileName()}"; string ImportTag = $"imported-{FileUtil.GetSafeDateFileName()}";
var jsset = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new AyaNova.Util.JsonUtil.ShouldSerializeContractResolver(new string[] { "Concurrency", "Id", "CustomFields" }) }); var jsset = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new AyaNova.Util.JsonUtil.ShouldSerializeContractResolver(new string[] { "Concurrency", "Id", "CustomFields" }) });
foreach (JObject j in ja) foreach (JObject j in ja)
{ {
var w = j.ToObject<Widget>(jsset); var w = j.ToObject<Widget>(jsset);
if (j["CustomFields"] != null) if (j["CustomFields"] != null)
w.CustomFields = j["CustomFields"].ToString(); w.CustomFields = j["CustomFields"].ToString();
w.Tags.Add(ImportTag);//so user can find them all and revert later if necessary w.Tags.Add(ImportTag);//so user can find them all and revert later if necessary

View File

@@ -69,6 +69,15 @@ namespace AyaNova.Util
return ret; return ret;
} }
public static bool JTokenIsNullOrEmpty(JToken token)
{
return (token == null) ||
(token.Type == JTokenType.Array && !token.HasValues) ||
(token.Type == JTokenType.Object && !token.HasValues) ||
(token.Type == JTokenType.String && token.ToString() == String.Empty) ||
(token.Type == JTokenType.Null);
}
//Contract resolver used for exporting to file translations and report templates //Contract resolver used for exporting to file translations and report templates
//and ignoring specified propertes //and ignoring specified propertes
public class ShouldSerializeContractResolver : DefaultContractResolver public class ShouldSerializeContractResolver : DefaultContractResolver
@@ -88,6 +97,8 @@ namespace AyaNova.Util
}//eoc }//eoc
}//eons }//eons