using Nocr.Users.Api.Contracts.Users; using Nocr.Users.Api.Contracts.Users.Dto; using Nocr.Users.Api.Contracts.Users.Dto.Requests; namespace Nocr.TelegramClient.AppServices.Users; public sealed class UsersService : IUsersService { private readonly IUsersController _usersController; public UsersService(IUsersController usersController) { _usersController = usersController ?? throw new ArgumentNullException(nameof(usersController)); } public async Task GetOrCreate(long telegramId, string? username, CancellationToken cancellationToken = default) { var user = await _usersController.GetByIdentity(UserIdentityType.TelegramId, telegramId.ToString(), cancellationToken); if (user == null) { await _usersController.Create(new CreateUserRequest { Username = username ?? $"User: {telegramId.ToString()}", TelegramId = telegramId, TelegramUsername = username }, cancellationToken); user = await _usersController.GetByIdentity(UserIdentityType.TelegramId, telegramId.ToString(), cancellationToken); } return user; } public Task GetById(long id, CancellationToken cancellationToken = default) { return _usersController.GetById(id, cancellationToken); } }