aboutsummaryrefslogtreecommitdiff
path: root/Source/AddIn/Functions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Source/AddIn/Functions.cs')
-rw-r--r--Source/AddIn/Functions.cs54
1 files changed, 45 insertions, 9 deletions
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