Ejemplo n.º 1
0
        public async Task <IActionResult> Get(CancellationToken cancellationToken = default)
        {
            var response = new GetUserResponse();

            try
            {
                // get company and email data from jwt
                var company = _httpContext.HttpContext.User.Claims.First(c => c.Type == "company")?.Value;
                var email   = _httpContext.HttpContext.User.Claims.First(c => c.Type == "username")?.Value;
                var filter  = new GetUserFilter(company, email);

                var user = await _userAppService.GetUser(filter, cancellationToken);

                response.StatusCode = 200;
                response.Data       = user;

                return(Ok(response));
            }
            catch (Exception ex)
            {
                response.StatusCode = 500;
                response.Messages.Add(ResponseMessage.Create(ex, ""));
                return(StatusCode(500, response));
            }
        }
Ejemplo n.º 2
0
 public async Task <UserDTO> GetUser(GetUserFilter filter, CancellationToken cancellationToken = default)
 {
     try
     {
         return(await _userQueryHandler.HandleAsync(filter, cancellationToken));
     }
     catch (Exception ex)
     { throw ex; }
 }
Ejemplo n.º 3
0
        public async Task <UserDTO> HandleAsync(GetUserFilter filter, CancellationToken cancellationToken = default)
        {
            try
            {
                ValidateFilter(filter);

                var user = await _userRepository.GetOneAsync(filter, cancellationToken);

                return(user.ToDTO());
            }
            catch (Exception ex)
            { throw ex; }
        }
Ejemplo n.º 4
0
        public async Task <TypedResult <IEnumerable <UserOutDto> > > GetUsers(GetUserFilter getUserFilter)
        {
            try
            {
                var filters = new List <FilterDefinition <UserEntity> >();
                if (!string.IsNullOrWhiteSpace(getUserFilter?.FirstNameLike))
                {
                    filters.Add(Builders <UserEntity> .Filter.Regex(u => u.Name.FirstName, BsonRegularExpression.Create(new Regex($"{getUserFilter.FirstNameLike}"))));
                }
                if (!string.IsNullOrWhiteSpace(getUserFilter?.LastNameLike))
                {
                    filters.Add(Builders <UserEntity> .Filter.Regex(u => u.Name.LastName, BsonRegularExpression.Create(new Regex($"{getUserFilter.LastNameLike}"))));
                }

                if (getUserFilter?.ReportsTo != null)
                {
                    filters.Add(Builders <UserEntity> .Filter.Eq(u => u.ReportingTo, getUserFilter.ReportsTo));
                }



                if (getUserFilter?.Roles != null && getUserFilter.Roles.Any())
                {
                    var tagFilters = new List <FilterDefinition <UserEntity> >();
                    foreach (var role in getUserFilter.Roles)
                    {
                        tagFilters.Add(Builders <UserEntity> .Filter.AnyEq(le => le.Roles, role.ToString()));
                    }

                    filters.Add(Builders <UserEntity> .Filter.Or(tagFilters));
                }


                var foundUsers = filters.Any()
                    ? (await UserCollection.FindAsync(Builders <UserEntity> .Filter.And(filters))).ToList().Select(UserOutDto.EntityToOutDto)
                    : (await UserCollection.FindAsync(x => true)).ToList().Select(UserOutDto.EntityToOutDto);

                return(new SuccessfulTypedResult <IEnumerable <UserOutDto> >(foundUsers));
            }
            catch (Exception e)
            {
                return(new FailedTypedResult <IEnumerable <UserOutDto> >(e));
            }
        }