public async Task HandleAsync(AddMemberToOrganization command) => await _handler .Run(async() => await _organizationService.AddMemberAsync(command.OrganizationId, command.MemberId, command.Role)) .OnSuccess(async() => { await _bus.PublishAsync(new MemberAddedToOrganization(command.Request.Id, command.UserId, command.OrganizationId, command.MemberId, command.Role)); }) .OnCustomError(async ex => await _bus.PublishAsync( new AddMemberToOrganizationRejected(command.Request.Id, command.UserId, command.OrganizationId, command.MemberId, command.Role, ex.Code, ex.Message))) .OnError(async(ex, logger) => { var message = $"Error when trying to add member: '{command.MemberId}' to the organization: '{command.OrganizationId}'."; logger.Error(ex, message); await _bus.PublishAsync(new AddMemberToOrganizationRejected(command.Request.Id, command.UserId, command.OrganizationId, command.MemberId, command.Role, OperationCodes.Error, message)); }) .ExecuteAsync();