39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
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<UserData> 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<UserData?> GetById(long id, CancellationToken cancellationToken = default)
|
|
{
|
|
return _usersController.GetById(id, cancellationToken);
|
|
}
|
|
} |