public async Task <DomainResult <ObjectId> > Handle(CreateConnectionCommand command, CancellationToken cancellationToken) { var origin = await _pointRepository.FindAsync(command.OriginPointId); var destination = await _pointRepository.FindAsync(command.DestinationPointId); if (origin is null || destination is null) { return(DomainResult.Failure <ObjectId>("Origin or Destination not found")); } var connection = new Connection(origin, destination, command.Time, command.Cost); var alreadyExists = await _connectionRepository.AlreadyExistsAsync(x => connection.IsTheSame(x)); if (alreadyExists) { return(DomainResult.Failure <ObjectId>("Connection already exists.", HttpStatusCode.Conflict)); } await _connectionRepository.CreateAsync(connection); await _mediator.Publish(new ConnectionCreatedEvent(connection)); return(DomainResult.Ok(connection.Id)); }
public async Task Handle(UserConnectedNotification notification, CancellationToken cancellationToken) { await _connectionRepository.CreateAsync(new Connection() { Id = Guid.NewGuid(), ConnectionId = notification.ConnectionId, Nickname = notification.NickName }); }