/// <summary>
        /// Method to get the roles that security permissions can be possibly assigned to
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SecurityAccessMaintenanceGetRolesResponse GetRoles(SecurityAccessMaintenanceGetRolesRequest request)
        {
            var allRoles = _repository.GetAll <SecurityRole>()
                           .Where(p => p.Active == true)
                           .OrderBy(p => p.Name)
                           .ToList();


            var selectedRoles = new List <SecurityRole>();

            if (request != null && request.SelectedRoleIds != null)
            {
                selectedRoles = allRoles.Where(p => request.SelectedRoleIds.Contains(p.SecurityRoleId))
                                .OrderBy(p => p.Name)
                                .ToList();
            }

            //
            //Get all the roles not yet selected
            //
            var availableRoles = allRoles.Except(selectedRoles).ToList();

            return(new SecurityAccessMaintenanceGetRolesResponse()
            {
                AvailableRoles = availableRoles,
                SelectedRoles = selectedRoles,
                IsSuccessful = true
            });
        }
        /// <summary>
        /// Populate the role selection drop down lists for picking the roles to view permissions for
        /// </summary>
        /// <param name="model"></param>
        protected void PopulateDropDownLists(GetEffectivePermissionsForSecurableViewModel model)
        {
            var request = new SecurityAccessMaintenanceGetRolesRequest()
            {
                SelectedRoleIds = model.SelectedRoleIds
            };
            var getRolesResponse = _service.GetRoles(request);

            model.AvailableRoles = getRolesResponse.AvailableRoles;
            model.SelectedRoles  = getRolesResponse.SelectedRoles;
        }