aboutsummaryrefslogtreecommitdiff
path: root/src/AddIn/Functions.cs
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2021-12-26 18:22:32 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2021-12-26 18:22:32 +0300
commit54fc3320e7d64d7903b4d091fe0d5c15df01fd78 (patch)
treeac8b9aa1e883a85339a594b2797ab319cca73c4e /src/AddIn/Functions.cs
parent20cfbfcca3a779c04aecdca5e4b465651e2be42a (diff)
Move to /src
Diffstat (limited to 'src/AddIn/Functions.cs')
-rw-r--r--src/AddIn/Functions.cs56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/AddIn/Functions.cs b/src/AddIn/Functions.cs
new file mode 100644
index 0000000..618d17d
--- /dev/null
+++ b/src/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