Example #1
0
        public async Task <IActionResult> Get(Guid?id,
                                              CancellationToken cancellationToken = default)
        {
            if (id == null)
            {
                //IQueryable<User> q = _userRepository.AsQueryable(
                //    new NavigationPropertyTree<User, object>
                //    {
                //        Path = u => u.TenantUsers
                //    }
                //);
                //return Ok(q);

                IQueryable <User> q = _userRepository.AsQueryable()
                                      .Select(u => new User
                {
                    Id    = u.Id,
                    Email = u.Email,
                    Name  = u.Name,
                    //TenantUsers = u.TenantUsers
                    TenantUsers = u.TenantUsers.Select(tu => new TenantUser
                    {
                        Id     = tu.Id,
                        Tenant = tu.Tenant,
                        User   = tu.User
                    }).ToImmutableArray()
                });
                return(Ok(q));

                //return Ok(await _userRepository.GetAllAsync(null, cancellationToken));
            }

            User user = await _userRepository.GetAsync(id.Value,
                                                       u => new User
            {
                Id    = u.Id,
                Email = u.Email,
                Name  = u.Name
            },
                                                       cancellationToken);

            if (user == null)
            {
                return(NotFound());
            }
            return(Ok(user));
        }