MyBookmark/Modules.User.Application/Commands/CreateUserCommand.cs
THE_KONDRAT 7b16d72329 ui and login
mongo => postgres
2024-11-03 16:08:39 +03:00

39 lines
1.5 KiB
C#

using MediatR;
using Modules.User.Application.Errors;
using Modules.User.Application.Gateways;
using Modules.User.Domain.Gateways;
namespace Modules.User.Application.Commands;
public class CreateUserCommand : IRequest<Guid>
{
public string Email { get; set; } = default!;
public string Password { get; set; } = default!;
public string Nickname { get; set; } = default!;
}
public class CreateUserCommandHandler(IUserGateway userGateway, IPasswordGateway passwordGateway, IPasswordHasher passwordHasher) : IRequestHandler<CreateUserCommand, Guid>
{
public async Task<Guid> Handle(CreateUserCommand request, CancellationToken cancellationToken)
{
//if (await userGateway.IsExists(request.Email)) throw new Exception("Account with the same eamil already exists");
if (await userGateway.IsExists(request.Email)) throw new AccountException();
var newUser = Domain.Entities.User.User.Create(request.Email, request.Password, passwordGateway, request.Nickname);
var userId = await userGateway.CreateUser(new Models.Account
{
Email = newUser.Account.Email.Value,
HashedPassword = newUser.Account.HashedPassword,
}, new Models.User
{
NickName = newUser.NickName,
FirstName = newUser.FirstName,
Patronymic = newUser.SecondName,
LastName = newUser.LastName,
AvatarId = newUser.AvatarId,
LanguageId = newUser.LanguageId,
});
return userId;
}
}