//public static bool RoleIsNSS //{ // get // { // return Role == ID_ROLES.NSS; // } //} //public static bool RoleIsOperationPersonal //{ // get // { // return (Role == ID_ROLES.NSS) || (Role == ID_ROLES.MAJOR_MASHINIST) || (Role == ID_ROLES.MASHINIST); // } //} public static void SetAllowed(ConnectionSettings connSett, ID_ALLOWED id, string value) { int iListenerId = -1; iListenerId = DbSources.Sources().Register(connSett, false, string.Format(@"{0}==HStatisticUsers::SetAllowed(id={1}, value={2})", connSett.name, id.ToString(), value)); HUsers.SetAllowed(iListenerId, (int)id, value); DbSources.Sources().UnRegister(iListenerId); }
/// <summary> /// Получить строку с идентификаторами плюгинов, разрешенных к использованию для пользователя /// </summary> /// <param name="dbConn">Объект соединения с БД</param> /// <param name="iRes">Результат выполнения функции</param> /// <returns>Строка с идентификаторами (разделитель - запятая)</returns> public static string GetIdIsUseFPanels(ref DbConnection dbConn, out int iRes) { string strRes = string.Empty; iRes = -1; DataTable tableRoles = null; HUsers.GetRoles(ref dbConn, @"(ID_EXT=" + Role + @" AND IS_ROLE=1)" + @" OR (ID_EXT=" + Id + @" AND IS_ROLE=0)" , string.Empty, out tableRoles, out iRes); int i = -1 , indxRow = -1 , idFPanel = -1; //Сформировать список идентификаторов плюгинов DataRow[] rowsIsUse; List <int> listIdParsedFPanel = new List <int> (); if (!(tableRoles.Columns.IndexOf(@"ID_FPANEL") < 0)) { //Цикл по строкам - идентификатрам/разрешениям использовать плюгин for (i = 0; i < tableRoles.Rows.Count; i++) { idFPanel = (Int16)tableRoles.Rows[i][@"ID_FPANEL"]; if (listIdParsedFPanel.IndexOf(idFPanel) < 0) { listIdParsedFPanel.Add(idFPanel); //??? возможна повторная обработка indxRow = -1; rowsIsUse = tableRoles.Select(@"ID_FPANEL=" + idFPanel); //Проверить разрешение использовать плюгин switch (rowsIsUse.Length) { case 0: break; case 1: // в БД указано разрешение только для группы (пользователя) indxRow = 0; break; case 2: // в БД указаны значения как для группы так для пользователя foreach (DataRow r in rowsIsUse) { indxRow++; if ((Byte)r[@"IS_ROLE"] == 0) { // приоритет индивидуальной настройки break; } else { ; } } break; default: throw new Exception(@"HTepUsers::GetIdIsUsePlugins (ID_PLUGIN=" + tableRoles.Rows[i][@"ID_PLUGIN"]); } if (!(indxRow < 0)) { if ((Byte)rowsIsUse[indxRow][@"IsUse"] == 1) { strRes += idFPanel + @","; } else { ; } } else { ; } } else { ; // плюгИн уже обработан } } //Удалить крайний символ if (strRes.Length > 0) { strRes = strRes.Substring(0, strRes.Length - 1); } else { ; } } else {// не найдено необходимое поле в таблице для формирования списка вккладок для пользователя iRes = -1; Logging.Logg().Error(@"HTepUsers::GetIdIsUseFPanels () - не найдено необходимое поле [ID_FPANEL] в таблице [" + tableRoles.TableName + @"] для формирования списка вккладок для пользователя" , Logging.INDEX_MESSAGE.NOT_SET); } return(strRes); }
/// <summary> /// Метод для получения из БД списка активных вкладок для выбранного пользователя /// </summary> /// <param name="role">Идентификатор роли(группы) пользователя</param> /// <param name="user">Идентификатор пользователя для выборки</param> protected override IEnumerable <int> getTabActived(int role, int user) { List <int> listRes = new List <int> (); int iRes = -1; string tabs; string[] idTabs; delegateActionReport("Получение активных вкладок пользователя"); #region Фомирование и выполнение запроса для получения списка открытых вкладок у пользователя tabs = HUsers.GetAllowed(DbTSQLConfigDatabase.DbConfig().ListenerId , role , user , (int)HStatisticUsers.ID_ALLOWED.PROFILE_SETTINGS_CHANGEMODE); //tabs = HUsers.GetAllowed((int)HStatisticUsers.ID_ALLOWED.PROFILE_VIEW_ADDINGTABS); if (Equals(user, null) == false) { if (tabs.Length > 0) { //создание массива с ID вкладок idTabs = tabs.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < idTabs.Length; i++) { if (IsPunctuationContains(idTabs[i]) == true) { //разбор в случае составного идентификатора string[] count; count = idTabs[i].Split('='); //добавление идентификатора в список listRes.Add(Convert.ToInt32(count[0])); } else //фильтрация пустых идентификаторов if (string.IsNullOrEmpty(idTabs[i].Trim()) == false) { if (!(IsNumberContains(idTabs[i]) < 0)) { //добавление идентификатора в список listRes.Add(Convert.ToInt32(idTabs[i])); } else { ; } } else { ; } } } else { // нет записей в БД с информацией о вкладках, автоматически загружаемых при запуске для пользователя ; } } else { // идентификатор пользователя не указан ; } #endregion delegateReportClear(true); return(listRes); }