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); }
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); }