예제 #1
0
        public async Task <ICollection <UserDTO> > GetUserByCriteriaAsync(UsersCriteriaInputModel model)
        {
            if (!model.UserIds.Any() &&
                model.DateCreated == null &&
                model.DateLastModified == null &&
                model.UserCreatorId == null &&
                string.IsNullOrWhiteSpace(model.Username) &&
                string.IsNullOrWhiteSpace(model.Email) &&
                string.IsNullOrWhiteSpace(model.Name) &&
                !model.BlogIds.Any() &&
                !model.CommentIds.Any() &&
                !model.PostIds.Any()
                )
            {
                throw new ArgumentNullException("No Input criteria typed");
            }
            var users = this.repository.All();

            if (model.UserIds.Any())
            {
                users = users
                        .Where(u => model.UserIds.Contains(u.Id));
            }

            if (model.DateCreated != null)
            {
                users = users
                        .Where(u => u.DateCreated.Date == model.DateCreated.Value.Date);
            }

            if (model.DateLastModified != null)
            {
                users = users
                        .Where(u => u.DateLastModified.Date == model.DateLastModified.Value.Date);
            }

            if (model.UserCreatorId != null)
            {
                users = users
                        .Where(u => u.UserCreatorId == model.UserCreatorId);
            }

            if (!string.IsNullOrWhiteSpace(model.Username))
            {
                users = users
                        .Where(u => u.Username.Contains(model.Username));
            }

            if (!string.IsNullOrWhiteSpace(model.Email))
            {
                users = users
                        .Where(u => u.Email.Contains(model.Email));
            }

            if (!string.IsNullOrWhiteSpace(model.Name))
            {
                users = users
                        .Where(u => u.Name.Contains(model.Name));
            }

            if (model.BlogIds.Any())
            {
                users = users
                        .Where(u => u.BlogsCreated.Any(b => model.BlogIds.Any(m => m == b.Id)));
            }

            if (model.CommentIds.Any())
            {
                users = users
                        .Where(u => u.Comments.Any(c => model.CommentIds.Any(m => m == c.Id)));
            }

            if (model.PostIds.Any())
            {
                users = users
                        .Where(u => u.Posts.Any(p => model.PostIds.Any(m => m == p.Id)));
            }
            return(await users.Select(UserMapper.SelectUserDtoFromUser).ToListAsync());
        }
 public async Task <ICollection <UserDTO> > GetUserByName([FromBody] UsersCriteriaInputModel user)
 {
     return(await service.GetUserByCriteriaAsync(user));
 }