Exemplo n.º 1
0
        public async Task <RegisterUserResponse> Handle(RegisterUserRequest request, CancellationToken cancellationToken)
        {
            User foundUser;

            if (request.User.Id == default ||
                (await _userService.Get(request.User.Id, cancellationToken)) == null)
            {
                return(Response.Failed <RegisterUserResponse>(new ValidationFailure(
                                                                  nameof(request.User.Id), $"User with '{request.User.Id}' not found")));
            }

            var encryptedUser = await _encryptionProvider.Encrypt <UserDto, User>(request.User);

            foundUser = await _userService
                        .GetByEmailAddress(request.User.ApplicationInstance, encryptedUser.EmailAddress, cancellationToken);

            if (foundUser != null &&
                request.User.Id != default &&
                foundUser.Id != request.User.Id)
            {
                return(Response.Failed <RegisterUserResponse>(new ValidationFailure(
                                                                  nameof(request.User.EmailAddress), $"User with '{request.User.EmailAddress}' not found")));
            }

            if (await _applicationInstanceService.GetByInstanceId(request.User.ApplicationInstance, cancellationToken) == null)
            {
                return(Response.Failed <RegisterUserResponse>(new ValidationFailure(nameof(request.User.ApplicationInstance),
                                                                                    $"Application instance '{request.User.ApplicationInstance}' not found")));
            }
            var savedUser = await _userService.Save(encryptedUser, cancellationToken);

            var decryptedUser = await _encryptionProvider.Decrypt <User, UserDto>(savedUser);

            return(Response.Success <RegisterUserResponse>(decryptedUser));
        }
        public async Task <RegisterApplicationInstanceResponse> Handle(RegisterApplicationInstanceRequest request, CancellationToken cancellationToken)
        {
            var applicationInstance = await _applicationInstanceService
                                      .GetByInstanceId(request.ApplicationInstance.InstanceId, cancellationToken);

            if (applicationInstance != null)
            {
                return(Response.Failed <RegisterApplicationInstanceResponse>(new ValidationFailure(
                                                                                 nameof(request.ApplicationInstance.InstanceId), $"{request.ApplicationInstance.InstanceId} already exists.")));
            }

            var savedApplicationInstance = await _applicationInstanceService.Save(request.ApplicationInstance, cancellationToken);

            return(Response.Success <RegisterApplicationInstanceResponse>(savedApplicationInstance));
        }