[Authorize(Policy = "Owner")] [HttpGet] [Route("SearchUsers")] public async Task<IActionResult> SearchUsers([FromQuery] string? criteria) { try { if (string.IsNullOrEmpty(criteria)) // Check if criteria is null or empty { // If criteria is not provided, return all users var users = await _userManager.Users .Select(u => new SearchUserViewmodel { User_ID = u.User_ID, Name = u.Name, Surname = u.Surname }) .ToListAsync(); return Ok(users); } // If criteria is provided, filter users based on the criteria var filteredUsers = await _userManager.Users .Where(u => u.Name.Contains(criteria) || u.Surname.Contains(criteria)) .Select(u => new SearchUserViewmodel { User_ID = u.User_ID, Name = u.Name, Surname = u.Surname }) .ToListAsync(); if (filteredUsers == null || filteredUsers.Count == 0) { return NotFound("No users found."); } return Ok(filteredUsers); } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Internal Server Error. Please contact support."); } }