diff --git a/RehauSku.Assist.csproj b/RehauSku.Assist.csproj index 1497201..411a8b2 100644 --- a/RehauSku.Assist.csproj +++ b/RehauSku.Assist.csproj @@ -100,11 +100,12 @@ + - + diff --git a/RehauSku.Assist.sln b/RehauSku.Assist.sln index e37e8b4..1fe96c1 100644 --- a/RehauSku.Assist.sln +++ b/RehauSku.Assist.sln @@ -1,12 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31829.152 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32014.148 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RehauSku.Assist", "RehauSku.Assist.csproj", "{18A2FF67-0E46-4A86-B872-29F2B3F23ADF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RehauSku.Testing", "..\RehauSku.Testing\RehauSku.Testing.csproj", "{3D257D07-0D29-4B5E-82E4-B341769E1B3F}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -17,10 +15,6 @@ Global {18A2FF67-0E46-4A86-B872-29F2B3F23ADF}.Debug|Any CPU.Build.0 = Debug|Any CPU {18A2FF67-0E46-4A86-B872-29F2B3F23ADF}.Release|Any CPU.ActiveCfg = Release|Any CPU {18A2FF67-0E46-4A86-B872-29F2B3F23ADF}.Release|Any CPU.Build.0 = Release|Any CPU - {3D257D07-0D29-4B5E-82E4-B341769E1B3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D257D07-0D29-4B5E-82E4-B341769E1B3F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D257D07-0D29-4B5E-82E4-B341769E1B3F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D257D07-0D29-4B5E-82E4-B341769E1B3F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Source/AddIn/AddIn.cs b/Source/AddIn/AddIn.cs index 4a26f55..08b6dcf 100644 --- a/Source/AddIn/AddIn.cs +++ b/Source/AddIn/AddIn.cs @@ -22,6 +22,7 @@ namespace RehauSku { RegisterFunctions(); IntelliSenseServer.Install(); + RegistryUtil.Initialize(); } public void AutoClose() diff --git a/Source/AddIn/FileDialog.cs b/Source/AddIn/FileDialog.cs new file mode 100644 index 0000000..a7e2144 --- /dev/null +++ b/Source/AddIn/FileDialog.cs @@ -0,0 +1,24 @@ +using System.Windows.Forms; + +namespace RehauSku +{ + static class FileDialog + { + public static string GetFilePath() + { + string filePath = string.Empty; + + using (OpenFileDialog dialog = new OpenFileDialog()) + { + dialog.Filter = "Все файлы (*.*)|*.*"; + + if (dialog.ShowDialog() == DialogResult.OK) + { + filePath = dialog.FileName; + } + } + + return filePath; + } + } +} diff --git a/Source/AddIn/RegistryUtil.cs b/Source/AddIn/RegistryUtil.cs index 6ab7682..19f48b8 100644 --- a/Source/AddIn/RegistryUtil.cs +++ b/Source/AddIn/RegistryUtil.cs @@ -1,42 +1,61 @@ using Microsoft.Win32; +using System.IO; namespace RehauSku { static class RegistryUtil { + private static string _priceListPath; + private static int? _storeResponseOrder; + private static RegistryKey _RootKey { get; set; } + + public static void Initialize() + { + _RootKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\REHAU\SkuAssist"); + _priceListPath = _RootKey.GetValue("PriceListPath") as string; + _storeResponseOrder = _RootKey.GetValue("StoreResponseOrder") as int?; + } + + public static bool IsPriceListPathEmpty() + { + return string.IsNullOrEmpty(_priceListPath); + } + public static string PriceListPath { - get => (string)_RootKey.GetValue("PriceListPath"); + get + { + if (IsPriceListPathEmpty() || !File.Exists(_priceListPath)) + { + string fileName = FileDialog.GetFilePath(); + _priceListPath = fileName; + _RootKey.SetValue("PriceListPath", fileName); + return _priceListPath; + } + + else + { + return _priceListPath; + } + } } public static ResponseOrder StoreResponseOrder - { - get => (ResponseOrder)_RootKey.GetValue("StoreResponseOrder"); - } - - private static RegistryKey _RootKey { get { - return _OpenRootKey() ?? _CreateRootKey(); + if (_storeResponseOrder == null) + { + _RootKey.SetValue("StoreResponseOrder", (int)ResponseOrder.Default); + _storeResponseOrder = (int)ResponseOrder.Default; + return (ResponseOrder)_storeResponseOrder.Value; + } + + else + { + return (ResponseOrder)_storeResponseOrder.Value; + } } } - - private static RegistryKey _OpenRootKey() - { - return Registry.CurrentUser - .OpenSubKey(@"SOFTWARE\REHAU\SkuAssist"); - } - - private static RegistryKey _CreateRootKey() - { - RegistryKey key = Registry.CurrentUser - .CreateSubKey(@"SOFTWARE\REHAU\SkuAssist"); - - key.SetValue("PriceListPath", @"D:\Dropbox\Рабочее\Таблица заказов ИС EAE_2021.xlsm"); - key.SetValue("StoreResponseOrder", 0); - - return key; - } } } diff --git a/Source/Assistant/ParseUtil.cs b/Source/Assistant/ParseUtil.cs index 571c6b0..a93c658 100644 --- a/Source/Assistant/ParseUtil.cs +++ b/Source/Assistant/ParseUtil.cs @@ -1,10 +1,8 @@ using AngleSharp; using AngleSharp.Dom; using Newtonsoft.Json; -using System; using System.Linq; using System.Threading.Tasks; -using System.Windows.Forms; namespace RehauSku.Assistant { @@ -20,36 +18,27 @@ namespace RehauSku.Assistant public static IProduct GetProduct(IDocument document) { - try - { - string script = document - .Scripts - .Where(s => s.InnerHtml.Contains("dataLayer")) - .FirstOrDefault() - .InnerHtml; + string script = document + .Scripts + .Where(s => s.InnerHtml.Contains("dataLayer")) + .FirstOrDefault() + .InnerHtml; - string json = script - .Substring(script.IndexOf("push(") + 5) - .TrimEnd(new[] { ')', ';', '\n', ' ' }); + string json = script + .Substring(script.IndexOf("push(") + 5) + .TrimEnd(new[] { ')', ';', '\n', ' ' }); - if (!json.Contains("impressions")) - return null; - - StoreResponce storeResponse = JsonConvert.DeserializeObject(json); - IProduct product = storeResponse - .Ecommerce - .Impressions - .Where(p => p.Id.IsRehauSku()) - .FirstOrDefault(); - - return product; - } - - catch (NullReferenceException e) - { - MessageBox.Show(e.Message, "Ошибка получения данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + if (!json.Contains("impressions")) return null; - } + + StoreResponce storeResponse = JsonConvert.DeserializeObject(json); + IProduct product = storeResponse + .Ecommerce + .Impressions + .Where(p => p.Id.IsRehauSku()) + .FirstOrDefault(); + + return product; } } } \ No newline at end of file diff --git a/Source/Assistant/SkuExtension.cs b/Source/Assistant/SkuExtensions.cs similarity index 87% rename from Source/Assistant/SkuExtension.cs rename to Source/Assistant/SkuExtensions.cs index 51aaf6c..e39807b 100644 --- a/Source/Assistant/SkuExtension.cs +++ b/Source/Assistant/SkuExtensions.cs @@ -2,7 +2,7 @@ namespace RehauSku.Assistant { - static class SkuExtension + static class SkuExtensions { public static bool IsRehauSku(this string line) { diff --git a/Source/DataExport/Exporter.cs b/Source/DataExport/Exporter.cs index 483dd0e..95b3186 100644 --- a/Source/DataExport/Exporter.cs +++ b/Source/DataExport/Exporter.cs @@ -34,7 +34,7 @@ namespace RehauSku.DataExport SelectedCells.GetLength(1) == 2; } - public void FillSkuAmountDict() + private void FillSkuAmountDict() { SkuAmount = new Dictionary(); int rowsCount = SelectedCells.GetLength(0); @@ -73,20 +73,22 @@ namespace RehauSku.DataExport } } - public void FillPriceList() + public void FillNewPriceList() { + FillSkuAmountDict(); string exportFile = _GetExportFullPath(); File.Copy(RegistryUtil.PriceListPath, exportFile, true); Workbook wb = xlApp.Workbooks.Open(exportFile); Worksheet ws = wb.ActiveSheet; - Range amountCell = ws.Cells.Find("Кол-во"); + int amountColumn = ws.Cells.Find("Кол-во").Column; + int skuColumn = ws.Cells.Find("Актуальный материал").Column; foreach (KeyValuePair kvp in SkuAmount) { - Range cell = ws.Cells.Find(kvp.Key); - ws.Cells[cell.Row, amountCell.Column].Value = kvp.Value; + Range cell = ws.Columns[skuColumn].Find(kvp.Key); + ws.Cells[cell.Row, amountColumn].Value = kvp.Value; } ws.Cells.AutoFilter(7, "<>"); diff --git a/Source/Ribbon/RibbonController.cs b/Source/Ribbon/RibbonController.cs index 7e15d09..cfe4532 100644 --- a/Source/Ribbon/RibbonController.cs +++ b/Source/Ribbon/RibbonController.cs @@ -42,16 +42,15 @@ namespace RehauSku.Ribbon else { - dw.FillSkuAmountDict(); - dw.FillPriceList(); + dw.FillNewPriceList(); } } } - public void OnSettingsPressed(IRibbonControl control) { - Application.Run(new Settings.SettingsForm()); + Form settingsForm = new Settings.SettingsForm(); + settingsForm.Show(); } } } diff --git a/Source/Settings/SettingsForm.cs b/Source/Settings/SettingsForm.cs index b87ac5c..59edf22 100644 --- a/Source/Settings/SettingsForm.cs +++ b/Source/Settings/SettingsForm.cs @@ -15,13 +15,6 @@ namespace RehauSku.Settings public SettingsForm() { InitializeComponent(); - - FormClosing += (sender, eventArgs) => - { - MessageBox.Show("ok"); - }; - - } private void button1_Click(object sender, EventArgs e)