From 3ea18ae25e98527aa85835c9221ea01b36560b33 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 21:24:44 +0300 Subject: Add Uri Converter --- Source/ExcelDNA/Functions.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Source/ExcelDNA/Functions.cs (limited to 'Source/ExcelDNA/Functions.cs') diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs new file mode 100644 index 0000000..a282e3e --- /dev/null +++ b/Source/ExcelDNA/Functions.cs @@ -0,0 +1,19 @@ +using AngleSharp.Dom; +using ExcelDna.Integration; +using System.Net.Http; +using System.Threading.Tasks; + +namespace Rehau.Sku.Assist +{ + public class Functions + { + [ExcelFunction] + public static async Task RAUNAME(string request) + { + Task contentTask = Task.Run(() => SkuAssist.GetContent(request)); + Task documentTask = await contentTask.ContinueWith(content => SkuAssist.GetDocument(content)); + IProduct product = await documentTask.ContinueWith(doc => SkuAssist.GetProductFromDocument(doc.Result)); + return product != null ? product.ToString() : "Не найдено"; + } + } +} \ No newline at end of file -- cgit v1.2.3 From b5c71350700a486b8a8d1fa0fe7db32220963eba Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Fri, 3 Dec 2021 12:57:22 +0300 Subject: Add Caching and replace HttpClientUtil class to external file --- Source/ExcelDNA/Functions.cs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'Source/ExcelDNA/Functions.cs') diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs index a282e3e..db882c5 100644 --- a/Source/ExcelDNA/Functions.cs +++ b/Source/ExcelDNA/Functions.cs @@ -1,19 +1,36 @@ -using AngleSharp.Dom; -using ExcelDna.Integration; -using System.Net.Http; +using ExcelDna.Integration; using System.Threading.Tasks; +using System.Runtime.Caching; namespace Rehau.Sku.Assist { public class Functions { [ExcelFunction] - public static async Task RAUNAME(string request) + public static object RAUNAME(string request) { - Task contentTask = Task.Run(() => SkuAssist.GetContent(request)); - Task documentTask = await contentTask.ContinueWith(content => SkuAssist.GetDocument(content)); - IProduct product = await documentTask.ContinueWith(doc => SkuAssist.GetProductFromDocument(doc.Result)); - return product != null ? product.ToString() : "Не найдено"; + if (MemoryCache.Default.Contains(request)) + return MemoryCache.Default[request].ToString(); + + else + { + object result = ExcelAsyncUtil.Run("Rauname", new[] { request }, + delegate + { + Task product = Task.Run(() => SkuAssist.GetProduct(request)); + return product.Result; + }); + + if (Equals(result, ExcelError.ExcelErrorNA)) + { + return "Загрузка..."; + } + else + { + MemoryCache.Default.Add(request, result, System.DateTime.Now.AddMinutes(10)); + return result == null ? "Не найдено" : result.ToString(); + } + } } } } \ No newline at end of file -- cgit v1.2.3 From 2f7c5688ddd0d4145b91f5660f8f49df70081b28 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Fri, 3 Dec 2021 13:24:31 +0300 Subject: Fix null return --- Source/ExcelDNA/Functions.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Source/ExcelDNA/Functions.cs') diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs index db882c5..b348fc9 100644 --- a/Source/ExcelDNA/Functions.cs +++ b/Source/ExcelDNA/Functions.cs @@ -25,10 +25,16 @@ namespace Rehau.Sku.Assist { return "Загрузка..."; } + + else if (result == null) + { + return "Не найдено"; + } + else { MemoryCache.Default.Add(request, result, System.DateTime.Now.AddMinutes(10)); - return result == null ? "Не найдено" : result.ToString(); + return result.ToString(); } } } -- cgit v1.2.3 From c748be35c4bc35dc431066fb390945ee0c986ea3 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Fri, 3 Dec 2021 14:15:16 +0300 Subject: Add RauSku Function. Some refactoring. --- Source/ExcelDNA/Functions.cs | 56 +++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 14 deletions(-) (limited to 'Source/ExcelDNA/Functions.cs') diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs index b348fc9..d45b6ee 100644 --- a/Source/ExcelDNA/Functions.cs +++ b/Source/ExcelDNA/Functions.cs @@ -10,32 +10,60 @@ namespace Rehau.Sku.Assist public static object RAUNAME(string request) { if (MemoryCache.Default.Contains(request)) - return MemoryCache.Default[request].ToString(); + { + IProduct product = MemoryCache.Default[request] as IProduct; + return product.Name; + } else { object result = ExcelAsyncUtil.Run("Rauname", new[] { request }, delegate { - Task product = Task.Run(() => SkuAssist.GetProduct(request)); - return product.Result; + Task p = Task.Run(() => SkuAssist.GetProduct(request)); + return p.Result; }); - if (Equals(result, ExcelError.ExcelErrorNA)) - { + if (result == null) + return "Не найдено"; + + if (result.Equals(ExcelError.ExcelErrorNA)) return "Загрузка..."; - } - else if (result == null) - { + IProduct product = result as IProduct; + MemoryCache.Default.Add(request, product, System.DateTime.Now.AddMinutes(10)); + //MemoryCache.Default.Add(product.Name, product, System.DateTime.Now.AddMinutes(10)); + return product.Name; + } + } + + [ExcelFunction] + public static object RAUSKU(string request) + { + if (MemoryCache.Default.Contains(request)) + { + IProduct result = MemoryCache.Default[request] as IProduct; + return result.Sku; + } + else + { + object result = ExcelAsyncUtil.Run("RauSku", new[] { request }, + delegate + { + Task p = Task.Run(() => SkuAssist.GetProduct(request)); + return p.Result; + }); + + if (result == null) return "Не найдено"; - } - else - { - MemoryCache.Default.Add(request, result, System.DateTime.Now.AddMinutes(10)); - return result.ToString(); - } + if (result.Equals(ExcelError.ExcelErrorNA)) + return "Загрузка..."; + + IProduct product = result as IProduct; + MemoryCache.Default.Add(request, product, System.DateTime.Now.AddMinutes(10)); + //MemoryCache.Default.Add(product.Sku, product, System.DateTime.Now.AddMinutes(10)); + return product.Sku; } } } -- cgit v1.2.3 From 915929fa9d0738a4e4db4134ea522b343ab2c1d2 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Fri, 3 Dec 2021 19:30:35 +0300 Subject: Add Json parsing and refactoring --- Source/ExcelDNA/Functions.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'Source/ExcelDNA/Functions.cs') diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs index d45b6ee..9ce4429 100644 --- a/Source/ExcelDNA/Functions.cs +++ b/Source/ExcelDNA/Functions.cs @@ -1,6 +1,6 @@ using ExcelDna.Integration; -using System.Threading.Tasks; using System.Runtime.Caching; +using System.Threading.Tasks; namespace Rehau.Sku.Assist { @@ -17,7 +17,7 @@ namespace Rehau.Sku.Assist else { - object result = ExcelAsyncUtil.Run("Rauname", new[] { request }, + object result = ExcelAsyncUtil.Run("RauName", new[] { request }, delegate { Task p = Task.Run(() => SkuAssist.GetProduct(request)); @@ -32,7 +32,6 @@ namespace Rehau.Sku.Assist IProduct product = result as IProduct; MemoryCache.Default.Add(request, product, System.DateTime.Now.AddMinutes(10)); - //MemoryCache.Default.Add(product.Name, product, System.DateTime.Now.AddMinutes(10)); return product.Name; } } @@ -42,8 +41,8 @@ namespace Rehau.Sku.Assist { if (MemoryCache.Default.Contains(request)) { - IProduct result = MemoryCache.Default[request] as IProduct; - return result.Sku; + IProduct product = MemoryCache.Default[request] as IProduct; + return product.Id; } else { @@ -62,8 +61,7 @@ namespace Rehau.Sku.Assist IProduct product = result as IProduct; MemoryCache.Default.Add(request, product, System.DateTime.Now.AddMinutes(10)); - //MemoryCache.Default.Add(product.Sku, product, System.DateTime.Now.AddMinutes(10)); - return product.Sku; + return product.Id; } } } -- cgit v1.2.3 From 355e2d36729b607c80b75a4e78342ed487cc56d4 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Fri, 3 Dec 2021 22:25:20 +0300 Subject: Add RAUPRICE function. Refactoring. --- Source/ExcelDNA/Functions.cs | 59 ++++---------------------------------------- 1 file changed, 5 insertions(+), 54 deletions(-) (limited to 'Source/ExcelDNA/Functions.cs') diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs index 9ce4429..a9bdfca 100644 --- a/Source/ExcelDNA/Functions.cs +++ b/Source/ExcelDNA/Functions.cs @@ -1,6 +1,4 @@ using ExcelDna.Integration; -using System.Runtime.Caching; -using System.Threading.Tasks; namespace Rehau.Sku.Assist { @@ -8,61 +6,14 @@ namespace Rehau.Sku.Assist { [ExcelFunction] public static object RAUNAME(string request) - { - if (MemoryCache.Default.Contains(request)) - { - IProduct product = MemoryCache.Default[request] as IProduct; - return product.Name; - } - - else - { - object result = ExcelAsyncUtil.Run("RauName", new[] { request }, - delegate - { - Task p = Task.Run(() => SkuAssist.GetProduct(request)); - return p.Result; - }); - - if (result == null) - return "Не найдено"; - - if (result.Equals(ExcelError.ExcelErrorNA)) - return "Загрузка..."; - - IProduct product = result as IProduct; - MemoryCache.Default.Add(request, product, System.DateTime.Now.AddMinutes(10)); - return product.Name; - } - } + => SkuAssist.GetProduct(request, ProductField.Name); [ExcelFunction] public static object RAUSKU(string request) - { - if (MemoryCache.Default.Contains(request)) - { - IProduct product = MemoryCache.Default[request] as IProduct; - return product.Id; - } - else - { - object result = ExcelAsyncUtil.Run("RauSku", new[] { request }, - delegate - { - Task p = Task.Run(() => SkuAssist.GetProduct(request)); - return p.Result; - }); + => SkuAssist.GetProduct(request, ProductField.Id); - if (result == null) - return "Не найдено"; - - if (result.Equals(ExcelError.ExcelErrorNA)) - return "Загрузка..."; - - IProduct product = result as IProduct; - MemoryCache.Default.Add(request, product, System.DateTime.Now.AddMinutes(10)); - return product.Id; - } - } + [ExcelFunction] + public static object RAUPRICE(string request) + => SkuAssist.GetProduct(request, ProductField.Price); } } \ No newline at end of file -- cgit v1.2.3