public override void Execute() { base.Execute(); bool hasPrivilegeForManagingQueues = (base.HttpContext.Session[SessionHelper.PrivilegeForManagingQueues] is bool && ( bool )base.HttpContext.Session[SessionHelper.PrivilegeForManagingQueues]); bool hasPrivilegeForManagingAppraisalQueues = (base.HttpContext.Session[SessionHelper.DisplayAppraisalQueues] is bool && ( bool )base.HttpContext.Session[SessionHelper.DisplayAppraisalQueues]); bool hasPrivilegeForViewQueuesFilter = (base.HttpContext.Session[SessionHelper.ViewQueuesFilter] is bool && ( bool )base.HttpContext.Session[SessionHelper.ViewQueuesFilter]); FilterViewModel userFilterViewModel = new FilterViewModel(); userFilterViewModel.CompanyId = Guid.Empty; userFilterViewModel.ChannelId = 0; userFilterViewModel.DivisionId = 0; userFilterViewModel.BranchId = Guid.Empty; userFilterViewModel.UserId = 0; userFilterViewModel.Users.Clear(); userFilterViewModel.Users.Add(base.ViewAllItem); /* Command processing */ if (base.User.Roles.Any(r => r.RoleName.Equals(RoleName.Administrator)) || hasPrivilegeForManagingAppraisalQueues || hasPrivilegeForViewQueuesFilter) { if (User.Roles.Any(r => r.RoleName.Equals(RoleName.Administrator)) || User.Roles.Any(r => r.RoleName.Equals(RoleName.Hvm))) { HttpContext.Session[SessionHelper.UserAccountIds] = null; } // start filling user filters by loading companies LoadCompanies(userFilterViewModel); } else if (base.User.Roles.Any(r => r.RoleName.Equals(RoleName.BranchManager)) || base.User.Roles.Any(r => r.RoleName.Equals(RoleName.TeamLeader)) || hasPrivilegeForManagingQueues) { // load only related users LoadRelatedUsers(userFilterViewModel, base.User); } else if (base.User.Roles.Any(r => r.RoleName.Equals(RoleName.LoanOfficer)) || base.User.Roles.Any(r => r.RoleName.Equals(RoleName.Concierge))) { AddCurrentUserToFilterModel(userFilterViewModel, base.User); } else if (base.User.Roles.Any(r => r.RoleName.Equals(RoleName.LoanOfficerAssistant))) { AddRelatedLoanOfficers(userFilterViewModel, base.User); } userFilterViewModel.Users = userFilterViewModel.Users.OrderBy(u => u.Text).ToList(); base.ViewName = "_userfilter"; base.ViewData = userFilterViewModel; /* Persist new state */ base.HttpContext.Session["FilterViewModel"] = userFilterViewModel.ToXml(); }