Exemplo n.º 1
0
        /// <summary>
        /// Инициализировать список прав на наборы представлений и входящие в них представления
        /// </summary>
        private void InitViewSetRightList(List <ViewSettings.ViewSet> viewSetList)
        {
            viewSetRightList = new List <ViewSetRight>();

            if (viewSetList != null)
            {
                foreach (ViewSettings.ViewSet viewSet in viewSetList)
                {
                    ViewSetRight viewSetRight = new ViewSetRight(viewSet);
                    viewSetRight.Right = GetRight(viewSet.Name);
                    viewSetRightList.Add(viewSetRight);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Инициализировать права на представления из набора
        /// </summary>
        private void InitViewRightArr(ViewSetRight viewSetRight)
        {
            ViewSettings.ViewSet viewSet = viewSetRight.ViewSet;

            if (viewSet != null && viewSet.Count > 0)
            {
                bool             viewSetViewRight = viewSetRight.Right.ViewRight;
                bool             viewSetCtrlRight = viewSetRight.Right.CtrlRight;
                int              viewCnt          = viewSet.Count;
                MainData.Right[] viewRightArr     = new MainData.Right[viewCnt];

                for (int i = 0; i < viewCnt; i++)
                {
                    MainData.Right right = GetRight(Path.GetFileName(viewSet[i].FileName));
                    viewRightArr[i].ViewRight = right.ViewRight && viewSetViewRight;
                    viewRightArr[i].CtrlRight = right.CtrlRight && viewSetCtrlRight;
                }

                viewSetRight.ViewRightArr = viewRightArr;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Получить права пользователя на представление
        /// </summary>
        public MainData.Right GetViewRight(int viewSetIndex, int viewIndex)
        {
            MainData.Right right = MainData.Right.NoRights;

            if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
            {
                ViewSetRight viewSetRight = viewSetRightList[viewSetIndex];

                if (viewSetRight.ViewRightArr == null)
                {
                    InitViewRightArr(viewSetRight);
                }

                MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                if (viewRightArr != null && 0 <= viewIndex && viewIndex < viewRightArr.Length)
                {
                    right = viewRightArr[viewIndex];
                }
            }

            return(right);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Инициализировать права на представления из набора
        /// </summary>
        private void InitViewRightArr(ViewSetRight viewSetRight)
        {
            ViewSettings.ViewSet viewSet = viewSetRight.ViewSet;

            if (viewSet != null && viewSet.Count > 0)
            {
                bool viewSetViewRight = viewSetRight.Right.ViewRight;
                bool viewSetCtrlRight = viewSetRight.Right.CtrlRight;
                int viewCnt = viewSet.Count;
                MainData.Right[] viewRightArr = new MainData.Right[viewCnt];

                for (int i = 0; i < viewCnt; i++)
                {
                    MainData.Right right = GetRight(Path.GetFileName(viewSet[i].FileName));
                    viewRightArr[i].ViewRight = right.ViewRight && viewSetViewRight;
                    viewRightArr[i].CtrlRight = right.CtrlRight && viewSetCtrlRight;
                }

                viewSetRight.ViewRightArr = viewRightArr;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Инициализировать список прав на наборы представлений и входящие в них представления
        /// </summary>
        private void InitViewSetRightList(List<ViewSettings.ViewSet> viewSetList)
        {
            viewSetRightList = new List<ViewSetRight>();

            if (viewSetList != null)
            {
                foreach (ViewSettings.ViewSet viewSet in viewSetList)
                {
                    ViewSetRight viewSetRight = new ViewSetRight(viewSet);
                    viewSetRight.Right = GetRight(viewSet.Name);
                    viewSetRightList.Add(viewSetRight);
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex,
                            out BaseView view, out MainData.Right right)
        {
            bool result = false;

            view  = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight         viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet      = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                    {
                        InitViewRightArr(viewSetRight);
                    }

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        // попытка получить стандартный тип представления, если тип не задан
                        if (viewType == null)
                        {
                            viewType = viewInfo.GetViewType();
                        }

                        if (viewType == null)
                        {
                            // возврат представления из кэша, если тип не задан
                            view = viewInfo.ViewCash;
                            return(view != null);
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                // возврат представления из кэша,
                                // если в кэше загружено представление и его тип совпадает с заданным
                                view   = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                // создание и загрузка нового представления
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                {
                                    view.Path = viewInfo.FileName;
                                }

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result            = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " :
                                         "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex,
                            out BaseView view, out MainData.Right right)
        {
            bool result = false;

            view  = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight         viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet      = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                    {
                        InitViewRightArr(viewSetRight);
                    }

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        if (viewType == null)
                        {
                            view = viewInfo.ViewCash;
                            return(view != null);
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                view   = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                {
                                    view.ItfObjName = Path.GetFileName(viewInfo.FileName);
                                }

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result            = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " :
                                         "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return(result);
        }