private bool IsContains <T>(IList <T> acl, AccessControlItem item)
     where T : AccessControlItem
 {
     foreach (var t in acl)
     {
         if (t.Equals(item))
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #2
0
        private void RefreshACIGrid(AccessControlItem selectedItem)
        {
            bool foundSelection = false;

            try
            {
                #region General setup
                Application.DoEvents();
                dgvACI.SuspendLayout();
                #endregion

                #region Datasource/Action handling
                List <AccessControlItemHelper> dataSourceList = null;

                var selectedUser     = GetSelectedUser();
                var selectedCategory = GetSelectedACICategory();

                if (selectedUser != null && selectedCategory != null)
                {
                    dataSourceList = (from i in ACIItems
                                      join l in UserACIList.FindAll(ac => ac.UserId == selectedUser.Id) on i.Id equals l.AccessControlListId into il
                                      join x in GroupACIList.FindAll(ac => UserGroupList.Find(x => x.GroupId == ac.GroupId && x.UserId == selectedUser.Id) != null) on i.Id equals x.AccessControlListId into ix
                                      where i.Category == selectedCategory.Category
                                      select new AccessControlItemHelper(i.Id, i.Category, i.Action, il.Any(), ix.Any())).ToList();
                }
                #endregion

                #region Datagrid filling and generation
                if (dataSourceList?.Count > 0)
                {
                    dgvACI.DataSource = new SortableBindingList <AccessControlItemHelper>(dataSourceList);

                    if (dgvACI.SortedColumn == null)
                    {
                        dgvACI.Sort(dgvACI.Columns[1], ListSortDirection.Ascending);
                    }

                    for (int i = 0; i < dgvACI.Rows.Count; i++)
                    {
                        var dataBoundItem = (AccessControlItem)dgvACI.Rows[i].DataBoundItem;

                        if ((selectedItem != null) && (dataBoundItem.Id == selectedItem.Id))
                        {
                            dgvACI.Rows[i].Selected = true;
                            foundSelection          = true;
                        }
                    }
                }
                else
                {
                    dgvACI.DataSource = null;
                }
                #endregion
            }
            catch (Exception ex)
            {
                Trace.WriteError("()", Trace.GetMethodName(), CLASSNAME, ex);
                DisplayError(Trace.GetMethodName(), TranslationKey.CommonMessage_InternalError, ex);
            }
            finally
            {
                if (selectedItem == null || !foundSelection)
                {
                    dgvACI.ClearSelection();
                }

                dgvACI.ResumeLayout();
            }
        }
 public PermissionItm(AccessControlItem acItem)
     : this(acItem.TrusteeId, acItem.AccessRight)
 {
 }