/// <summary>
        /// Reloads the feature permissions.
        /// </summary>
        /// <param name="id">The role identifier.</param>
        /// <param name="hierarchyId">The hierarchy identifier.</param>
        /// <returns>Partial View</returns>
        public async Task <ActionResult> ReloadFeaturePermissions(int id, int hierarchyId)
        {
            try
            {
                SPRoleViewModel roleVM        = new SPRoleViewModel();
                var             roleList      = new SPRoleDto();
                var             responseRoles = await Get("SPRole/GetRoleById/" + id);

                if (responseRoles.StatusCode == HttpStatusCode.OK)
                {
                    roleList = await responseRoles.Content.ReadAsAsync <SPRoleDto>();

                    roleVM          = roleMapper.ToObject(roleList);
                    Session["role"] = roleList;
                }

                var responseFeatures = await Get("Hierarchy/GetFeatureByHierarchy/" + hierarchyId);

                List <SPFeatureViewModel> features = new List <SPFeatureViewModel>();
                if (responseFeatures.StatusCode == HttpStatusCode.OK)
                {
                    var featureList = await responseFeatures.Content.ReadAsAsync <IEnumerable <SPFeatureDto> >();

                    features = featureMapper.ToObjects(featureList).ToList();
                }

                var responseCategories = await Get("SPCategory/GetAllCategories");

                List <SPCategoryViewModel> categories = new List <SPCategoryViewModel>();
                if (responseCategories.StatusCode == HttpStatusCode.OK)
                {
                    var categoryList = await responseCategories.Content.ReadAsAsync <IEnumerable <SPCategoryDto> >();

                    categories = categoryMapper.ToObjects(categoryList).ToList();
                }

                var hierarchies = await GetAllHierarchies();

                roleVM = SetSPRoleViewModel(roleVM, categories, features, hierarchies);
                List <string> checkedPermissions = new List <string>();
                checkedPermissions = SetPermissions(roleList, checkedPermissions);
                return(Json(new { Status = 1, Data = RenderRazorViewToString("_FeaturePermissionsList", roleVM), IsActive = roleVM.IsActive, checkedPermissions, SelectedHomePage = roleVM.SPMenuId }));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                return(Json(new { Status = 0, Data = "error", Message = ex.Message }));
            }
        }
        /// <summary>
        /// Sets the permissions.
        /// </summary>
        /// <param name="roleList">The i role.</param>
        /// <param name="checkedPermissions">The checked permissions.</param>
        /// <returns>return permissions</returns>
        public List <string> SetPermissions(SPRoleDto roleList, List <string> checkedPermissions)
        {
            try
            {
                foreach (var item in roleList.RolePermissions)
                {
                    if (item.ReadPermission == true)
                    {
                        checkedPermissions.Add("readcheckboxEdit_" + item.FeatureId);
                    }

                    if (item.CreatePermission == true)
                    {
                        checkedPermissions.Add("createcheckboxEdit_" + item.FeatureId);
                    }

                    if (item.UpdatePermission == true)
                    {
                        checkedPermissions.Add("updatecheckboxEdit_" + item.FeatureId);
                    }

                    if (item.DeletePermission == true)
                    {
                        checkedPermissions.Add("deletecheckboxEdit_" + item.FeatureId);
                    }

                    if (item.ApprovePermission == true)
                    {
                        checkedPermissions.Add("approvecheckboxEdit_" + item.FeatureId);
                    }

                    if (item.DeAvtivatePermission == true)
                    {
                        checkedPermissions.Add("deactivatecheckboxEdit_" + item.FeatureId);
                    }
                }

                return(checkedPermissions);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                return(null);
            }
        }