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 <DomainResult> Handle(InactivePointCommand command, CancellationToken cancellationToken) { var point = await _pointRepository.FindAsync(command.Id); if (point is null) { return(DomainResult.Failure <string>("Point not found")); } point.Inactive(); await _pointRepository.UpdateAsync(point); await _mediator.Publish(new PointInactivatedEvent(point)); return(DomainResult.Ok()); }
public async Task <DomainResult <ObjectId> > Handle(CreateRouteCommand 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 route = Route.Create(origin, destination); if (await _routeRepository.AlreadyExistsAsync(x => route.IsTheSame(x))) { return(DomainResult.Failure <ObjectId>("Route already exists", HttpStatusCode.Conflict)); } await _routeRepository.CreateAsync(route); await _mediator.Publish(new RouteCreatedEvent(route)); return(DomainResult.Ok(route.Id)); }