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