diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2021-12-13 20:39:41 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2021-12-13 20:39:41 +0300 |
commit | e175a634cefc6e8c0ecd49514a89b1d4f30ce33b (patch) | |
tree | e4265926b772d31e2eff58d52ee3e1ec159af2a8 /Source/AddIn | |
parent | b7c65d64e98092049fddc1b482bfc7aa97759d60 (diff) |
Refactoring. ExcelDNA.IntelliSense library add.
Add description to Excel functions.
Diffstat (limited to 'Source/AddIn')
-rw-r--r-- | Source/AddIn/AddIn.cs | 4 | ||||
-rw-r--r-- | Source/AddIn/Functions.cs | 54 |
2 files changed, 48 insertions, 10 deletions
diff --git a/Source/AddIn/AddIn.cs b/Source/AddIn/AddIn.cs index e29c070..5cae777 100644 --- a/Source/AddIn/AddIn.cs +++ b/Source/AddIn/AddIn.cs @@ -1,4 +1,5 @@ using ExcelDna.Integration; +using ExcelDna.IntelliSense; using ExcelDna.Registration; using Microsoft.Win32; using System.Net.Http; @@ -24,11 +25,12 @@ namespace RehauSku { RegisterFunctions(); GetRegistryKeys(); + IntelliSenseServer.Install(); } public void AutoClose() { - + IntelliSenseServer.Uninstall(); } void RegisterFunctions() diff --git a/Source/AddIn/Functions.cs b/Source/AddIn/Functions.cs index c6e9da4..2ae22e4 100644 --- a/Source/AddIn/Functions.cs +++ b/Source/AddIn/Functions.cs @@ -5,16 +5,52 @@ namespace RehauSku { public class Functions { - [ExcelFunction] - public static object RAUNAME(string request) - => SkuAssist.GetProduct(request, ProductField.Name); + [ExcelFunction(Description = "Получение названия первого продукта по запросу в интернет-магазин REHAU")] + public static object RAUNAME([ExcelArgument(Name = "Запрос", Description = "Запрос в свободной форме или ячейка с запросом")] string request) + => MakeRequest(request, ProductField.Name); - [ExcelFunction] - public static object RAUSKU(string request) - => SkuAssist.GetProduct(request, ProductField.Id); + [ExcelFunction(Description = "Получение артикула первого продукта по запросу в интернет-магазин REHAU")] + public static object RAUSKU([ExcelArgument(Name = "Запрос", Description = "Запрос в свободной форме или ячейка с запросом")] string request) + => MakeRequest(request, ProductField.Id); - [ExcelFunction] - public static object RAUPRICE(string request) - => SkuAssist.GetProduct(request, ProductField.Price); + [ExcelFunction(Description = "Получение цены первого продукта по запросу в интернет-магазин REHAU")] + public static object RAUPRICE([ExcelArgument(Name = "Запрос", Description = "Запрос в свободной форме или ячейка с запросом")] string request) + => MakeRequest(request, ProductField.Price); + + private static object MakeRequest(string request, ProductField field) + { + object result; + + if (request.IsCached()) + result = request.GetFromCache(); + + else + { + result = ExcelAsyncUtil.Run("Request", request, delegate + { + return request.RequestAndCache().GetAwaiter().GetResult(); + }); + } + + if (result == null) + return "Не найдено :("; + + if (result.Equals(ExcelError.ExcelErrorNA)) + return "Загрузка..."; + + IProduct product = result as IProduct; + + switch (field) + { + case ProductField.Name: + return product.Name; + case ProductField.Id: + return product.Id; + case ProductField.Price: + return double.Parse(product.Price, System.Globalization.CultureInfo.InvariantCulture); + default: + return null; + } + } } }
\ No newline at end of file |