예제 #1
0
        //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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }