From ce5597d042062c820288c63b4e571ee77ac23ab0 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Wed, 22 Dec 2021 17:07:37 +0300 Subject: RegistryUtil and some fixes --- Source/AddIn/AddIn.cs | 1 + Source/AddIn/FileDialog.cs | 24 +++++++++++++++++ Source/AddIn/RegistryUtil.cs | 57 ++++++++++++++++++++++++++------------- Source/Assistant/ParseUtil.cs | 45 ++++++++++++------------------- Source/Assistant/SkuExtension.cs | 12 --------- Source/Assistant/SkuExtensions.cs | 12 +++++++++ Source/DataExport/Exporter.cs | 12 +++++---- Source/Ribbon/RibbonController.cs | 7 +++-- Source/Settings/SettingsForm.cs | 7 ----- 9 files changed, 102 insertions(+), 75 deletions(-) create mode 100644 Source/AddIn/FileDialog.cs delete mode 100644 Source/Assistant/SkuExtension.cs create mode 100644 Source/Assistant/SkuExtensions.cs (limited to 'Source') 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 { - public static string PriceListPath + private static string _priceListPath; + private static int? _storeResponseOrder; + private static RegistryKey _RootKey { get; set; } + + public static void Initialize() { - get => (string)_RootKey.GetValue("PriceListPath"); + _RootKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\REHAU\SkuAssist"); + _priceListPath = _RootKey.GetValue("PriceListPath") as string; + _storeResponseOrder = _RootKey.GetValue("StoreResponseOrder") as int?; } - public static ResponseOrder StoreResponseOrder + public static bool IsPriceListPathEmpty() { - get => (ResponseOrder)_RootKey.GetValue("StoreResponseOrder"); + return string.IsNullOrEmpty(_priceListPath); } - private static RegistryKey _RootKey + public static string PriceListPath { get { - return _OpenRootKey() ?? _CreateRootKey(); - } - } + if (IsPriceListPathEmpty() || !File.Exists(_priceListPath)) + { + string fileName = FileDialog.GetFilePath(); + _priceListPath = fileName; + _RootKey.SetValue("PriceListPath", fileName); + return _priceListPath; + } - private static RegistryKey _OpenRootKey() - { - return Registry.CurrentUser - .OpenSubKey(@"SOFTWARE\REHAU\SkuAssist"); + else + { + return _priceListPath; + } + } } - private static RegistryKey _CreateRootKey() + public static ResponseOrder StoreResponseOrder { - RegistryKey key = Registry.CurrentUser - .CreateSubKey(@"SOFTWARE\REHAU\SkuAssist"); - - key.SetValue("PriceListPath", @"D:\Dropbox\Рабочее\Таблица заказов ИС EAE_2021.xlsm"); - key.SetValue("StoreResponseOrder", 0); + get + { + if (_storeResponseOrder == null) + { + _RootKey.SetValue("StoreResponseOrder", (int)ResponseOrder.Default); + _storeResponseOrder = (int)ResponseOrder.Default; + return (ResponseOrder)_storeResponseOrder.Value; + } - return key; + else + { + return (ResponseOrder)_storeResponseOrder.Value; + } + } } } } 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(); + if (!json.Contains("impressions")) + return null; - return product; - } + StoreResponce storeResponse = JsonConvert.DeserializeObject(json); + IProduct product = storeResponse + .Ecommerce + .Impressions + .Where(p => p.Id.IsRehauSku()) + .FirstOrDefault(); - catch (NullReferenceException e) - { - MessageBox.Show(e.Message, "Ошибка получения данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return null; - } + return product; } } } \ No newline at end of file diff --git a/Source/Assistant/SkuExtension.cs b/Source/Assistant/SkuExtension.cs deleted file mode 100644 index 51aaf6c..0000000 --- a/Source/Assistant/SkuExtension.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Text.RegularExpressions; - -namespace RehauSku.Assistant -{ - static class SkuExtension - { - public static bool IsRehauSku(this string line) - { - return Regex.IsMatch(line, @"^[1]\d{6}[1]\d{3}$"); - } - } -} \ No newline at end of file diff --git a/Source/Assistant/SkuExtensions.cs b/Source/Assistant/SkuExtensions.cs new file mode 100644 index 0000000..e39807b --- /dev/null +++ b/Source/Assistant/SkuExtensions.cs @@ -0,0 +1,12 @@ +using System.Text.RegularExpressions; + +namespace RehauSku.Assistant +{ + static class SkuExtensions + { + public static bool IsRehauSku(this string line) + { + return Regex.IsMatch(line, @"^[1]\d{6}[1]\d{3}$"); + } + } +} \ No newline at end of file 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) -- cgit v1.2.3