diff options
author | Serghei Cebotari <51533848+schebotar@users.noreply.github.com> | 2021-12-24 17:43:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-24 17:43:04 +0300 |
commit | 0525ec1b42d5857b740dd0dae7f6d9baeb7088d1 (patch) | |
tree | 5d9c814fd023395d894ce36a9040cf7f7330198c /Source/AddIn/Functions.cs | |
parent | 8e5db1238ad3ed97f51d9f0a9c7de83c00a12983 (diff) | |
parent | 20cfbfcca3a779c04aecdca5e4b465651e2be42a (diff) |
Merge pull request #8 from schebotar/dev
Dev
Diffstat (limited to 'Source/AddIn/Functions.cs')
-rw-r--r-- | Source/AddIn/Functions.cs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Source/AddIn/Functions.cs b/Source/AddIn/Functions.cs new file mode 100644 index 0000000..618d17d --- /dev/null +++ b/Source/AddIn/Functions.cs @@ -0,0 +1,56 @@ +using ExcelDna.Integration; +using RehauSku.Assistant; + +namespace RehauSku +{ + public class Functions + { + [ExcelFunction(description: "Получение названия первого продукта в поиске")] + public static object RAUNAME([ExcelArgument(Name = "\"Запрос\"", Description = "в свободной форме или ячейка с запросом")] string request) + => MakeRequest(request, ProductField.Name); + + [ExcelFunction(Description = "Получение артикула первого продукта в поиске")] + public static object RAUSKU([ExcelArgument(Name = "\"Запрос\"", Description = "в свободной форме или ячейка с запросом")] string request) + => MakeRequest(request, ProductField.Id); + + [ExcelFunction(Description = "Получение цены первого продукта в поиске")] + 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 |