예제 #1
0
        // группа пользователя из списка сотрудников (Шифр_отдела: АР, КР-МН, КР-СБ, ВК, ОВ, и т.д.)
        private static string getUserGroupFromServer(string pathToList)
        {
            string nameGroup = "";

            // Определение группы по файлу списка пользователей на сервере
            try
            {
                var epplusDll = Path.Combine(_curDllLocation, "EPPlus.dll");
                LoadDll.LoadTry(epplusDll);
                // Копирование файла списка пользователей
                string fileTemp = Path.GetTempFileName();
                File.Copy(pathToList, fileTemp, true);
                using (var xlPackage = new ExcelPackage(new FileInfo(fileTemp)))
                {
                    var worksheet = xlPackage.Workbook.Worksheets[1];
                    int numberRow = 2;
                    while (worksheet.Cells[numberRow, 2].Text.Trim() != "")
                    {
                        if (worksheet.Cells[numberRow, 2].Text.Trim().ToUpper() == Environment.UserName.ToUpper())
                        {
                            nameGroup = worksheet.Cells[numberRow, 3].Text;
                            break;
                        }
                        numberRow++;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"Ошибка определена рабочей группы по файлу '{pathToList}'.");
            }

            if (string.IsNullOrEmpty(nameGroup))
            {
                Log.Error($"Не определена рабочая группа по файлу UserGroup2.xlsx. {pathToList}");
                // проверка была ли группа сохранена ранее в реестре
                nameGroup = loadUserGroupFromRegistry();
                if (string.IsNullOrEmpty(nameGroup))
                {
                    // Определение группы по текущим папкам настроек
                    nameGroup = getCurrentGroupFromLocal();
                    if (string.IsNullOrEmpty(nameGroup))
                    {
                        Log.Error($"Не определена рабочая группа (Шифр отдела). {Environment.UserName}");
                        throw new Exception("IsNullOrEmpty(nameGroup)");
                    }
                }
            }
            else
            {
                saveUserGroupToRegistry(nameGroup);
            }
            Log.Info($"{Environment.UserName} Группа - {nameGroup}");
            return(nameGroup);
        }
예제 #2
0
        public void Initialize()
        {
            // Исключения в Initialize проглотит автокад, без выдачи сообщений. При этом сборка не будет загружена!!!.
            try
            {
                try
                {
                    PikSettings.LoadSettings();
                }
                catch { }
                // Запись в лог
                try
                {
                    Log.Info($"AutoCAD_PIK_Manager загружен. Версия {Assembly.GetExecutingAssembly().GetName().Version}. Настройки загружены из {PikSettings.CurDllLocation}");
                    Log.Info($"Путь к сетевой папке настроек - {PikSettings.ServerSettingsFolder}");
                    Log.Info($"Версия автокада - {Application.Version.ToString()}");
                    Log.Info($"Версия среды .NET Framework - {Environment.Version}");
                }
                catch { }

                // Если есть другие запущеннык автокады, то пропускаем копирование файлов с сервера, т.к. многие файлы уже заняты другим процессом автокада.
                if (!IsProcessAny())
                {
                    // Обновление настроек с сервера (удаление и копирование)
                    try
                    {
                        Update.UpdateSettings();
                        Log.Info("Настройки обновлены. " + Update.GetUpdateInfo());
                    }
                    catch (System.Exception ex)
                    {
                        try
                        {
                            Log.Error(ex, "Ошибка обновления настроек PikSettings.UpdateSettings();");
                        }
                        catch { }
                        _err += ex.Message;

                        // Попытка загрузки библиотек
                        LoadDll.LoadRefs();
                    }
                    try
                    {
                        PikSettings.LoadSettings(); // Перезагрузка настроек (могли обновиться файлы настроек на сервере)
                                                    // Замена путей к настройкам в файлах инструментальных палитр
                        ToolPaletteReplacePath.Replace();
                        Log.Info("Настройки загружены.");
                    }
                    catch (System.Exception ex)
                    {
                        try
                        {
                            Log.Error(ex, "Ошибка загрузки настроек PikSettings.LoadSettings();");
                        }
                        catch { }
                        _err += ex.Message;
                    }
                }
                try
                {
                    Profile profile = new Profile();
                    // Настройка профиля ПИК в автокаде
                    if (PikSettings.UserGroup.Contains("ГП"))
                    {
                        profile.SetProfilePIK  = false;
                        profile.SetTemplate    = false;
                        profile.SetToolPalette = false;
                        profile.SetSysVars     = PikSettings.GroupFileSettings?.SystemVariables;
                    }
                    profile.SetProfile();
                    Log.Info("Профиль настроен.");
                    //else
                    //{
                    //// Загрузка сбороки ГП
                    //string gpdll = Path.Combine(PikSettings.LocalSettingsFolder, @"Script\NET\ГП\PIK_GP_Civil.dll");
                    //LoadDll.Load(gpdll);
                    //}
                }
                catch (System.Exception ex)
                {
                    try
                    {
                        Log.Error(ex, "Ошибка настройки профиля SetProfile().");
                    }
                    catch { }
                    _err += ex.Message;
                }
            }
            catch (Settings.Exceptions.NoGroupException)
            {
                // Пользователь без группы.
                return;
            }
            catch (System.Exception ex)
            {
                try
                {
                    Log.Error(ex, "LoadSettings");
                    Log.Info($"AutoCAD_PIK_Manager загружен с ошибками. Версия {Assembly.GetExecutingAssembly().GetName().Version}. Настройки не загружены из {PikSettings.CurDllLocation}");
                    Log.Info($"Версия автокада - {Application.Version.ToString()}");
                    Log.Info($"Путь к сетевой папке настроек - {PikSettings.ServerSettingsFolder}");
                }
                catch { }
                _err += ex.Message;
            }

            // Загрузка библиотек
            LoadDll.LoadTry(Path.Combine(PikSettings.CurDllLocation, "AcadLib.dll"));

            //// Конекторы к базе MDM
            //LoadDll.LoadTry(Path.GetFullPath(Path.Combine(PikSettings.CurDllLocation, @"..\Script\NET\MDM_Connector.dll")));
            //LoadDll.LoadTry(Path.GetFullPath(Path.Combine(PikSettings.CurDllLocation, @"..\Script\NET\MDBCToLISP.dll")));
        }