public async Task HandleAsync(FlightEnded @event, ICorrelationContext context)
        {
            var airplane = await _airplanesRepository.GetAsync(@event.PlaneId);

            if (airplane is null)
            {
                throw new BeComfyException("cannot_end_flight", $"Cannot end flight, airplane with id: '{@event.PlaneId}' does not exist");
            }

            airplane.IncreaseFlightsCarriedOut();
            airplane.SetNextFlight(DateTime.MinValue);
            airplane.SetFlightEnd(DateTime.MinValue);
            airplane.SetAirplaneStatus(AirplaneStatus.Ready);

            await _airplanesRepository.UpdateAsync(airplane);
        }
Esempio n. 2
0
        public async Task HandleAsync(FlightCreated @event, ICorrelationContext context)
        {
            var airplane = await _airplanesRepository.GetAsync(@event.AirplaneId);

            if (airplane is null)
            {
                throw new BeComfyException("cannot_create_flight",
                                           $"Cannot create flight, airplane with id: '{@event.AirplaneId}' does not exist");
            }

            airplane.SetNextFlight(@event.FlightStart);
            airplane.SetFlightEnd(@event.FlightEnd);
            airplane.SetAirplaneStatus(AirplaneStatus.Reserved);

            await _airplanesRepository.UpdateAsync(airplane);

            await _busPublisher.PublishAsync(new AirplaneReserved(airplane.Id, @event.FlightId,
                                                                  airplane.RequiredCrew), context);
        }