From 043a62e89ef5a63c59cf2179a0c846a57d61b92a Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 26 Oct 2020 23:48:21 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/ImportController.cs | 7 ++++--- server/AyaNova/biz/IImportAbleObject.cs | 6 ++++-- server/AyaNova/biz/WidgetBiz.cs | 20 ++++++++++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/server/AyaNova/Controllers/ImportController.cs b/server/AyaNova/Controllers/ImportController.cs index 2c0195a4..fd74ea70 100644 --- a/server/AyaNova/Controllers/ImportController.cs +++ b/server/AyaNova/Controllers/ImportController.cs @@ -43,7 +43,7 @@ namespace AyaNova.Api.Controllers /// Upload and import file /// Max 100mb total /// - /// Accepted + /// Results [Authorize] [HttpPost("upload")] [DisableFormValueModelBinding] @@ -58,6 +58,7 @@ namespace AyaNova.Api.Controllers // AyaTypeId attachToObject = null; ApiUploadProcessor.ApiUploadedFilesResult uploadFormData = null; + List ImportResult=new List(); try { if (!MultipartRequestHelper.IsMultipartContentType(Request.ContentType)) @@ -103,7 +104,7 @@ namespace AyaNova.Api.Controllers foreach (UploadedFileInfo a in uploadFormData.UploadedFiles) { JArray ja = JArray.Parse(System.IO.File.ReadAllText(a.InitialUploadedPathName)); - await ((IImportAbleObject)biz).ImportData(ja); + ImportResult.AddRange(await ((IImportAbleObject)biz).ImportData(ja)); } } } @@ -119,7 +120,7 @@ namespace AyaNova.Api.Controllers } //TODO: Return results of operation here - return Accepted(); + return Ok(ImportResult); } diff --git a/server/AyaNova/biz/IImportAbleObject.cs b/server/AyaNova/biz/IImportAbleObject.cs index 114c3615..aa855d25 100644 --- a/server/AyaNova/biz/IImportAbleObject.cs +++ b/server/AyaNova/biz/IImportAbleObject.cs @@ -1,13 +1,15 @@ using System.Threading.Tasks; using Newtonsoft.Json.Linq; +using System.Collections.Generic; + namespace AyaNova.Biz { /// /// Interface for biz objects that support importing from JSON /// internal interface IImportAbleObject - { - Task ImportData(JArray ja); + { + Task> ImportData(JArray ja); } } \ No newline at end of file diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 0dcaba3a..cdf01add 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -8,6 +8,8 @@ using AyaNova.Api.ControllerHelpers; using AyaNova.Models; using Newtonsoft.Json.Linq; using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace AyaNova.Biz { @@ -332,13 +334,25 @@ namespace AyaNova.Biz - public async Task ImportData(JArray ja) + public async Task> ImportData(JArray ja) { + List ImportResult = new List(); + var jsset = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new AyaNova.Util.JsonUtil.ShouldSerializeContractResolver(new string[] { "Concurrency", "Id", "CustomFields" }) }); foreach (JObject j in ja) { - var w = j.ToObject(); - await CreateAsync(w); + var w = j.ToObject(jsset); + var res = await CreateAsync(w); + if (res == null) + { + ImportResult.Add($"{w.Name} - no {this.GetErrorsAsString()}"); + this.ClearErrors(); + } + else + { + ImportResult.Add($"{w.Name} - ok"); + } } + return ImportResult; }