public async Task<ActionResult<List<GroupDto>>> FindUsers([FromBody] SearchUserCommand command) { var searchWords = command.SearchString.Split(' ').ToList(); var allGroups = _context.Groups.ToList(); var groupDtos = new List<GroupDto>(); foreach (var group in allGroups) { var groupName = group.Name.Split(' ').ToList(); bool foundGroup = false; foreach (var name in groupName) { if(foundGroup == false) { foreach (var word in searchWords) { if(name.ToLower().StartsWith(word.ToLower())) { var groupFind = _context.Groups.Find(group.Idgroup); var groupDto = new GroupDto { CreatedDateTime = groupFind.DateTime, Decription = groupFind.Description, IDGroup = groupFind.Idgroup, Name = groupFind.Name }; groupDtos.Add(groupDto); foundGroup = true; } } } } foundGroup = false; } return Ok(groupDtos); }
public async Task <ActionResult <List <SearchUserDto> > > FindUsers([FromBody] SearchUserCommand command) { string[] searchString = command.SearchString.Split(null); var firstPart = string.IsNullOrEmpty(searchString[0]) ? "" : searchString[0]; var secondPart = searchString.Length <= 1 ? "" : searchString[1]; List <User> users = _context.Users.Include(x => x.Gender).Include(x => x.City).ToList(); var usersOne = users.Where(x => x.FirstName.ToLower().StartsWith(firstPart.ToLower())).ToList(); var usersThree = users.Where(x => x.LastName.ToLower().StartsWith(firstPart.ToLower())).ToList(); var usersTwo = new List <User>(); var usersFour = new List <User>(); if (!string.IsNullOrEmpty(secondPart)) { usersTwo = users.Where(x => x.FirstName.ToLower().StartsWith(secondPart.ToLower())).ToList(); usersFour = users.Where(x => x.LastName.ToLower().StartsWith(secondPart.ToLower())).ToList(); } var allUsers = usersOne.Union(usersTwo).Union(usersThree).Union(usersFour).ToList(); var finalUsers = new List <SearchUserDto>(); if (allUsers.Count() == 0) { return(NotFound("No users found for this search string")); } else { foreach (var user in allUsers) { var usTemp = new SearchUserDto { City = _context.Cities.Find(user.CityId).Name, Email = user.Email, FirstLastName = user.FirstName + " " + user.LastName, Gender = _context.Genders.Find(user.GenderId).Name, IdUser = user.Iduser }; finalUsers.Add(usTemp); } finalUsers.OrderBy(x => x.FirstLastName); return(Ok(finalUsers)); } }