private List <RoleDTO> GetRoles(int userPk)
        {
            var roleUserMappings        = mappingUserRoleQuery.GetByUserPK(userPk);
            var roleGroups              = new List <RoleGroupDTO>();
            var mappingRoleToRoleGroups = new List <MappingRoleToRoleGroupDTO>();
            var roles = new List <RoleDTO>();

            foreach (var mapping in roleUserMappings)
            {
                var roleGroup = roleGroupQuery.GetByPrimaryKey((int)mapping.RoleGroup_PK);
                roleGroups.Add(roleGroup);
            }

            foreach (var roleGroup in roleGroups)
            {
                var mappingRoleToRoleGroupRecords = mappingRoleToRoleGroupQuery.GetByRoleGroupPK(roleGroup.RoleGroup_PK);
                foreach (var mappingRoleToRoleGroup in mappingRoleToRoleGroupRecords)
                {
                    mappingRoleToRoleGroups.Add(mappingRoleToRoleGroup);
                }
            }

            foreach (var mappingRoleToRoleGroup in mappingRoleToRoleGroups)
            {
                var role = roleQuery.GetByPrimaryKey((int)mappingRoleToRoleGroup.Role_PK);
                roles.Add(role);
            }

            return(roles);
        }
Beispiel #2
0
        public List <RoleDTO> userGetRoles()
        {
            var roleToRoleGroupQuery = new MappingRoleToRoleGroupQuery(this.Db);
            var roleQuery            = new RoleQuery(this.Db);
            var roles = new List <RoleDTO>();
            var mappingUserToRoleGroups = GetMappingUserToRoleGroups();

            foreach (var mappingUserToRoleGroup in mappingUserToRoleGroups)
            {
                var roleGroupPk             = (int)mappingUserToRoleGroup.RoleGroup_PK;
                var mappingRoleToRoleGroups = roleToRoleGroupQuery.GetByRoleGroupPK(roleGroupPk).ToList();

                var rolePKs = mappingRoleToRoleGroups.Select(x => x.Role_PK);
                roles.AddRange(roleQuery.GetQuery().Where(x => rolePKs.Contains(x.Role_PK)).ToList());
            }
            return(roles);
        }