Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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));
            }
        }