58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using ExcelDna.Integration;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using Microsoft.Office.Interop.Excel;
|
||
using RhSolutions.Services;
|
||
using System.Linq;
|
||
|
||
namespace RhSolutions.AddIn
|
||
{
|
||
public class Functions
|
||
{
|
||
[ExcelFunction(Description = "Распознать артикул и попробовать найти его в прайс-листе")]
|
||
public static object RHSOLUTIONS([ExcelArgument(Name = "\"Строка с названием материала\"")] string line)
|
||
{
|
||
object result;
|
||
IDatabaseClient databaseClient = RhSolutionsAddIn.ServiceProvider.GetService<IDatabaseClient>();
|
||
|
||
result = ExcelAsyncUtil.Run("Database request", line, delegate
|
||
{
|
||
return databaseClient.GetProduct(line).GetAwaiter().GetResult();
|
||
});
|
||
|
||
string parsedSku = Sku.TryParse(line, out var skus)
|
||
? skus.First().ToString() : string.Empty;
|
||
|
||
if (result == null)
|
||
{
|
||
if (string.IsNullOrEmpty(parsedSku))
|
||
{
|
||
return ExcelError.ExcelErrorNA;
|
||
}
|
||
else
|
||
{
|
||
return skus.First().ToString();
|
||
}
|
||
}
|
||
|
||
if (result.Equals(ExcelError.ExcelErrorNA))
|
||
{
|
||
if (string.IsNullOrEmpty(parsedSku))
|
||
{
|
||
return "Загрузка...";
|
||
}
|
||
else
|
||
{
|
||
return skus.First().ToString();
|
||
}
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
[ExcelFunction]
|
||
public static void _ResetStatusBar()
|
||
{
|
||
RhSolutionsAddIn.Excel.StatusBar = false;
|
||
}
|
||
}
|
||
} |