Esempio n. 1
0
        private void BtnDeSelectAllClick(object sender, EventArgs e)
        {
            var triggerButton = (ButtonX)sender;

            Trace.WriteInformation("({0})", Trace.GetMethodName(), CLASSNAME, triggerButton.Name);

            EnableDisableButtons(true);
            if (!triggerButton.Enabled)
            {
                Trace.WriteInformation("Action was not allowed. (Button='{0}')", Trace.GetMethodName(), CLASSNAME, triggerButton.Name);
                DisplayWarning(TranslationKey.CommonMessage_JustModified);
                return;
            }

            try
            {
                //if (ACIGrid1.DataSourceChanging || _refreshingGroups || _refreshingCategories
                //		|| !CurrentUser.HasPermission(ACICategory, ACIOptions.Modify))
                if (_refreshingGroups || _refreshingCategories ||
                    !CurrentUser.HasPermission(ACICategory, ACIOptions.MODIFY))
                {
                    return;
                }

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

                if (selectedUser != null && selectedACICategory != null)
                {
                    var aciList = (from l in UserACIList.FindAll(ac => ac.UserId == selectedUser.Id)
                                   join i in ACIItems.FindAll(aci => aci.Category == selectedACICategory.Category) on l.AccessControlListId equals i.Id into li
                                   where li.Any()
                                   select l);

                    foreach (UserAccessControlList item in aciList)
                    {
                        new UserAccessControlLists().Delete(item);
                    }

                    _userACIList = null;
                    RefreshACICategoriesGrid(GetSelectedACICategory());
                }
            }
            catch (Exception ex)
            {
                Trace.WriteError("()", Trace.GetMethodName(), CLASSNAME, ex);
                DisplayError(Trace.GetMethodName(), TranslationKey.CommonMessage_InternalError, ex);
            }
        }
Esempio n. 2
0
        private void RefreshACICategoriesGrid(AccessControlItemCategory selectedItem)
        {
            bool foundSelection = false;

            try
            {
                #region General setup
                Application.DoEvents();
                dgvACICategories.SuspendLayout();
                _refreshingCategories = true;
                #endregion

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

                var selectedUser = GetSelectedUser();
                if (selectedUser != null)
                {
                    dataSourceList = (from c in
                                      (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
                                       select new { i.Category, GrantedACI = il.Count(), GrantedGroupACI = ix.Count() })
                                      group c by c.Category
                                      into g
                                      select new AccessControlItemCategory(g.Key,
                                                                           g.Sum(c => c.GrantedACI) == 0 ? -1 : g.Sum(c => c.GrantedACI) == g.Count(c => c.Category != null) ? 1 : 0,
                                                                           g.Count(c => c.Category != null),
                                                                           g.Sum(c => c.GrantedACI),
                                                                           g.Sum(c => c.GrantedGroupACI)
                                                                           )).ToList();
                }
                else
                {
                    dataSourceList = (from c in ACIItems
                                      group c by c.Category
                                      into g
                                      select new AccessControlItemCategory(g.Key, -1, g.Count(c => c.Category != null), 0, 0)).ToList();
                }
                #endregion

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

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

                    for (int i = 0; i < dgvACICategories.Rows.Count; i++)
                    {
                        var dataBoundItem = (AccessControlItemCategory)dgvACICategories.Rows[i].DataBoundItem;
                        if ((selectedItem != null) && (dataBoundItem.Category == selectedItem.Category))
                        {
                            dgvACICategories.Rows[i].Selected = true;
                            foundSelection = true;
                            break;
                        }
                    }
                }
                else
                {
                    dgvACICategories.DataSource = null;
                }
                #endregion
            }
            catch (Exception ex)
            {
                Trace.WriteError("()", Trace.GetMethodName(), CLASSNAME, ex);
                DisplayError(Trace.GetMethodName(), TranslationKey.CommonMessage_InternalError, ex);
            }
            finally
            {
                if (selectedItem == null || !foundSelection)
                {
                    dgvACICategories.ClearSelection();
                }

                dgvACICategories.ResumeLayout();
                _refreshingCategories = false;

                RefreshACIGrid(GetSelectedACI());
            }
        }
Esempio n. 3
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();
            }
        }