Добавьте файлы проекта.

This commit is contained in:
Курнат Андрей
2026-03-13 21:01:04 +03:00
commit b460f17029
111 changed files with 5803 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Massenger.Server.Data;
using Massenger.Server.Infrastructure;
using Massenger.Shared;
namespace Massenger.Server.Controllers;
[ApiController]
[Authorize]
[Route("api/[controller]")]
public sealed class UsersController(
MassengerDbContext dbContext,
PresenceTracker presenceTracker) : ControllerBase
{
[HttpGet("me")]
public async Task<ActionResult<UserSummaryDto>> GetMe(CancellationToken cancellationToken)
{
var userId = User.GetRequiredUserId();
var user = await dbContext.Users.SingleAsync(x => x.Id == userId, cancellationToken);
return Ok(user.ToDto(presenceTracker));
}
[HttpGet("search")]
public async Task<ActionResult<IReadOnlyList<UserSummaryDto>>> Search([FromQuery] string? q, CancellationToken cancellationToken)
{
var userId = User.GetRequiredUserId();
var query = q?.Trim();
var usersQuery = dbContext.Users.Where(x => x.Id != userId);
if (!string.IsNullOrWhiteSpace(query))
{
var normalized = query.ToUpperInvariant();
usersQuery = usersQuery.Where(x =>
x.NormalizedUsername.Contains(normalized) ||
EF.Functions.Like(x.DisplayName, $"%{query}%"));
}
var users = await usersQuery
.OrderBy(x => x.DisplayName)
.Take(25)
.ToListAsync(cancellationToken);
return Ok(users.Select(x => x.ToDto(presenceTracker)).ToList());
}
}