Пример #1
0
        public void DeleteGarage(Guid id)
        {
            var garage = _garageRepository.GetById(id);
            var cars   = _carRepository.GetAll().Where(x => x.GarageId == id).ToList();

            foreach (var car in cars)
            {
                car.GarageId = Guid.Empty;
            }

            _garageRepository.Delete(garage);
            _memoryCache.Remove(_allGaragesKey);
        }
Пример #2
0
        public async Task <bool> Handle(BookParkingCommand request, CancellationToken cancellationToken)
        {
            var garage = await _garageRepository.GetById(request.GarageId);

            if (garage == null)
            {
                _logger?.LogWarning($"Garage {request.GarageId} not found.");
                return(true);
            }

            var parkingPeriod = new ParkingPeriod(
                new Car()
            {
                LicensePlate = request.LicensePlate
            },
                request.From,
                request.To);

            var parkingSpot = garage.BookParking(parkingPeriod);

            if (parkingSpot == null)
            {
                await _bus.RaiseEvent(new ParkingAlreadyTaken(
                                          request.GarageId,
                                          request.LicensePlate,
                                          request.From,
                                          request.To), _bookingReslutTopicKey);

                return(true);
            }

            await _bus.RaiseEvent(new ParkingBooked(
                                      request.GarageId,
                                      request.LicensePlate,
                                      request.From,
                                      request.To,
                                      parkingSpot.Reference), _bookingReslutTopicKey);

            return(true);
        }