From 8ac323447347e31875e1db53d899d13a4ac51c1d Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Wed, 21 Dec 2022 08:02:42 +0300 Subject: [PATCH] Implement fast product search by sku --- src/Services/RhDatabaseClient.cs | 47 +++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/src/Services/RhDatabaseClient.cs b/src/Services/RhDatabaseClient.cs index 1776731..8ce88f1 100644 --- a/src/Services/RhDatabaseClient.cs +++ b/src/Services/RhDatabaseClient.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using RhSolutions.AddIn; using RhSolutions.Models; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; @@ -14,22 +15,48 @@ namespace RhSolutions.Services public static async Task GetProduct(string line) { - string request = @"https://rh.cebotari.ru/api/search?query=" + line; + string request = string.Empty; - string response = await httpClient.GetStringAsync(request); - - var products = JsonConvert.DeserializeObject>(response); - - var product = products.FirstOrDefault(); - - if (product == null) + if (line.IsRehauSku()) { - return null; + request = @"https://rh.cebotari.ru/api/products/" + line; } + 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>(json) + .FirstOrDefault(); + + if (product == null) + { + return null; + } + else + { + if (line.IsRehauSku()) + { + return product.Name; + } + else + { + return $"{product.ProductSku} {product.Name}"; + } + } + } + catch + { + return $"Ошибка сервера {response.StatusCode}"; + } + } } } \ No newline at end of file