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