Implement fast product search by sku

This commit is contained in:
Sergey Chebotar 2022-12-21 08:02:42 +03:00
parent c91f231892
commit 8ac3234473

View File

@ -1,6 +1,7 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using RhSolutions.AddIn; using RhSolutions.AddIn;
using RhSolutions.Models; using RhSolutions.Models;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
@ -14,22 +15,48 @@ namespace RhSolutions.Services
public static async Task<object> GetProduct(string line) public static async Task<object> GetProduct(string line)
{ {
string request = @"https://rh.cebotari.ru/api/search?query=" + line; string request = string.Empty;
string response = await httpClient.GetStringAsync(request); if (line.IsRehauSku())
var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(response);
var product = products.FirstOrDefault();
if (product == null)
{ {
return null; request = @"https://rh.cebotari.ru/api/products/" + line;
} }
else else
{ {
return $"{product.ProductSku} {product.Name}"; request = @"https://rh.cebotari.ru/api/search?query=" + line;
} }
var response = await httpClient.GetAsync(request);
try
{
response.EnsureSuccessStatusCode();
string json = await response.Content.ReadAsStringAsync();
var product = JsonConvert.DeserializeObject<IEnumerable<Product>>(json)
.FirstOrDefault();
if (product == null)
{
return null;
}
else
{
if (line.IsRehauSku())
{
return product.Name;
}
else
{
return $"{product.ProductSku} {product.Name}";
}
}
}
catch
{
return $"Ошибка сервера {response.StatusCode}";
}
} }
} }
} }