示例#1
0
        public RolePermissionResponse LoadRoleActions(int roleId, int?drugStoreId)
        {
            var result = new RolePermissionResponse()
            {
                RoleId                 = roleId,
                RoleName               = string.Empty,
                PermittedResources     = new List <ResourcePermission>(),
                NonePermittedResources = new List <ResourcePermission>()
            };
            var role = _dataFilterService.GetValidRoles().FirstOrDefault(i => i.RoleId == roleId);

            if (role == null)
            {
                return(result);
            }

            var actions      = HttpActionEnumHelper.GetAllActions();
            var rolePerRepo  = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, Med.Entity.Admin.RolePermission> >();
            var rolePermises = rolePerRepo.GetAll().Where(i => i.RoleId == roleId);

            if (drugStoreId > 0 && rolePermises.Any(i => i.DrugStoreID == drugStoreId))
            {
                rolePermises = rolePermises.Where(i => i.DrugStoreID == drugStoreId);
            }
            var permittedResources = rolePermises
                                     .Select(i => new ResourcePermission()
            {
                PermissionId = i.PermissionId,
                ResourceId   = i.ResourceId
            }).ToList();

            permittedResources.ForEach(i =>
            {
                i.ResourceName = actions[i.ResourceId].ActionName;
            });
            var permittedResourceIds  = permittedResources.Select(i => i.ResourceId).ToList();
            var nonPermittedResources = actions.Where(i => !permittedResourceIds.Contains(i.Key))
                                        .Select(i => new ResourcePermission()
            {
                PermissionId = (int)PermissionType.None,
                ResourceId   = i.Key,
                ResourceName = i.Value.ActionName
            }).ToList();

            result.RoleName               = role.RoleName;
            result.PermittedResources     = permittedResources;
            result.NonePermittedResources = nonPermittedResources;

            return(result);
        }
示例#2
0
        public bool PushRemainResourcesToDB()
        {
            var result              = true;
            var actions             = HttpActionEnumHelper.GetAllActions();
            var repository          = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, Med.Entity.Admin.Resource> >();
            var existingResources   = repository.GetAll().ToList();
            var existingResourceIds = existingResources.Select(i => i.ResourceId).ToList();
            var newActions          = actions.Where(i => !existingResourceIds.Contains(i.Key));
            var updateResources     = new List <Med.Entity.Admin.Resource>();

            existingResources.ForEach(i =>
            {
                if (actions.ContainsKey(i.ResourceId))
                {
                    var act = actions[i.ResourceId];
                    if (!i.ResourceName.Equals(act.ActionName))
                    {
                        i.ResourceName = act.ActionName;
                        updateResources.Add(i);
                    }
                }
            });
            var newResources = newActions.Select(i => new Med.Entity.Admin.Resource()
            {
                ResourceId    = i.Key,
                ResourceName  = i.Value.ActionName,
                ApplicationId = (int)AppProductionType.MedMan,
                ResourceLevel = (int)ResourceLevelType.None
            }).ToList();

            if (newResources.Any())
            {
                repository.InsertMany(newResources);
            }
            if (updateResources.Any())
            {
                repository.UpdateMany(updateResources);
            }

            return(result);
        }