telegram-client/src/Nocr.TelegramClient.AppServices/Users/UsersService.cs
2024-03-30 12:08:54 +03:00

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);
}
}