gitextract_4va7s4qm/ ├── .aspire/ │ └── settings.json ├── .config/ │ └── dotnet-tools.json ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── actions/ │ │ ├── build/ │ │ │ └── action.yml │ │ ├── build-test/ │ │ │ └── action.yml │ │ ├── docker-build-publish/ │ │ │ └── action.yml │ │ └── test/ │ │ └── action.yml │ ├── release-drafter.yml │ └── workflows/ │ ├── ci.yml │ └── release-drafter-labeler.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── CONTRIBUTION.md ├── Directory.Build.props ├── LICENSE ├── README.md ├── assets/ │ ├── booking-microservices.drawio │ └── vertical-slice-architecture.excalidraw ├── booking-microservices.sln ├── booking.rest ├── commitlint.config.js ├── deployments/ │ ├── configs/ │ │ ├── dashboards.md │ │ ├── grafana/ │ │ │ ├── dashboards/ │ │ │ │ ├── dotnet-core-endpoint.json │ │ │ │ ├── dotnet-core.json │ │ │ │ ├── node-exporter.json │ │ │ │ ├── postgresql.json │ │ │ │ └── rabbitmq.json │ │ │ └── provisioning/ │ │ │ ├── dashboards/ │ │ │ │ └── dashboard.yml │ │ │ └── datasources/ │ │ │ └── datasource.yml │ │ ├── loki-config.yaml │ │ ├── otel-collector-config.yaml │ │ ├── prometheus.yaml │ │ └── tempo.yaml │ ├── docker-compose/ │ │ ├── docker-compose.infrastructure.yaml │ │ └── docker-compose.yaml │ └── kubernetes/ │ ├── booking-cert-manager.yml │ └── booking-microservices.yml ├── global.json ├── package.json ├── scripts/ │ └── setup_kubectl_gitpod.sh └── src/ ├── ApiGateway/ │ ├── Dockerfile │ └── src/ │ ├── ApiGateway.csproj │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── appsettings.Development.json │ ├── appsettings.docker.json │ └── appsettings.json ├── Aspire/ │ └── src/ │ ├── AppHost/ │ │ ├── AppHost.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── ServiceDefaults/ │ ├── Extensions.cs │ └── ServiceDefaults.csproj ├── BuildingBlocks/ │ ├── BuildingBlocks.csproj │ ├── Caching/ │ │ ├── CachingBehavior.cs │ │ ├── ICacheRequest.cs │ │ ├── IInvalidateCacheRequest.cs │ │ └── InvalidateCachingBehavior.cs │ ├── Constants/ │ │ └── IdentityConstant.cs │ ├── Contracts/ │ │ └── EventBus.Messages/ │ │ ├── FlighContracts.cs │ │ ├── IdentityContracts.cs │ │ ├── PassengerContracts.cs │ │ └── ReservationContracts.cs │ ├── Core/ │ │ ├── CQRS/ │ │ │ ├── ICommand.cs │ │ │ ├── ICommandHandler.cs │ │ │ ├── IQuery.cs │ │ │ └── IQueryHandler.cs │ │ ├── CompositeEventMapper.cs │ │ ├── Event/ │ │ │ ├── EventType.cs │ │ │ ├── IDomainEvent.cs │ │ │ ├── IEvent.cs │ │ │ ├── IHaveIntegrationEvent.cs │ │ │ ├── IIntegrationEvent.cs │ │ │ ├── IInternalCommand.cs │ │ │ ├── InternalCommand.cs │ │ │ └── MessageEnvelope.cs │ │ ├── EventDispatcher.cs │ │ ├── IEventDispatcher.cs │ │ ├── IEventMapper.cs │ │ ├── IntegrationEventWrapper.cs │ │ ├── Model/ │ │ │ ├── Aggregate.cs │ │ │ ├── Entity.cs │ │ │ ├── IAggregate.cs │ │ │ ├── IEntity.cs │ │ │ └── IVersion.cs │ │ └── Pagination/ │ │ ├── Extensions.cs │ │ ├── IPageList.cs │ │ ├── IPageQuery.cs │ │ ├── IPageRequest.cs │ │ └── PageList.cs │ ├── EFCore/ │ │ ├── AppDbContextBase.cs │ │ ├── DesignTimeDbContextFactoryBase.cs │ │ ├── EfTxBehavior.cs │ │ ├── Extensions.cs │ │ ├── IDataSeeder.cs │ │ ├── IDbContext.cs │ │ ├── ISeedManager.cs │ │ ├── PostgresOptions.cs │ │ └── SeedManagers.cs │ ├── EventStoreDB/ │ │ ├── BackgroundWorkers/ │ │ │ └── BackgroundWorker.cs │ │ ├── Config.cs │ │ ├── Events/ │ │ │ ├── AggregateEventSourcing.cs │ │ │ ├── AggregateStreamExtensions.cs │ │ │ ├── EventTypeMapper.cs │ │ │ ├── IAggregateEventSourcing.cs │ │ │ ├── IEventHandler.cs │ │ │ ├── IExternalEvent.cs │ │ │ ├── IProjection.cs │ │ │ ├── StreamEvent.cs │ │ │ ├── StreamEventExtensions.cs │ │ │ └── StreamNameMapper.cs │ │ ├── Extensions.cs │ │ ├── Projections/ │ │ │ ├── IProjectionProcessor.cs │ │ │ ├── IProjectionPublisher.cs │ │ │ └── ProjectionPublisher.cs │ │ ├── Repository/ │ │ │ ├── EventStoreDBRepository.cs │ │ │ └── RepositoryExtensions.cs │ │ ├── Serialization/ │ │ │ ├── EventStoreDBSerializer.cs │ │ │ ├── JsonObjectContractProvider.cs │ │ │ ├── NonDefaultConstructorContractResolver.cs │ │ │ └── SerializationExtensions.cs │ │ └── Subscriptions/ │ │ ├── EventStoreDBSubscriptionCheckpointRepository.cs │ │ ├── EventStoreDBSubscriptionToAll.cs │ │ ├── ISubscriptionCheckpointRepository.cs │ │ └── InMemorySubscriptionCheckpointRepository.cs │ ├── Exception/ │ │ ├── AggregateNotFoundException.cs │ │ ├── AppException.cs │ │ ├── BadRequestException.cs │ │ ├── ConflictException.cs │ │ ├── CustomException.cs │ │ ├── DomainException.cs │ │ ├── GrpcExceptionInterceptor.cs │ │ ├── InternalServerException.cs │ │ ├── NotFoundException.cs │ │ ├── ProblemDetailsWithCode.cs │ │ └── ValidationException.cs │ ├── HealthCheck/ │ │ ├── Extensions.cs │ │ └── HealthOptions.cs │ ├── Jwt/ │ │ ├── AuthHeaderHandler.cs │ │ └── JwtExtensions.cs │ ├── Logging/ │ │ └── LoggingBehavior.cs │ ├── Mapster/ │ │ └── Extensions.cs │ ├── MassTransit/ │ │ ├── ConsumeFilter.cs │ │ ├── Extensions.cs │ │ ├── RabbitMqOptions.cs │ │ └── TransportType.cs │ ├── Mongo/ │ │ ├── Extensions.cs │ │ ├── IMongoDbContext.cs │ │ ├── IMongoRepository.cs │ │ ├── IMongoUnitOfWork.cs │ │ ├── IRepository.cs │ │ ├── ITransactionAble.cs │ │ ├── IUnitOfWork.cs │ │ ├── ImmutablePocoConvention.cs │ │ ├── MicroBootstrap.Persistence.Mongo.csproj │ │ ├── MongoDbContext.cs │ │ ├── MongoOptions.cs │ │ ├── MongoRepository.cs │ │ └── MongoUnitOfWork.cs │ ├── OpenApi/ │ │ ├── Extensions.cs │ │ └── SecuritySchemeDocumentTransformer.cs │ ├── OpenTelemetryCollector/ │ │ ├── ActivityExtensions.cs │ │ ├── ActivityInfo.cs │ │ ├── Behaviors/ │ │ │ └── ObservabilityPipelineBehavior.cs │ │ ├── CoreDiagnostics/ │ │ │ ├── Commands/ │ │ │ │ ├── CommandHandlerActivity.cs │ │ │ │ └── CommandHandlerMetrics.cs │ │ │ └── Query/ │ │ │ ├── QueryHandlerActivity.cs │ │ │ └── QueryHandlerMetrics.cs │ │ ├── CreateActivityInfo.cs │ │ ├── DiagnosticsProvider/ │ │ │ ├── CustomeDiagnosticsProvider.cs │ │ │ └── IDiagnosticsProvider.cs │ │ ├── Extensions.cs │ │ ├── ObservabilityConstant.cs │ │ ├── ObservabilityOptions.cs │ │ └── TelemetryTags.cs │ ├── PersistMessageProcessor/ │ │ ├── Extensions.cs │ │ ├── IPersistMessageDbContext.cs │ │ ├── IPersistMessageProcessor.cs │ │ ├── MessageDeliveryType.cs │ │ ├── MessageStatus.cs │ │ ├── PersistMessage.cs │ │ ├── PersistMessageBackgroundService.cs │ │ ├── PersistMessageDbContext.cs │ │ ├── PersistMessageOptions.cs │ │ └── PersistMessageProcessor.cs │ ├── Polly/ │ │ └── Extensions.cs │ ├── ProblemDetails/ │ │ └── Extensions.cs │ ├── TestBase/ │ │ ├── TestBase.cs │ │ └── TestContainers.cs │ ├── Utils/ │ │ ├── NoSynchronizationContextScope.cs │ │ ├── ServiceLocator.cs │ │ └── TypeProvider.cs │ ├── Validation/ │ │ ├── Extensions.cs │ │ ├── ValidationBehavior.cs │ │ ├── ValidationError.cs │ │ └── ValidationResultModel.cs │ └── Web/ │ ├── ApiVersioningExtensions.cs │ ├── AppOptions.cs │ ├── BaseController.cs │ ├── ConfigurationExtensions.cs │ ├── ConfigurationHelper.cs │ ├── CorrelationExtensions.cs │ ├── CurrentUserProvider.cs │ ├── EndpointConfig.cs │ ├── IMinimalEndpoint.cs │ ├── MinimalApiExtensions.cs │ ├── ServiceCollectionExtensions.cs │ ├── ServiceProviderExtensions.cs │ └── SlugifyParameterTransformer.cs └── Services/ ├── Booking/ │ ├── Dockerfile │ ├── src/ │ │ ├── Booking/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Booking/ │ │ │ │ ├── Dtos/ │ │ │ │ │ └── CreateReservation.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ ├── BookingAlreadyExistException.cs │ │ │ │ │ ├── FlightNotFoundException.cs │ │ │ │ │ ├── InvalidAircraftIdException.cs │ │ │ │ │ ├── InvalidArriveAirportIdException.cs │ │ │ │ │ ├── InvalidDepartureAirportIdException.cs │ │ │ │ │ ├── InvalidFlightDateException.cs │ │ │ │ │ ├── InvalidFlightNumberException.cs │ │ │ │ │ ├── InvalidPassengerNameException.cs │ │ │ │ │ ├── InvalidPriceException.cs │ │ │ │ │ └── SeatNumberException.cs │ │ │ │ ├── Features/ │ │ │ │ │ ├── BookingMappings.cs │ │ │ │ │ └── CreatingBook/ │ │ │ │ │ └── V1/ │ │ │ │ │ └── CreateBooking.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── Booking.cs │ │ │ │ │ └── BookingReadModel.cs │ │ │ │ └── ValueObjects/ │ │ │ │ ├── PassengerInfo.cs │ │ │ │ └── Trip.cs │ │ │ ├── Booking.csproj │ │ │ ├── BookingEventMapper.cs │ │ │ ├── BookingProjection.cs │ │ │ ├── BookingRoot.cs │ │ │ ├── Configuration/ │ │ │ │ └── GrpcOptions.cs │ │ │ ├── Data/ │ │ │ │ └── BookingReadDbContext.cs │ │ │ ├── Extensions/ │ │ │ │ └── Infrastructure/ │ │ │ │ ├── GrpcClientExtensions.cs │ │ │ │ ├── InfrastructureExtensions.cs │ │ │ │ └── MediatRExtensions.cs │ │ │ └── GrpcClient/ │ │ │ └── Protos/ │ │ │ ├── flight.proto │ │ │ └── passenger.proto │ │ └── Booking.Api/ │ │ ├── Booking.Api.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.docker.json │ │ ├── appsettings.json │ │ └── appsettings.test.json │ └── tests/ │ ├── IntegrationTest/ │ │ ├── Booking/ │ │ │ └── Features/ │ │ │ └── CreateBookingTests.cs │ │ ├── BookingIntegrationTestBase.cs │ │ ├── Fakes/ │ │ │ ├── FakeCreateBookingCommand.cs │ │ │ ├── FakeFlightResponse.cs │ │ │ ├── FakeGetAvailableSeatsResponse.cs │ │ │ ├── FakePassengerResponse.cs │ │ │ └── FakeReserveSeatResponse.cs │ │ ├── Integration.Test.csproj │ │ └── xunit.runner.json │ ├── PerformanceTest/ │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── README.md │ │ └── script.js │ └── tests.sln ├── Flight/ │ ├── Dockerfile │ ├── src/ │ │ ├── Flight/ │ │ │ ├── Aircrafts/ │ │ │ │ ├── Dtos/ │ │ │ │ │ └── AircraftDto.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ ├── AircraftAlreadyExistException.cs │ │ │ │ │ ├── InvalidAircraftIdException.cs │ │ │ │ │ ├── InvalidManufacturingYearException.cs │ │ │ │ │ ├── InvalidModelException.cs │ │ │ │ │ └── InvalidNameException.cs │ │ │ │ ├── Features/ │ │ │ │ │ ├── AircraftMappings.cs │ │ │ │ │ └── CreatingAircraft/ │ │ │ │ │ └── V1/ │ │ │ │ │ ├── CreateAircraft.cs │ │ │ │ │ └── CreateAircraftMongo.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── Aircraft.cs │ │ │ │ │ └── AircraftReadModel.cs │ │ │ │ └── ValueObjects/ │ │ │ │ ├── AircraftId.cs │ │ │ │ ├── ManufacturingYear.cs │ │ │ │ ├── Model.cs │ │ │ │ └── Name.cs │ │ │ ├── Airports/ │ │ │ │ ├── Dtos/ │ │ │ │ │ └── AirportDto.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ ├── AirportAlreadyExistException.cs │ │ │ │ │ ├── InvalidAddressException.cs │ │ │ │ │ ├── InvalidAirportIdException.cs │ │ │ │ │ ├── InvalidCodeException.cs │ │ │ │ │ └── InvalidNameException.cs │ │ │ │ ├── Features/ │ │ │ │ │ ├── AirportMappings.cs │ │ │ │ │ └── CreatingAirport/ │ │ │ │ │ └── V1/ │ │ │ │ │ ├── CreateAirport.cs │ │ │ │ │ └── CreateAirportMongo.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── Airport.cs │ │ │ │ │ └── AirportReadModel.cs │ │ │ │ └── ValueObjects/ │ │ │ │ ├── Address.cs │ │ │ │ ├── AirportId.cs │ │ │ │ ├── Code.cs │ │ │ │ └── Name.cs │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Data/ │ │ │ │ ├── Configurations/ │ │ │ │ │ ├── AircraftConfiguration.cs │ │ │ │ │ ├── AirportConfiguration.cs │ │ │ │ │ ├── FlightConfiguration.cs │ │ │ │ │ └── SeatConfiguration.cs │ │ │ │ ├── DesignTimeDbContextFactory.cs │ │ │ │ ├── FlightDbContext.cs │ │ │ │ ├── FlightReadDbContext.cs │ │ │ │ ├── Migrations/ │ │ │ │ │ ├── 20230611230948_initial.Designer.cs │ │ │ │ │ ├── 20230611230948_initial.cs │ │ │ │ │ └── FlightDbContextModelSnapshot.cs │ │ │ │ ├── Seed/ │ │ │ │ │ ├── FlightDataSeeder.cs │ │ │ │ │ └── InitialData.cs │ │ │ │ └── readme.md │ │ │ ├── Extensions/ │ │ │ │ └── Infrastructure/ │ │ │ │ ├── InfrastructureExtensions.cs │ │ │ │ └── MediatRExtensions.cs │ │ │ ├── Flight.csproj │ │ │ ├── FlightEventMapper.cs │ │ │ ├── FlightRoot.cs │ │ │ ├── Flights/ │ │ │ │ ├── Dtos/ │ │ │ │ │ └── FlightDto.cs │ │ │ │ ├── Enums/ │ │ │ │ │ └── FlightStatus.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ ├── FlightAlreadyExistException.cs │ │ │ │ │ ├── FlightNotFountException.cs │ │ │ │ │ ├── InvalidArriveDateException.cs │ │ │ │ │ ├── InvalidDepartureDateException.cs │ │ │ │ │ ├── InvalidDurationException.cs │ │ │ │ │ ├── InvalidFlightDateException.cs │ │ │ │ │ ├── InvalidFlightIdException.cs │ │ │ │ │ ├── InvalidFlightNumberException.cs │ │ │ │ │ └── InvalidPriceException.cs │ │ │ │ ├── Features/ │ │ │ │ │ ├── CreatingFlight/ │ │ │ │ │ │ └── V1/ │ │ │ │ │ │ ├── CreateFlight.cs │ │ │ │ │ │ └── CreateFlightMongo.cs │ │ │ │ │ ├── DeletingFlight/ │ │ │ │ │ │ └── V1/ │ │ │ │ │ │ ├── DeleteFlight.cs │ │ │ │ │ │ └── DeleteFlightMongo.cs │ │ │ │ │ ├── FlightMappings.cs │ │ │ │ │ ├── GettingAvailableFlights/ │ │ │ │ │ │ └── V1/ │ │ │ │ │ │ └── GetAvailableFlights.cs │ │ │ │ │ ├── GettingFlightById/ │ │ │ │ │ │ └── V1/ │ │ │ │ │ │ └── GetFlightById.cs │ │ │ │ │ └── UpdatingFlight/ │ │ │ │ │ └── V1/ │ │ │ │ │ ├── UpdateFlight.cs │ │ │ │ │ └── UpdateFlightMongo.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── Flight.cs │ │ │ │ │ └── FlightReadModel.cs │ │ │ │ └── ValueObjects/ │ │ │ │ ├── ArriveDate.cs │ │ │ │ ├── DepartureDate.cs │ │ │ │ ├── DurationMinutes.cs │ │ │ │ ├── FlightDate.cs │ │ │ │ ├── FlightId.cs │ │ │ │ ├── FlightNumber.cs │ │ │ │ └── Price.cs │ │ │ ├── GrpcServer/ │ │ │ │ ├── Protos/ │ │ │ │ │ └── flight.proto │ │ │ │ └── Services/ │ │ │ │ └── FlightGrpcServices.cs │ │ │ └── Seats/ │ │ │ ├── Dtos/ │ │ │ │ └── SeatDto.cs │ │ │ ├── Enums/ │ │ │ │ ├── SeatClass.cs │ │ │ │ └── SeatType.cs │ │ │ ├── Exceptions/ │ │ │ │ ├── AllSeatsFullException.cs │ │ │ │ ├── InvalidSeatIdException.cs │ │ │ │ ├── InvalidSeatNumberException.cs │ │ │ │ ├── SeatAlreadyExistException.cs │ │ │ │ └── SeatNumberIncorrectException.cs │ │ │ ├── Features/ │ │ │ │ ├── CreatingSeat/ │ │ │ │ │ └── V1/ │ │ │ │ │ ├── CreateSeat.cs │ │ │ │ │ └── CreateSeatMongo.cs │ │ │ │ ├── GettingAvailableSeats/ │ │ │ │ │ └── V1/ │ │ │ │ │ └── GetAvailableSeats.cs │ │ │ │ ├── ReservingSeat/ │ │ │ │ │ └── V1/ │ │ │ │ │ ├── ReserveSeat.cs │ │ │ │ │ └── ReserveSeatMongo.cs │ │ │ │ └── SeatMappings.cs │ │ │ ├── Models/ │ │ │ │ ├── Seat.cs │ │ │ │ └── SeatReadModel.cs │ │ │ └── ValueObjects/ │ │ │ ├── SeatId.cs │ │ │ └── SeatNumber.cs │ │ └── Flight.Api/ │ │ ├── Flight.Api.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.docker.json │ │ ├── appsettings.json │ │ └── appsettings.test.json │ └── tests/ │ ├── EndToEndTest/ │ │ ├── EndToEnd.Test.csproj │ │ ├── Fakes/ │ │ │ ├── FakeCreateFlightCommand.cs │ │ │ └── FakeCreateFlightMongoCommand.cs │ │ ├── Flight/ │ │ │ └── Features/ │ │ │ ├── CreateFlightTests.cs │ │ │ └── GetFlightByIdTests.cs │ │ ├── FlightEndToEndTestBase.cs │ │ ├── FlightTestDataSeeder.cs │ │ ├── Routes/ │ │ │ └── ApiRoutes.cs │ │ └── xunit.runner.json │ ├── IntegrationTest/ │ │ ├── Aircraft/ │ │ │ └── Features/ │ │ │ └── CreateAircraftTests.cs │ │ ├── Airport/ │ │ │ └── Features/ │ │ │ └── CreateAirportTests.cs │ │ ├── Fakes/ │ │ │ ├── FakeCreateAircraftCommand.cs │ │ │ ├── FakeCreateAirportCommand.cs │ │ │ ├── FakeCreateFlightCommand.cs │ │ │ ├── FakeCreateFlightMongoCommand.cs │ │ │ ├── FakeCreateSeatCommand.cs │ │ │ ├── FakeCreateSeatMongoCommand.cs │ │ │ └── FakeUpdateFlightCommand.cs │ │ ├── Flight/ │ │ │ └── Features/ │ │ │ ├── CreateFlightTests.cs │ │ │ ├── DeleteFlightTests.cs │ │ │ ├── GetAvailableFlightsTests.cs │ │ │ ├── GetFlightByIdTests.cs │ │ │ └── UpdateFlightTests.cs │ │ ├── FlightIntegrationTestBase.cs │ │ ├── FlightTestDataSeeder.cs │ │ ├── Integration.Test.csproj │ │ ├── Seat/ │ │ │ └── Features/ │ │ │ ├── GetAvailableSeatsTests.cs │ │ │ └── ReserveSeatTests.cs │ │ └── xunit.runner.json │ ├── PerformanceTest/ │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── README.md │ │ └── script.js │ ├── UnitTest/ │ │ ├── Aircraft/ │ │ │ └── Features/ │ │ │ └── CreateAircraftTests/ │ │ │ ├── CreateAircraftCommandHandlerTests.cs │ │ │ └── CreateAircraftCommandValidatorTests.cs │ │ ├── Airport/ │ │ │ └── Features/ │ │ │ └── CreateAirportTests/ │ │ │ ├── CreateAirportCommandHandlerTests.cs │ │ │ └── CreateAirportCommandValidatorTests.cs │ │ ├── Common/ │ │ │ ├── DbContextFactory.cs │ │ │ ├── MapperFactory.cs │ │ │ └── UnitTestFixture.cs │ │ ├── Fakes/ │ │ │ ├── FakeCreateAircraftCommand.cs │ │ │ ├── FakeCreateAirportCommand.cs │ │ │ ├── FakeCreateFlightCommand.cs │ │ │ ├── FakeCreateSeatCommand.cs │ │ │ ├── FakeFlightCreate.cs │ │ │ ├── FakeFlightUpdate.cs │ │ │ ├── FakeValidateCreateAircraftCommand.cs │ │ │ ├── FakeValidateCreateAirportCommand.cs │ │ │ ├── FakeValidateCreateFlightCommand.cs │ │ │ └── FakeValidateCreateSeatCommand.cs │ │ ├── Flight/ │ │ │ ├── Features/ │ │ │ │ ├── Domains/ │ │ │ │ │ ├── CreateFlightTests.cs │ │ │ │ │ └── UpdateFlightTests.cs │ │ │ │ └── Handlers/ │ │ │ │ └── CreateFlight/ │ │ │ │ ├── CreateFlightCommandHandlerTests.cs │ │ │ │ └── CreateFlightCommandValidatorTests.cs │ │ │ └── FlightMappingTests.cs │ │ ├── Seat/ │ │ │ ├── Features/ │ │ │ │ ├── CreateSeatCommandHandlerTests.cs │ │ │ │ └── CreateSeatCommandValidatorTests.cs │ │ │ └── SeatMappingTests.cs │ │ ├── Unit.Test.csproj │ │ └── xunit.runner.json │ └── tests.sln ├── Identity/ │ ├── Dockerfile │ ├── src/ │ │ ├── Identity/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Configurations/ │ │ │ │ ├── AuthOptions.cs │ │ │ │ ├── Config.cs │ │ │ │ └── UserValidator.cs │ │ │ ├── Data/ │ │ │ │ ├── Configurations/ │ │ │ │ │ ├── RoleClaimConfiguration.cs │ │ │ │ │ ├── RoleConfiguration.cs │ │ │ │ │ ├── UserClaimConfiguration.cs │ │ │ │ │ ├── UserConfiguration.cs │ │ │ │ │ ├── UserLoginConfiguration.cs │ │ │ │ │ ├── UserRoleConfiguration.cs │ │ │ │ │ └── UserTokenConfiguration.cs │ │ │ │ ├── DesignTimeDbContextFactory.cs │ │ │ │ ├── IdentityContext.cs │ │ │ │ ├── Migrations/ │ │ │ │ │ ├── 20230331193410_initial.Designer.cs │ │ │ │ │ ├── 20230331193410_initial.cs │ │ │ │ │ └── IdentityContextModelSnapshot.cs │ │ │ │ ├── Seed/ │ │ │ │ │ ├── IdentityDataSeeder.cs │ │ │ │ │ └── InitialData.cs │ │ │ │ └── readme.md │ │ │ ├── Extensions/ │ │ │ │ └── Infrastructure/ │ │ │ │ ├── IdentityServerExtensions.cs │ │ │ │ ├── InfrastructureExtensions.cs │ │ │ │ └── MediatRExtensions.cs │ │ │ ├── Identity/ │ │ │ │ ├── Constants/ │ │ │ │ │ └── Constants.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ └── RegisterIdentityUserException.cs │ │ │ │ ├── Features/ │ │ │ │ │ ├── IdentityMappings.cs │ │ │ │ │ └── RegisteringNewUser/ │ │ │ │ │ └── V1/ │ │ │ │ │ └── RegisterNewUser.cs │ │ │ │ └── Models/ │ │ │ │ ├── Role.cs │ │ │ │ ├── RoleClaim.cs │ │ │ │ ├── User.cs │ │ │ │ ├── UserClaim.cs │ │ │ │ ├── UserLogin.cs │ │ │ │ ├── UserRole.cs │ │ │ │ └── UserToken.cs │ │ │ ├── Identity.csproj │ │ │ ├── IdentityEventMapper.cs │ │ │ └── IdentityRoot.cs │ │ └── Identity.Api/ │ │ ├── Identity.Api.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.docker.json │ │ ├── appsettings.json │ │ ├── appsettings.test.json │ │ └── keys/ │ │ ├── is-signing-key-0AC3347A09AA5E44E947F3E30ED54871.json │ │ ├── is-signing-key-A57781A0405849BDE786A79636460E49.json │ │ ├── is-signing-key-B3C31EEE2718D3C5004C6E85AD74F26C.json │ │ └── is-signing-key-E1668D5B7CCDD18C610506FCA7C5D194.json │ └── tests/ │ ├── IntegrationTest/ │ │ ├── Fakes/ │ │ │ └── FakeRegisterNewUserCommand.cs │ │ ├── Identity/ │ │ │ └── Features/ │ │ │ └── RegisterNewUserTests.cs │ │ ├── IdentityIntegrationTestBase.cs │ │ ├── IdentityTestDataSeeder.cs │ │ ├── Integration.Test.csproj │ │ └── xunit.runner.json │ ├── PerformanceTest/ │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── README.md │ │ └── script.js │ └── tests.sln └── Passenger/ ├── Dockerfile ├── src/ │ ├── Passenger/ │ │ ├── AssemblyInfo.cs │ │ ├── Data/ │ │ │ ├── Configurations/ │ │ │ │ └── PassengerConfiguration.cs │ │ │ ├── DesignTimeDbContextFactory.cs │ │ │ ├── Migrations/ │ │ │ │ ├── 20230611213031_initial.Designer.cs │ │ │ │ ├── 20230611213031_initial.cs │ │ │ │ └── PassengerDbContextModelSnapshot.cs │ │ │ ├── PassengerDbContext.cs │ │ │ ├── PassengerReadDbContext.cs │ │ │ └── readme.md │ │ ├── Exceptions/ │ │ │ ├── InvalidAgeException.cs │ │ │ ├── InvalidNameException.cs │ │ │ ├── InvalidPassengerIdException.cs │ │ │ ├── InvalidPassportNumberException.cs │ │ │ ├── PassengerAlreadyExist.cs │ │ │ └── PassengerNotFoundException.cs │ │ ├── Extensions/ │ │ │ └── Infrastructure/ │ │ │ ├── InfrastructureExtensions.cs │ │ │ └── MediatRExtensions.cs │ │ ├── GrpcServer/ │ │ │ ├── Protos/ │ │ │ │ └── passenger.proto │ │ │ └── Services/ │ │ │ └── PassengerGrpcServices.cs │ │ ├── Identity/ │ │ │ └── Consumers/ │ │ │ └── RegisteringNewUser/ │ │ │ └── V1/ │ │ │ ├── PassengerCreatedDomainEvent.cs │ │ │ └── RegisterNewUser.cs │ │ ├── Passenger.csproj │ │ ├── PassengerEventMapper.cs │ │ ├── PassengerRoot.cs │ │ └── Passengers/ │ │ ├── Dtos/ │ │ │ └── PassengerDto.cs │ │ ├── Enums/ │ │ │ └── PassengerType.cs │ │ ├── Exceptions/ │ │ │ ├── InvalidAgeException.cs │ │ │ ├── InvalidNameException.cs │ │ │ ├── InvalidPassportNumberException.cs │ │ │ ├── PassengerAlreadyExist.cs │ │ │ └── PassengerNotFoundException.cs │ │ ├── Features/ │ │ │ ├── CompletingRegisterPassenger/ │ │ │ │ └── V1/ │ │ │ │ ├── CompleteRegisterPassenger.cs │ │ │ │ └── CompleteRegisterPassengerMongo.cs │ │ │ ├── GettingPassengerById/ │ │ │ │ └── V1/ │ │ │ │ └── GetPassengerById.cs │ │ │ └── PassengerMappings.cs │ │ ├── Models/ │ │ │ ├── Passenger.cs │ │ │ └── PassengerReadModel.cs │ │ └── ValueObjects/ │ │ ├── Age.cs │ │ ├── Name.cs │ │ ├── PassengerId.cs │ │ └── PassportNumber.cs │ └── Passenger.Api/ │ ├── Passenger.Api.csproj │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── appsettings.Development.json │ ├── appsettings.docker.json │ ├── appsettings.json │ └── appsettings.test.json └── tests/ ├── IntegrationTest/ │ ├── Fakes/ │ │ ├── FakeCompleteRegisterPassengerCommand.cs │ │ └── FakeCompleteRegisterPassengerMongoCommand.cs │ ├── Integration.Test.csproj │ ├── Passenger/ │ │ └── Features/ │ │ ├── CompleteRegisterPassengerTests.cs │ │ └── GetPassengerByIdTests.cs │ ├── PassengerIntegrationTestBase.cs │ └── xunit.runner.json ├── PerformanceTest/ │ ├── .openapi-generator/ │ │ ├── FILES │ │ └── VERSION │ ├── .openapi-generator-ignore │ ├── README.md │ └── script.js └── tests.sln