Пример #1
0
        public async Task Handle(RegisterUserRequest message)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return;
            }

            var appUser = new AppUser {
                Email = message.Email, UserName = message.UserName
            };
            var identityResult = await _userManager.CreateAsync(appUser, message.Password);

            if (!identityResult.Succeeded)
            {
                // User claim for write employees data
                await _userManager.AddClaimAsync(appUser, new Claim("Employees", "Write"));

                await Bus.RaiseEvent(new DomainNotification(message.MessageType, string.Join(", ", identityResult.Errors.Select(e => e.Description).ToArray())));
            }

            var user = new User(Guid.NewGuid(), message.FirstName, message.LastName, appUser.Id, message.Email, message.Password);
            await _userRepository.AddAsync(user);

            if (Commit())
            {
                await Bus.RaiseEvent(new UserRegisteredEvent(user.Id, user.UserName, user.Email));

                return;
            }

            await Bus.RaiseEvent(new DomainNotification(message.MessageType, "User registration failed"));
        }